1,ES 为什么要实现集群
1, 随着业务量的增大,索引逐渐增大,如果在单台ES 服务器上,由于索引所占内存过大,肯定会影响性能
2, 集群的还有一个好处就是可与备份,如果只有一个服务,挂了,整个ES 服务就挂了
2,ES 如何实现集群
在ES 实现集群中,有一个很重要的技术就是分片技术shards。
一个索引可以分成多个分片,默认是5片。并且每个分片可以拥有多个副本replicas
解析:因为是3台机器集群
1,一个索引被分成了3个分片
2,每个分片有三台副本
3,每台服务,通过分片 和 副本 能够组成一个完整的索引,也就意味着,不能把同一个分片,和他的副本放在一块,如果这台机器宕机,就会丢失信息了
4,副本的作用:一是提高系统的容错性,当某个节点某个分片损坏或丢失时可以从副本中恢复。二是提高es的查询效率,es会自动对搜索请求进行负载均衡
3,ES 集群环境搭建
vi elasticsearch.yml
cluster.name: myes ###保证三台服务器节点集群名称相同
node.name: node-1 #### 每个节点名称不一样 其他两台为node-2 ,node-3
network.host: 192.168.178.110 #### 实际服务器ip地址
discovery.zen.ping.unicast.hosts: ["192.168.178.110", "192.168.178.118","192.168.178.119"]##多个服务集群ip
discovery.zen.minimum_master_nodes: 1
关闭防火墙 systemctl stop firewalld.service
默认底层开启9300 集群
验证集群效果
http://192.168.178.110:9200/_cat/nodes?pretty
注意克隆data文件会导致数据不同步
报该错误解决办法
failed to send join request to master
因为克隆导致data文件也克隆呢,直接清除每台服务器data文件