更新时间:2022-12-13 GMT+08:00

ClickHouse集群配置说明

背景介绍

ClickHouse通过多分片多副本的部署架构实现了集群的高可用,每个集群定义多个分片,每个分片具有2个或2个以上副本。当某节点故障时,分片内其他主机节点上的副本可替代工作,保证服务能正常运行,提高集群的稳定性。

本章节仅适用于MRS 3.1.0版本。

集群配置

  1. 登录集群Manager页面,选择“集群 > 服务 > ClickHouse > 配置 > 全部配置”。
  2. 在“clickhouse-metrika-customize”参数中添加表1中自定义配置项。

    表1 自定义参数

    参数

    clickhouse_remote_servers.example_cluster.shard[1].replica[1].host

    host1.9bf17e66-e7ed-4f21-9dfc-34575f955ae6.com

    clickhouse_remote_servers.example_cluster.shard[1].replica[1].port

    9000

    clickhouse_remote_servers.example_cluster.shard[1].replica[2].host

    host2.9bf17e66-e7ed-4f21-9dfc-34575f955ae6.com

    clickhouse_remote_servers.example_cluster.shard[1].replica[2].port

    9000

    clickhouse_remote_servers.example_cluster.shard[1].internal_replication

    true

    clickhouse_remote_servers.example_cluster.shard[2].replica[1].host

    host3.9bf17e66-e7ed-4f21-9dfc-34575f955ae6.com

    clickhouse_remote_servers.example_cluster.shard[2].replica[1].port

    9000

    clickhouse_remote_servers.example_cluster.shard[2].replica[2].host

    host4.9bf17e66-e7ed-4f21-9dfc-34575f955ae6.com

    clickhouse_remote_servers.example_cluster.shard[2].replica[2].port

    9000

    clickhouse_remote_servers.example_cluster.shard[2].internal_replication

    true

  3. 单击“保存”,保存配置。

上述集群架构如下图所示:

配置参数说明如下:

  • default_cluster标签
    • default_cluster表示当前集群的名称。
    • 当前集群有两个分片shard,每个shard下面有两个副本replica,每个副本replica对应了一个ClickHouse实例节点。
    • internal_replication表示副本间是否为内部复制,当通过集群向分片插入数据时会起作用。

      默认配置为true,表示只向其中的一个副本写入数据(副本间通过复制表来完成同步,能保证数据的一致性)。

      如果配置为false(不建议配置),表示向该分片的所有副本中写入相同的数据(副本间数据一致性不强,无法保证完全同步)。

  • macros标签

    当前实例节点所在的分片和副本编号,可以用于区别不同的副本。

    例如,上述配置对应host3节点实例,该实例所在分片编号shard为2,副本编号replica为1。

本章节详细描述了分片和副本信息的配置说明,具体ClickHouse集群副本之间如何进行数据同步,详见副本机制详细说明。

副本机制

ClickHouse利用ZooKeeper,通过ReplicatedMergeTree引擎(Replicated 系列引擎)实现了副本机制。副本机制是多主架构,可以将INSERT语句发送给任意一个副本,分片内其余副本会进行数据的异步复制。

下图中的Node1和Node2对应为集群配置中的host1和host2主机节点。

ClickHouse集群创建成功后,默认会创建3个Zookeeper节点,ZooKeeper中存储了ClickHouse的表在复制过程中的元数据信息。

ZooKeeper节点信息可以参考config.xml文件内容,具体路径在${BIGDATA_HOME}/FusionInsight_ClickHouse_版本号/x_x_clickhouse实例名/etc”目录下。

<yandex>
  ...
  <zookeeper>
    <node index="1">
      <host>node-master1lrgj.9bf17e66-e7ed-4f21-9dfc-34575f955ae6.com</host>
      <port>2181</port>
    </node>
    <node index="2">
      <port>2181</port>
      <host>node-master2vocd.9bf17e66-e7ed-4f21-9dfc-34575f955ae6.com</host>
    </node>
    <node index="3">
      <host>node-master3xwmu.9bf17e66-e7ed-4f21-9dfc-34575f955ae6.com</host>
      <port>2181</port>
    </node>
  </zookeeper>
  ...

集群配置完成后,具体后续怎么使用可以参考ClickHouse表创建章节描述。