Elasticsearch 集群发现配置全解析
1. Elasticsearch 分布式环境概述
Elasticsearch 专为分布式环境设计,这是它与其他开源搜索和分析解决方案的主要区别。在分布式环境中,Elasticsearch 易于设置,无需额外软件。默认情况下,具有相同cluster.name设置且可通过多播请求相互通信的节点会自动形成集群,这使得同一网络中可存在多个独立集群。
2. 发现模块实现方式
发现模块有多种实现方式,下面详细介绍。
2.1 Zen 发现
Zen 发现是 Elasticsearch 默认的发现机制。默认配置下,它使用多播来查找其他节点,这种方式非常方便,只需启动一个新的 Elasticsearch 节点,若集群名称相同且能被其他节点看到,该节点就会加入集群。此方法适用于开发阶段,无需过多配置,但不建议在生产环境使用。原因如下:
- 仅依赖集群名称易导致节点意外加入等问题。
- 多播可能因各种原因不可用,或者你不想使用。
- 大型集群中,多播发现会产生过多不必要的流量。
为解决上述问题,Zen 发现支持单播模式。使用单播时,不在集群中的节点会向配置中指定的所有地址发送 ping 请求,告知这些节点自己准备加入集群,可加入现有集群或形成新集群。初始连接仅针对指定的主机列表,且节点仍需与其他节点有相同的集群名称。
若想了解多播和单播 ping 方法的区别,可参考: Multi