跳到主要内容
跳到主要内容

集群发现

概述

ClickHouse 的集群发现功能通过允许节点自动发现并注册自己,而不需要在配置文件中显式定义,从而简化了集群配置。在需要手动定义每个节点变得繁琐的情况下,这尤其有利。

备注

集群发现是一个实验性功能,未来版本中可能会更改或删除。 要启用此功能,请在配置文件中包含 allow_experimental_cluster_discovery 设置:

远程服务器配置

传统手动配置

传统上,在 ClickHouse 中,集群中的每个分片和副本都需要在配置中手动指定:

使用集群发现

通过集群发现,不需要显式定义每个节点,只需在 ZooKeeper 中指定一个路径。所有在此路径下注册的节点将被自动发现并添加到集群中。

如果您想为特定节点指定分片编号,可以在 <discovery> 部分中包含 <shard> 标签:

对于 node1node2:

对于 node3node4:

观察者模式

在观察者模式中配置的节点不会将自己注册为副本。 它们仅观察并发现集群中其他活动副本而不主动参与。 要启用观察者模式,请在 <discovery> 部分中包含 <observer/> 标签:

用例和限制

随着节点从指定的 ZooKeeper 路径中添加或移除,它们将被自动发现或从集群中移除,而无需进行配置更改或服务器重启。

但是,变更仅影响集群配置,不影响数据或现有的数据库和表。

考虑以下示例,其中集群由 3 个节点组成:

然后,我们向集群添加一个新节点,在配置文件的 remote_servers 部分中以相同的条目启动新节点:

第四个节点正在参与集群,但 event_table 表仍然仅存在于前三个节点上:

如果您需要在所有节点上复制表,可以使用 Replicated 数据库引擎替代集群发现。