我有 3 个弹性节点,如何将三个节点与始终相同的主节点聚集在一起,我没有找到任何关于指定发现和主节点的新弹性 7 方式的好文档:
discovery.seed_hosts: [ ]
cluster.initial_master_nodes: []
Run Code Online (Sandbox Code Playgroud)
例如我有节点a, b, c,我希望节点a掌握应该是什么discovery.seed_hosts以及cluster.initial_master_nodes主节点和子节点
更新
使用 Daniel 回答,并检查端口是否打开并且节点具有相同的集群名称,其他节点没有加入集群,是否需要任何额外的配置?
更新 2
看起来节点找到了彼此,但由于某种原因不能通过选举来选择主节点:
尚未发现或选举主节点,选举需要 2 个具有 id 的节点 [wOZEfOs9TvqGWIHHcKXtkQ, Cs0xaF-BSBGMGB8a-swznA]
解决方案
删除所有节点的文件夹数据启动一个节点,然后添加其他节点,第一个节点(作为主节点)作为种子主机。
Elasticsearch 允许您指定节点的角色。一个节点(Elasticsearch 的一个实例)可以作为协调节点、主节点、voting_only 节点、数据节点、摄取节点或机器学习节点。
对于主节点,您只能配置哪些节点可能成为(活动)主节点,但您不能指定所谓的主节点中的哪一个将成为活动主节点。
唯一的例外是当您只配置一个符合主节点的节点时,显然只有这个节点可以成为活动主节点。但请注意,为了获得真正的高可用性,您需要至少拥有 3 个符合主节点条件的节点(这可确保即使丢失一个符合主节点条件的节点,您的集群仍能 100% 运行)。
因此 Elastic 始终建议将集群中的 3 或 5 个节点配置为符合 master 条件的节点。您可以通过node.masterElasticsearch.yml 文件中的属性配置该角色。将其设置为true(默认)允许该节点成为主节点,同时false将确保该节点永远不会成为主节点,也不会参与主节点选举。
在集群(符合主节点的)节点的生命周期内,可能会添加和删除节点。Elasticsearch 会自动管理您的集群和主节点选举过程,最终目标是防止split brain发生这种情况,这意味着您最终会拥有 2 个同名但具有独立主节点的集群。为了防止在第一次启动集群(引导集群)时发生这种情况,Elastic 要求您cluster.initial_master_nodes使用最初将用作主合格节点的节点的名称配置该属性。此属性仅需要在符合主节点资格的节点上配置,并且仅在集群第一次启动时才会考虑该设置。作为您在名称中输入的值node.name 符合主节点的节点的属性。
该discovery.seed_hosts属性支持发现过程,即启用新节点与现有集群建立通信并最终在cluster.name匹配时加入它。您应该使用一组主机名(不是节点名!)配置它,您希望属于同一集群的其他 Elasticsearch 实例在其上运行。您不需要添加集群中可能拥有的 100 个节点的所有 100 个主机名。列出那里最稳定的节点名称的主机名就足够了。由于主(符合条件)节点应该是非常稳定的节点,因此 Elastic 建议将所有符合主条件的节点(通常为 3 个)的主机放在那里。每当您启动/重新启动节点时,它都会经历此发现过程。
结论
对于由 3 个节点组成的集群,您可以将所有节点配置为符合主节点的节点,并在cluster.initial_master_nodes设置中列出 3 个节点名称。您还可以将所有 3 个主机名也放在discovery.seed_hosts设置中以支持发现过程。
Elasticsearch 参考中的有用信息:
| 归档时间: |
|
| 查看次数: |
6435 次 |
| 最近记录: |