更新时间:2025-12-10 GMT+08:00
分享

配置切换至ClickHouseKeeper

本章节指导用户将当前ClickHouse集群从使用ZooKeeper更换成使用ClickHouseKeeper。

对系统的影响

该操作过程中需要短暂停止ZooKeeper组件。

组件停止期间将无法对外提供服务,可能会影响集群的上层业务正常运行,请在业务空闲期或确认操作无影响后再执行本操作。

操作步骤

  1. 登录ZooKeeper客户节点,进入客户端安装目录,配置环境变量:

    cd /opt/client

    source bigdata_env

  2. 如果当前集群已启用Kerberos认证,执行以下命令认证当前用户,具体请参见角色管理配置拥有对应权限的角色,参考创建用户为用户绑定对应角色。如果当前集群未启用Kerberos认证,则无需执行此命令。

    kinit MRS 集群用户

    需要使用具有ZooKeeper服务管理员权限的用户。

    例如,kinit zookeeperuser

  3. 执行如下命令,连接ZooKeeper:

    zkCli.sh -server <zookeeper安装节点ip>:<port>

    例如:zkCli.sh -server node-master1DGhZ:2181

  4. 执行如下命令设置ZooKeeper的“/clickhouse”目录的ACL权限为全体可读写:

    setAcl -R /clickhouse world:anyone:cdrwa

  1. 触发ZooKeeper生成最新的快照文件:

    1. 查看ZooKeeper服务的Leader实例IP。

      登录Manager页面,选择“集群 > 服务 > ZooKeeper”,在ZooKeeper概览页面的“基本信息”中记录“Leader所在的主机”后的名称。单击“实例”,查看Leader所在的主机的节点IP。

    2. 登录Leader实例节点,进入“/srv/BigData/zookeeper/version-2/”目录,并记录该目录下的文件数。

    3. 进入ZooKeeper服务“概览”页面,单击右上角的“停止服务”,根据弹窗提示停止ZooKeeper服务。

      组件停止期间将无法对外提供服务,可能会影响集群的上层业务正常运行,请在业务空闲期或确认操作无影响后再执行本操作。

    4. 在ZooKeeper服务页面,单击“实例”,勾选Leader实例,选择“启动实例”,启动Leader实例。
    5. 勾选Leader实例,选择“更多 > 停止实例”,停止Leader实例。
    6. 进入ZooKeeper服务“概览”页面,单击右上角的“启动服务”,重启ZooKeeper服务。
    7. 登录Leader实例节点,查看是否生成最新的快照文件:

      cd /srv/BigData/zookeeper/version-2/

      对比5.b中记录的文件数,查看是否有生成最新的快照文件,如下图所示:

  2. (可选)如果ClickHouse集群中没有安装ClickHouseKeeper实例,需要安装ClickHouseKeeper实例,具体请参考的“添加角色实例”章节。
  3. 使用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

  4. 重启ClickHouseKeeper实例,加载迁移的元数据。

    登录Manager页面,选择“集群 > 服务 > ClickHouse > 实例”,勾选所有的ClickHouseKeeper实例,选择“更多 > 重启实例”,重启所有的ClickHouseKeeper实例。

  5. 在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”进行确认。

  6. 切换ClickHouse使用状态为ClickHouseKeeper。

    sh clickhouse_transfer_zk2keeper_metadata_check.sh change_use_keeper_state true

  7. 登录Manager页面,选择“集群 > 服务 > ClickHouse”,进入ClickHouse服务概览页面,在右上角选择“更多 > 同步配置”,在弹窗中单击“确定”,同步ClickHouse配置。
  8. 选择“集群 > 服务 > ClickHouse > 实例”,勾选所有的ClickHouseServer和ClickHouseBanlancer实例,选择“更多 > 重启实例”,重启所有的ClickHouseServer和ClickHouseBanlancer实例。
  9. 验证已经切换到ClickHouseKeeper。

    进入ZooKeeper服务“概览”页面,单击右上角的“停止服务”,根据弹窗提示停止ZooKeeper服务。停止ZooKeeper服务完成后查看ClickHouse服务正常,则表示切换到ClickHouseKeeper。

回退方法

如果执行配置切换至ClickHouseKeeper过程中出现了问题且短时间无法解决,可执行如下命令将配置切换回ZooKeeper,ClickHouse服务将继续使用ZooKeeper服务。

  1. 使用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

  2. 登录Manager页面,选择“集群 > 服务 > ClickHouse”,在右上角选择“更多 > 同步配置”,在弹窗中单击“确定”,同步ClickHouse配置。
  3. 单击“实例”,勾选所有的ClickHouseServer和ClickHouseBanlancer实例,选择“更多 > 重启实例”,重启所有的ClickHouseServer和ClickHouseBanlancer实例。
  4. 勾选所有的ClickHouseKeeper实例,选择“更多 > 停止实例”,停止ClickHouseKeeper实例。
  5. 检查ClickHouse服务无异常后,选择“更多 > 删除实例”,删除ClickHouseKeeper实例。

相关文档