搭建CK平台的时候,ZK是自维护环境; 现根据需要,统一迁移到云平台进行统一管控; 由于两边是不同的集群,无法通过脑裂的方式进行平滑迁移,更新ZK后,CK需要重启生效,无法像参数一样动态加载;(刚迁移的时候踩了坑,没重启,一直报错)

整理一下整个过程,供参考

一、CK停服

由于我部署了CK的守护进程,停服前需要先关闭守护进程,否则CK即使停服了也会被自动拉起;

这个守护进程是自己编写的,并不是Supervisor,因为Supervisor只能守护前台进程,无法监控后台进程;

整个CK集群都需要停服,如果节点比较多,可以通过Ansible统一停服;

clickhouse stop

二、ZK数据迁移

从老的ZK集群选取任一个节点进行迁移,follwer或者leader都可以; 将快照数据和日志数据都拷贝到新的ZK集群;

三、 更新CK中ZK配置信息

对所有的CK节点,将配置文件metric.xml文件中的ZK地址和端口更新为新的ZK地址;

sed -i  's/\(X.X.X.X\|X.X.X.X\|X.X.X.X\)/zk.jddb.com/' /export/data/clickhouse/metrika.xml_new
sed -i 's/2181/3678/' /export/data/clickhouse/metrika.xml_new

节点比较多的话,可以通过ansible批量更新

四、 启动CK服务

对所有CK节点启动服务,并开启守护进程;

clickhouse start

五、 验证

更新ZK后,集群是否可用? 通过命令验证一下即可;

create database   wang on cluster shwx_cluster;
drop database   wang on cluster shwx_cluster;

如果都执行成功即迁移完毕

更多推荐