Elasticsearch内嵌自动发现功能,主要提供了4种可供选择的发现机制
其中一种是默认实现,其他都是通过插件实现的,具体如下所示
- Azure discovery插件方式:多播模式
- EC2 discovery插件方式:多播模式
- Google Compute Engine(GCE)discovery插件方式:多播模式
- Zen Discovery,默认实现方式,支持多播模式和单播模式
Zen Discovery是Elasticsearch内置的默认发现模块
发现模块 用于 发现集群中的节点 及 选举主节点(又称master节点)
Zen Discovery 提供 单播模式 和 基于文件的发现,并且可以扩展为 通过插件 支持其他形式的发现机制
多播模式和单播模式的主要配置参数如下所示:
- discovery.zen.ping.multicast.enabled 表示 关闭多播模式的自动发现机制,主要是为了防止 其他机器上的节点自动连入
- discovery.zen.fd.ping_timeout 和 discovery.zen.ping.timeout 表示 设置了 节点与节点之间 连接ping命令 执行的 超时时长
- discovery.zen.minimum_master_nodes 表示 集群中 选举主节点时 至少需要 有多少个节点参与
- discovery.zen.ping.unicast.hosts 表示 在单播模式下,节点应该自动发现 哪些节点列表
- action.auto_create_index:false 表示 关闭 自动创建索引
Elasticsearch支持多播模式和单播模式自动两种节点发现机制,不过多播模式已经不被大多数操作系统所支持,加之其安全性不高,所以一般会主动关闭多播模式
关闭多播模式的配置如下所示:
discovery.zen.ping.multicast.enabled: false
在Elasticsearch中,发现机制 默认 被配置为 使用单播模式,以防止节点无意中加入集群
Elasticsearch 支持 同一个主机 启动 多个节点,因此 只有在 同一台机器上 运行的节点 才会 自动组成集群
当 集群的节点 运行在 不同的机器上时,在单播模式下,需要为Elasticsearch配置一些 它应该去尝试 连接的 节点列表,配置方式如下所示:
因此,单播模式下的配置信息汇总如下:
在多播模式下,仅需在 每个节点 配置好 集群名称 和 节点名称 即可
互相通信的节点 会根据 Elasticsearch自定义的服务发现协议,按照 多播的方式 寻找 网络上 配置在 同样集群内的节点



