集群发现
概述
ClickHouse 的集群发现功能通过允许节点自动发现并注册自己,而不需要在配置文件中显式定义,从而简化了集群配置。在需要手动定义每个节点变得繁琐的情况下,这尤其有利。
备注
集群发现是一个实验性功能,未来版本中可能会更改或删除。
要启用此功能,请在配置文件中包含 allow_experimental_cluster_discovery
设置:
远程服务器配置
传统手动配置
传统上,在 ClickHouse 中,集群中的每个分片和副本都需要在配置中手动指定:
使用集群发现
通过集群发现,不需要显式定义每个节点,只需在 ZooKeeper 中指定一个路径。所有在此路径下注册的节点将被自动发现并添加到集群中。
如果您想为特定节点指定分片编号,可以在 <discovery>
部分中包含 <shard>
标签:
对于 node1
和 node2
:
对于 node3
和 node4
:
观察者模式
在观察者模式中配置的节点不会将自己注册为副本。
它们仅观察并发现集群中其他活动副本而不主动参与。
要启用观察者模式,请在 <discovery>
部分中包含 <observer/>
标签:
用例和限制
随着节点从指定的 ZooKeeper 路径中添加或移除,它们将被自动发现或从集群中移除,而无需进行配置更改或服务器重启。
但是,变更仅影响集群配置,不影响数据或现有的数据库和表。
考虑以下示例,其中集群由 3 个节点组成:
然后,我们向集群添加一个新节点,在配置文件的 remote_servers
部分中以相同的条目启动新节点:
第四个节点正在参与集群,但 event_table
表仍然仅存在于前三个节点上:
如果您需要在所有节点上复制表,可以使用 Replicated 数据库引擎替代集群发现。