
# ClickHouse集群配置说明
#### 背景介绍
ClickHouse通过多分片多副本的部署架构实现了集群的高可用，每个集群定义多个分片，每个分片具有2个或2个以上副本。当某节点故障时，分片内其他主机节点上的副本可替代工作，保证服务能正常运行，提高集群的稳定性。
![](https://support.huaweicloud.com/cmpntguide-mrs/public_sys-resources/note_3.0-zh-cn.png)
本章节仅适用于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. 单击"保存"，保存配置。
 
上述集群架构如下图所示：
![](https://support.huaweicloud.com/cmpntguide-mrs/zh-cn_image_0000001146901635.png)
配置参数说明如下：
- 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主机节点。
![](https://support.huaweicloud.com/cmpntguide-mrs/zh-cn_image_0000001100103396.png)
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表创建](https://support.huaweicloud.com/cmpntguide-mrs/mrs_01_2398.html)章节描述。
