分片

一、分片的创建策略

1、分片:数据的载体,类似mysql中表。

     每一个分片承载了完整数据中的一部分,每一个分片都存在时,数据才是完整的

2、主分片是数据的一部分,副本分片是主分片的备份

3、7.0之后分片默认一主一副

4、分片的合理容量为10-50G

5、分片有shard reblance策略,体现了高可用

  shard rebalance策略:当某个es服务挂掉后(该服务有ab两个分片),这个服务上的ab两个分片会被重新分配到其他es服务上。

            若ab两个分片为主分片,则会将其他服务中的ab的副本分片提升为主分片

二、集群级和索引级配置

1、node.attr.rack_id:rack1

   node.attr.hot_warm_cold:hot

   _cat/nodeattrs?v查看节点属性信息

2、集群配置:persistent:永久性修改

        transient:集群重启后失效

1 PUT _cluster/settings
2 {
3   "persistent": {
4     "cluster.routing.allocation.awareness.attributes":"rack_id"
5   }
6 }

3、索引

1 PUT product
2 {
3   "settings": {
4     "number_of_shards": 3,
5     "index.routing.allocation.include._name":"node1"
6   }
7 }

索引的setting在{}里面,集群的setting在_cluster后面

三、分片分配感知策略

基于分片感知策略进行实现的:node.attr.rack_id:rack1可以指定节点所处机架

 

 

 

索引d和c是指定分片感知策略后,索引b和a是指定分片感知策略前。node1和node2在机架1中,node3在机架2中

分片感知策略前和后的区别:感知后主分片不会平均分配到每个节点中,感知前主分片会平均分配到每个节点中

原因:若机架2断电不可用,感知分片前每个主分片平均到每个节点,node3中主分片挂掉导致集群不可用。

   所以,分片感知策略后,node3中不会有主分片存在,机架1或机架2中一个机架挂掉后集群可用率依旧为50%

 

 

 四、强制感知策略

1 PUT _cluster/settings
2 {
3   "persistent": {
4     "cluster.routing.allocation.awareness.attributes":"rack_id",
5     "cluster.routing.allocation.awareness.force.rack_id.value":"rack1,rack2"
6     
7   }
8 }

上面那个机架的图中:若机架2断电不可用,若不启用强制感知策略则会触发shard rebalance,分片重新分配到机架1。此时会造成机架1中服务器超负载

          若开启分片再平衡策略,当机架2不可用后不会触发分片再平衡。机架1中机器避免超负载运行

 

posted @ 2022-02-15 22:32  showMeTheCodes  阅读(192)  评论(0编辑  收藏  举报