引导集群
编辑引导集群
编辑首次启动 Elasticsearch 集群需要在集群中一个或多个符合主节点条件的节点上显式定义初始的符合主节点条件的节点。这被称为集群引导。这仅在集群首次启动时需要。正在加入运行中集群的新启动节点从集群选出的主节点获取此信息。
符合主节点条件的初始节点集在cluster.initial_master_nodes
设置中定义。这应设置为一个列表,其中包含每个符合主节点条件的节点的以下项之一
- 节点的节点名称。
- 如果未设置
node.name
,则为节点的主机名,因为node.name
默认为节点的主机名。您必须使用完全限定的主机名或裸主机名,具体取决于您的系统配置。 - 如果无法使用节点的
node.name
,则使用节点的传输发布地址的 IP 地址。这通常是network.host
解析到的 IP 地址,但是可以覆盖此地址。 - 如果无法使用节点的
node.name
且有多个节点共享单个 IP 地址,则使用节点的发布地址的 IP 地址和端口,格式为IP:PORT
。
不要在不符合主节点条件的节点上设置 cluster.initial_master_nodes
。
集群形成后,从每个节点的配置中删除 cluster.initial_master_nodes
设置,并且永远不要再次为该集群设置它。不要在加入现有集群的节点上配置此设置。不要在重新启动的节点上配置此设置。在执行全集群重启时不要配置此设置。
如果您在集群形成后保留 cluster.initial_master_nodes
,则存在未来配置错误可能导致在现有集群旁边引导新集群的风险。如果没有丢失数据,可能无法从这种情况中恢复。
创建新集群的最简单方法是选择一个符合主节点条件的节点,该节点将引导自身成为单节点集群,然后所有其他节点将加入该集群。在其他符合主节点条件的节点加入集群之前,此简单方法不能容忍故障。例如,如果您有一个符合主节点条件的节点,其节点名称为 master-a
,则将其配置如下(从所有其他节点的配置中省略 cluster.initial_master_nodes
)
cluster.initial_master_nodes: master-a
对于容错集群引导,请使用所有符合主节点条件的节点。例如,如果您的集群有 3 个符合主节点条件的节点,其节点名称为 master-a
、master-b
和 master-c
,则将它们全部配置如下
cluster.initial_master_nodes: - master-a - master-b - master-c
您必须在设置了 cluster.initial_master_nodes
的每个节点上将 cluster.initial_master_nodes
设置为相同的节点列表,以确保在引导期间仅形成一个集群。如果设置了 cluster.initial_master_nodes
的节点之间的设置不同,则可能会引导多个集群。通常无法在不丢失数据的情况下从这种情况中恢复。
选择集群名称
编辑cluster.name
设置使您可以创建彼此分离的多个集群。节点在首次相互连接时会验证它们是否对集群名称达成一致,并且 Elasticsearch 仅会从具有相同集群名称的节点形成集群。集群名称的默认值为 elasticsearch
,但建议将其更改以反映集群的逻辑名称。
开发模式下的自动引导
编辑默认情况下,每个节点在首次启动时都会自动引导自身成为单节点集群。如果配置了以下任何设置,则不会进行自动引导
-
discovery.seed_providers
-
discovery.seed_hosts
-
cluster.initial_master_nodes
要将新节点添加到现有集群中,请配置 discovery.seed_hosts
或其他相关的发现设置,以便新节点可以发现集群中现有的符合主节点条件的节点。要引导新的多节点集群,请按照关于集群引导的部分中的描述配置 cluster.initial_master_nodes
以及 discovery.seed_hosts
或其他相关的发现设置。