集群引导
编辑集群引导编辑
首次启动 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
,那么将来可能会出现错误配置,导致在现有集群旁边引导新的集群。可能无法从这种情况中恢复,而不会丢失数据。
创建新集群的最简单方法是选择一个主节点,它将自身引导到单节点集群中,然后所有其他节点将加入该集群。这种简单的方法在其他主节点加入集群之前,对故障没有弹性。例如,如果您有一个主节点,其节点名称 为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.name
设置使您能够创建彼此分离的多个集群。节点在首次相互连接时会验证它们是否同意其集群名称,Elasticsearch 仅会从所有具有相同集群名称的节点中形成集群。集群名称的默认值为elasticsearch
,但建议将其更改为反映集群的逻辑名称。