clickhouse优化使用clickhouse-keeper替代zookeeper

ClickHouse Keeper 是 ZooKeeper 的替代品,与 ZooKeeper 不同,ClickHouse Keeper 是用 C++ 编写的,并使用 RAFT 算法实现,该算法允许对读写具有线性化能力。
clikhouse-keeper目的在于替换zookeeper,使用clickhouse后,服务器性能,提升了一大截,只需要在配置zookeeper的地方,改成clickhouse-keeper即可。
ClickHouse keeper相对zookeeper来说性能更好,维护更方便。
功能设计
clickhouse优化使用clickhouse-keeper替代zookeeper_第1张图片

使用clickhouse-keeper代替 zookeeper的步骤:

1: 部署clickhouse-keeper

部署clickhouse-keeper同部署clickhouse

1.1- 设置通信地址,以便对外通信

a. 检查端口是否被占用

假设keeper的端口是9181,与server通信接口为9444

netstat -anp | grep 9181 
netstat -anp | grep 9444

b. 设置 clickhouse-keeper的地址,每个节点内容一致



    
    0.0.0.0
    
        9181
        1
        /var/lib/clickhouse/keeper/log
        /var/lib/clickhouse/keeper/snapshots

        
            30000
            60000
            error
            false
        

        
            
                1
                node01
                9444
            
            
            
                2
                node02
                9444
            
            
                3
                node03
                9444
            
           
        
    


c. 设置clickhouse-keeper的server_id 和clickhouse-server通信端口 9444

每个节点的server_id要确保唯一,不能和其他节点重复 , keeper_server中的server_id是要和配置raft协议集群时命名的一致。

例如:

在 clickhouse-node01上的配置, 1

在clickhouse_node02上的配置, 2

2:备份 clickhouse-server的配置文件和数据,以及zookeeper的元数据。(预防升级失败需要回滚)

b. zookeeper的数据: 在zoo.cfg,数据目录。

dataDir=/data/zookeeper/zkdata (存储snap数据)
dataLogDir=/data/zookeeper/zklog (存储 transation命令)

4: 迁移zk的元数据到 clickhouse-keeper

a- 停止所有的zk 节点。

​ 在所有的zk节点上 执行

zkServer.sh stop

b- 建议 启停zk的leader,以便强制 复制一份 一致性的快照。

​ 查找leader节点, 在所有的节点上执行

zkServer.sh stop

在leader节点上 启停zookeeper

zkServer.sh start
zkServer.sh stop

c- 运行 clickhouse-keeper-converter , 生成snapshot

clickhouse-keeper-converter --zookeeper-logs-dir /data/zookeeper/zklog/version-2 --zookeeper-snapshots-dir /data/zookeeper/zkdata/version-2 --output-dir /var/lib/clickhouse/keeper/snapshots
chown -R clickhouse:clickhouse /var/lib/clickhouse

同步数据

scp -r /var/lib/clickhouse/keeper root@clickhouse-keeper:/var/lib/clickhouse

e- 单独启动clickhouse-keeper

如果server和keeper是安装在同一个节点,这步可以省略

sudo -su clickhouse clickhouse-keeper --config  /etc/clickhouse-server/keeper.xml --daemon

测试连接

zkCli.sh -server localhost:9181

5- 重启 clickhouse

/usr/bin/clickhouse-server stop
/usr/bin/clickhouse-server start 

6- 验证是否clickhouse-keeper是否正常运行

 echo ruok | nc localhost 9181

期望看到:imok

7- 验证clickhouse是否正常运行

连接客户端,创建一张分布式表,查看数据是否能正常操作分布式表(CRUD)。

 select * from system.clusters;

8- 通过nginx接入clickhouse

upstream clickhouse{
    server node1:8123 weight=1;
    server node2:8123 weight=1;
    server node3:8123 weight=1;
}
server{
    listen 8123;
    location /{
    proxy_pass http://clickhouse;
    }
}

你可能感兴趣的:(clickhouse,clickhouse,zookeeper,debian)