只需要配置相同的cluste.name就能将节点加入同一集群,这是通过ES的发现机制来实现的。 ES目前主要推荐的自动发现机制,有如下几种:
- Azure classic discovery 插件方式,多播
- EC2 discovery 插件方式,多播
- Google Compute Engine (GCE) discovery 插件方式,多播
- Zen discovery 默认实现,多播/单播
其中,Zen Discovery 是 ES 默认内建发现机制。它提供单播和多播的发现方式。
多播
也叫组播,指一个节点可以向多台机器发送请求。ES 不建议生产环境使用这种方式,对于一个大规模的集群,组播会产生大量不必要的通信。
discovery.zen.ping.multicast.address:(用于通信的网络接口)
discovery.zen.ping.multicast.port:(通信端口)
discovery.zen.ping.multicast.group:(组播消息发送的地址)
discovery.zen.ping.multicast.buffer_size:(缓冲区大小)
discovery.zen.ping.multicast.enable:(是否开启组播,默认为true,使用单播,应该关闭组播,设为false)
复制代码
单播
一个节点加入一个现有集群,或者组件一个新的集群时,发送请求到一台主机。当一个节点联系到单播列表中的成员时,它就会得到整个集群所有节点的状态,然后它会联系 master 节点,并加入集群。
discovery.zen.ping.unicast.hosts:(集群初始节点列表)
discovery.zen.ping.unicast.concurrent_connections:(单播发现使用的最大并发链接数,默认为10)
复制代码
脑分裂(split-brain)
假设拥有一个10个节点组成的集群,有3个节点从集群中 断开连接,由于发现机制,这3个节点可能会组成一个新的集群,这样就产生了两个同名的集群,这就是脑分裂(split-brain)。 为了避免这种分裂的出现,可以设置以下属性:
discovery.zen.minium_master_nodes:6
复制代码
定义组件集群至少需要相互连接的候选主节点数量。这时断开的3个节点由于小于6,不能组成新的集群。