配置切换至ClickHouseKeeper
本章节指导用户将当前ClickHouse集群从使用ZooKeeper更换成使用ClickHouseKeeper。
对系统的影响
该操作过程中需要短暂停止ZooKeeper组件。
组件停止期间将无法对外提供服务,可能会影响集群的上层业务正常运行,请在业务空闲期或确认操作无影响后再执行本操作。
操作步骤
- 登录ZooKeeper客户节点,进入客户端安装目录,配置环境变量:
cd /opt/client
source bigdata_env
- 如果当前集群已启用Kerberos认证,执行以下命令认证当前用户,具体请参见角色管理配置拥有对应权限的角色,参考创建用户为用户绑定对应角色。如果当前集群未启用Kerberos认证,则无需执行此命令。
kinit MRS 集群用户
需要使用具有ZooKeeper服务管理员权限的用户。
例如,kinit zookeeperuser。
- 执行如下命令,连接ZooKeeper:
zkCli.sh -server <zookeeper安装节点ip>:<port>
例如:zkCli.sh -server node-master1DGhZ:2181
- 执行如下命令设置ZooKeeper的“/clickhouse”目录的ACL权限为全体可读写:
setAcl -R /clickhouse world:anyone:cdrwa
- 触发ZooKeeper生成最新的快照文件:
- 查看ZooKeeper服务的Leader实例IP。
登录Manager页面,选择“集群 > 服务 > ZooKeeper”,在ZooKeeper概览页面的“基本信息”中记录“Leader所在的主机”后的名称。单击“实例”,查看Leader所在的主机的节点IP。
- 登录Leader实例节点,进入“/srv/BigData/zookeeper/version-2/”目录,并记录该目录下的文件数。
- 进入ZooKeeper服务“概览”页面,单击右上角的“停止服务”,根据弹窗提示停止ZooKeeper服务。
组件停止期间将无法对外提供服务,可能会影响集群的上层业务正常运行,请在业务空闲期或确认操作无影响后再执行本操作。
- 在ZooKeeper服务页面,单击“实例”,勾选Leader实例,选择“启动实例”,启动Leader实例。
- 勾选Leader实例,选择“更多 > 停止实例”,停止Leader实例。
- 进入ZooKeeper服务“概览”页面,单击右上角的“启动服务”,重启ZooKeeper服务。
- 登录Leader实例节点,查看是否生成最新的快照文件:
cd /srv/BigData/zookeeper/version-2/
对比5.b中记录的文件数,查看是否有生成最新的快照文件,如下图所示:

- 查看ZooKeeper服务的Leader实例IP。
- (可选)如果ClickHouse集群中没有安装ClickHouseKeeper实例,需要安装ClickHouseKeeper实例,具体请参考的“添加角色实例”章节。
- 使用root用户登录到任意一个ClickHouseServer节点,执行如下命令将ZooKeeper元数据转换成ClickHouseKeeper支持的格式:
su - omm
cd /opt/huawei/Bigdata/FusionInsight_ClickHouse_*/install/FusionInsight-ClickHouse-*-lts/clickhouse/sbin/
sh clickhouse_transfer_zkmedata_to_keeper.sh
- 重启ClickHouseKeeper实例,加载迁移的元数据。
登录Manager页面,选择“集群 > 服务 > ClickHouse > 实例”,勾选所有的ClickHouseKeeper实例,选择“更多 > 重启实例”,重启所有的ClickHouseKeeper实例。
- 在ClickHouseServer节点执行如下命令,进行数据一致性对比:
sh clickhouse_transfer_zk2keeper_metadata_check.sh 用户名 '密码' 端口
- 用户名和密码为ClickHouse服务的业务用户名和密码。
- 端口为ClickHouseServer的“https_port”(普通集群是http_port)端口(安全集群默认是21422,普通集群默认是21421),具体获取方法请参考ClickHouse客户端使用实践。
校验成功返回:
ClickHouse meta check successfully.
校验失败时,请查看当前目录下的日志文件“clickhouse_metadata_check_xxx.log”进行确认。
- 切换ClickHouse使用状态为ClickHouseKeeper。
sh clickhouse_transfer_zk2keeper_metadata_check.sh change_use_keeper_state true
- 登录Manager页面,选择“集群 > 服务 > ClickHouse”,进入ClickHouse服务概览页面,在右上角选择“更多 > 同步配置”,在弹窗中单击“确定”,同步ClickHouse配置。
- 选择“集群 > 服务 > ClickHouse > 实例”,勾选所有的ClickHouseServer和ClickHouseBanlancer实例,选择“更多 > 重启实例”,重启所有的ClickHouseServer和ClickHouseBanlancer实例。
- 验证已经切换到ClickHouseKeeper。
进入ZooKeeper服务“概览”页面,单击右上角的“停止服务”,根据弹窗提示停止ZooKeeper服务。停止ZooKeeper服务完成后查看ClickHouse服务正常,则表示切换到ClickHouseKeeper。
回退方法
如果执行配置切换至ClickHouseKeeper过程中出现了问题且短时间无法解决,可执行如下命令将配置切换回ZooKeeper,ClickHouse服务将继续使用ZooKeeper服务。
- 使用root用户登录到任意一个ClickHouseServer节点,执行以下语句进行回退:
su - omm
cd /opt/huawei/Bigdata/FusionInsight_ClickHouse_*/install/FusionInsight-ClickHouse-*-lts/clickhouse/sbin/
sh clickhouse_transfer_zk2keeper_metadata_check.sh change_use_keeper_state false
- 登录Manager页面,选择“集群 > 服务 > ClickHouse”,在右上角选择“更多 > 同步配置”,在弹窗中单击“确定”,同步ClickHouse配置。
- 单击“实例”,勾选所有的ClickHouseServer和ClickHouseBanlancer实例,选择“更多 > 重启实例”,重启所有的ClickHouseServer和ClickHouseBanlancer实例。
- 勾选所有的ClickHouseKeeper实例,选择“更多 > 停止实例”,停止ClickHouseKeeper实例。
- 检查ClickHouse服务无异常后,选择“更多 > 删除实例”,删除ClickHouseKeeper实例。
