集群引导

编辑

首次启动 Elasticsearch 集群需要在集群中一个或多个主节点候选节点上显式定义初始的主节点候选节点集。这被称为集群引导。这仅在集群首次启动时需要。新启动的加入正在运行的集群的节点会从集群选举产生的主节点获取此信息。

初始的主节点候选节点集在cluster.initial_master_nodes 设置中定义。这应该设置为一个列表,其中包含每个主节点候选节点的以下项目之一

  • 节点的节点名称
  • 如果未设置node.name,则为节点的主机名,因为node.name默认为节点的主机名。您必须使用完全限定域名或裸主机名取决于您的系统配置
  • 节点的传输发布地址的IP地址,如果无法使用节点的node.name。这通常是network.host解析到的IP地址,但可以覆盖
  • 节点的发布地址的IP地址和端口,格式为IP:PORT,如果无法使用节点的node.name并且有多个节点共享一个IP地址。

不要在非主节点候选节点上设置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-amaster-bmaster-c,则将它们全部配置如下

cluster.initial_master_nodes:
  - master-a
  - master-b
  - master-c

您必须在设置了它的每个节点上将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或其他相关的发现设置。