ES集群中索引可能由多个分片构成,并且每个分片可以拥有多个副本。通过将一个单独的索引分为多个分片,我们可以处理不能在一个单一的服务器上面运行的大型索引,简单的说就是索引的大小过大,导致效率问题。不能运行的原因可能是内存也可能是存储。由于每个分片可以有多个副本,通过将副本分配到多个服务器,可以提高查询的负载能力。默认情况下是一个索引5个主分片,每个主分片对应一个副分片。如果是单节点ES,可以用GET _cat/health查看ES集群健康值。显示为yello,因为副分片无法分配,副分片和主分片不能在同一机器上,如果该机器宕机,那么这个副分片就毫无意义。

  1. GET _cat/health
  2. 搭建ES集群3台机器

节点名称

IP地址

node-1

192.168.184.133

node-2

192.168.184.135

node-3

192.168.184.136

  1. 参考单机版安装:
  2. 修改3台机器的ES机器配置为相同,看看单个独立能不能起来,再修改为ES集群配置
  3. 如图启动成功
  4.  
  5. 3台节点搭建ES集群相关配置
  6. vim  elasticsearch.yml
  7. cluster.name: my-application  //该3个ES节点的集群名称必须相同
  8. node.name:node-1  //每个节点名称不能相同,另外两台分别为node-1 ,node-2
  9. discovery.zen.ping.unicast.hosts: ["192.168.184.133", "192.168.184.135","192.168.184.136"]   //将所有节点discovery.zen.ping.unicast.hosts的 []里面的地址修改为所有节点的IP,","除了逗号不要有空格
  10. discovery.zen.minimum_master_nodes: 2    //默认是1,3台节点建议修改为2,防止ES脑裂
  11. 如何防止elasticsearch的脑裂问题
  12. 查看集群效果
  13. http://192.168.184.133:9200/_cat/nodes?pretty
  14. 192.168.184.135   node-2是主节点
  15. 查看集群状态为green
  16. http://192.168.184.133:9200/_cat/health
  17. 把135停掉,下图显示133 node-1是主节点
  18. 把133听到,如图发送请求到136,显示请求失败
  19. 单机节点不能处理请求,因为设置了discovery.zen.minimum_master_nodes: 2,这样用复制分片来构建高可用性失效了,因为在每台机器上都存放着一个索引的完整数据,只不过有的是以副本的形式存在
  20. 重新启动133,135,显示133,135加入集群
  21. 如果discovery.zen.minimum_master_nodes设置为2了,两节点集群可以有效的避免脑裂,但是高可用就废了,如果3节点集群设置为2可以减少脑裂的可能性,又能提高ES集群的高可用性