• ES为什么要实现集群
    在单台ES服务器节点上,随着业务量的发展索引文件慢慢增多,会影响到效率和内存存储问题等。
    我们可以采用ES集群,将单个索引的分片到多个不同分布式物理机器上存储,从而可以实现高可用、容错性等
  • ES是如何解决高并发 ES是一个分布式全文检索框架,隐藏了复杂的处理机制,内部使用 分片机制、集群发现、分片负载均衡请求路由。
    Shards 分片:代表索引分片,es可以把一个完整的索引分成多个分片,这样的好处是可以把一个大的索引拆分成多个,分布到不同的节点上。构成分布式搜索。分片的数量只能在索引创建前指定,并且索引创建后不能更改。
    Replicas分片:代表索引副本,es可以设置多个索引的副本,副本的作用一是提高系统的容错性,当某个节点某个分片损坏或丢失时可以从副本中恢复。二是提高es的查询效率,es会自动对搜索请求进行负载均衡。
  • ES集群核心原理分析:
     
     每个索引会被分成多个分片shards进行存储,默认创建索引是分配5个分片进行存储,每个分片都会分布式部署在多个不同的节点上进行部署,该分片成为primary shards 主分片。
       查看索引分片信息http://192.168.127.132:9200/basic/_settings    注意:索引的主分片数量定义好后,不能被修改(待会讲)
    每一个主分片为了实现高可用,都会有自己对应的备分分片,主分片对应的备分片不能存放同一台服务器上,主分片可以和其他备分片存放在同一个node节点上。
  1. http://192.168.127.132:9200/basic/_settings  结果
  2. {"basic":{"settings":{"index":{"creation_date":"1567934971740","number_of_shards":"5","number_of_replicas":"1","uuid":"uwxVEjp0QoaOQAh4BFpYJw","version":{"created":"6040399"},"provided_name":"basic"}}}}
  3. "number_of_shards":"5"    主分片5个
     "number_of_replicas":"1" 副分片1个
  • ElasticSearch集群环境搭建 
     
     准备3台服务器192.168.2.108、192.168.2.111、192.168.2.112
  1. 修改3台服务器配置如下
cd /usr/local/elasticsearch6.4/config
vi elasticsearch.yml
########################修改配置如下#################
cluster.name: mytest  ###三台服务器节点集群名称相同
node.name: node-1   #### 每个节点名称不一样 其他两台为node-2 ,node-3
network.host: 192.168.2.108 #### 当前部署的服务器ip地址
discovery.zen.ping.unicast.hosts: ["192.168.2.108", "192.168.2.111","192.168.2.112"] ###多个服务集群ip
discovery.zen.minimum_master_nodes: 1  ###最小节点3台都设为1
  1. 启动elasticSearch
    注意: 我的3台服务器是克隆过来的,/usr/local/elasticsearch6.4/data的文件也被克隆过来了,这样会导致数据不同步,一定要先删除3台服务器data目录下的nodes文件或者克隆前先删除: rm -rf nodes
// 切换非root用户启动
su xiaobo
// 启动
./elasticsearch
  1. 测试
     访问: http://192.168.2.108:9200/_cat/nodes?pretty 
  2. 3亿数据ES集群评估配置 es集群性能_3亿数据ES集群评估配置

  3.  *号表示为master节点 

     在127节点添加数据
     在133节点查询数据
     停掉133节点测试