配置文件位置和内容
/etc/clickhouse-server/config.d/metrika.xml
<yandex>
<zookeeper>
<node index="1">
<host>172.16.12.3</host>
<port>2181</port>
</node>
<node index="2">
<host>172.16.12.4</host>
<port>2181</port>
</node>
<node index="3">
<host>172.16.12.5</host>
<port>2181</port>
</node>
</zookeeper>
<remote_servers>
<clickhouse-prod-cluster>
<secret>foo</secret>
<shard>
<internal_replication>true</internal_replication>
<replica>
<host>172.16.12.2</host>
<port>9000</port>
</replica>
<replica>
<host>172.16.12.3</host>
<port>9000</port>
</replica>
</shard>
<shard>
<internal_replication>true</internal_replication>
<replica>
<host>172.16.12.4</host>
<port>9000</port>
</replica>
<replica>
<host>172.16.12.5</host>
<port>9000</port>
</replica>
</shard>
</clickhouse-prod-cluster>
</remote_servers>
</yandex>
这个配置文件 metrika.xml 是 ClickHouse 的一个配置文件,定义了与 ZooKeeper 的连接信息以及 ClickHouse 集群的设置。让我们逐步解析每个部分的含义。
ZooKeeper 配置
<zookeeper>
<node index="1">
<host>172.16.12.3</host>
<port>2181</port>
</node>
<node index="2">
<host>172.16.12.4</host>
<port>2181</port>
</node>
<node index="3">
<host>172.16.12.5</host>
<port>2181</port>
</node>
</zookeeper>
-
<zookeeper> 定义了 ClickHouse 与 ZooKeeper 集群的连接信息。ZooKeeper 在 ClickHouse 中用于协调分布式操作,特别是复制和分片管理。
-
<node> 每个
<node>元素定义了一个 ZooKeeper 节点的主机和端口。index属性:用来标识节点的索引。host和port:分别定义 ZooKeeper 节点的 IP 地址和端口号。
远程服务器配置
<remote_servers>
<clickhouse-prod-cluster>
<secret>foo</secret>
<shard>
<internal_replication>true</internal_replication>
<replica>
<host>172.16.12.2</host>
<port>9000</port>
</replica>
<replica>
<host>172.16.12.3</host>
<port>9000</port>
</replica>
</shard>
<shard>
<internal_replication>true</internal_replication>
<replica>
<host>172.16.12.4</host>
<port>9000</port>
</replica>
<replica>
<host>172.16.12.5</host>
<port>9000</port>
</replica>
</shard>
</clickhouse-prod-cluster>
</remote_servers>
shard配置解释
- <shard>块:
- 表示一个分片(shard)。一个分片是数据的一个逻辑部分,每个分片可以存储集群中数据的一部分。
- <internal_replication>true</internal_replication> :
- 表示内部复制。设置为
true时,ClickHouse 将自动管理分片之间的数据复制。也就是说,ClickHouse 将确保分片内的所有副本保持数据一致。
- <replica>块:
- 表示一个副本(replica)。每个分片可以有多个副本,用于数据的冗余和高可用性。
- <host>和<port> :
- 指定副本的主机和端口。每个副本在不同的主机上运行,以提供故障隔离和负载均衡。
shard配置具体含义
第一个分片
<shard>
<internal_replication>true</internal_replication>
<replica>
<host>172.16.12.2</host>
<port>9000</port>
</replica>
<replica>
<host>172.16.12.3</host>
<port>9000</port>
</replica>
</shard>
- 包含两个副本,分别位于主机
172.16.12.2和172.16.12.3,端口号均为9000。 - 内部复制开启,这意味着 ClickHouse 将自动确保这两个副本的数据保持一致。
第二个分片
<shard>
<internal_replication>true</internal_replication>
<replica>
<host>172.16.12.4</host>
<port>9000</port>
</replica>
<replica>
<host>172.16.12.5</host>
<port>9000</port>
</replica>
</shard>
- 包含两个副本,分别位于主机
172.16.12.4和172.16.12.5,端口号均为9000。 - 同样,内部复制开启,ClickHouse 将管理这两个副本的数据一致性。
集群架构总结
- 分片(Shards) :集群包含两个分片,每个分片存储集群中部分数据。
- 副本(Replicas) :每个分片有两个副本,用于数据冗余和高可用性。
- 内部复制(Internal Replication) :启用内部复制功能,确保每个分片的副本数据一致。
这种配置提供了以下优点:
- 高可用性:即使一个副本宕机,另一个副本仍然可以提供服务。
- 故障恢复:通过数据复制,可以在副本之间进行故障恢复。
- 负载均衡:查询可以在不同的副本之间分配,从而实现负载均衡。
这是一个典型的 ClickHouse 集群高可用配置,通过分片和副本的设计来保证数据的高可用性和查询性能。