另外,cluster.routing.allocation.enable 和 cluster.routing.rebalance.enable 参数是有区别的:
cluster.routing.allocation.enable 设置成none,主要是影响集群中新创建的索引无法进行分片分配(把分片分配到某个节点上去)。
cluster.routing.rebalance.enable设置成none, 主要是影响集群中已有索引的分片不会rebalance到(迁移)其他节点上去了吧。比如,我已经有一个名为test的索引在node-1,node-2上,如果此时node-2宕机,由于:cluster.routing.rebalance.enable设置成none,那么node-2上的分片是不会自动迁移到node-1上去的,那集群的状态很有可能是Red。
另外,看官方文档关于ElasticSearch节点升级(或者说节点重启)的描述:
把 index.unassigned.node_left.delayed_timeout(默认是1分钟) 设置得大一点,因为关闭了一台节点,意味着在这台节点上的所有副本(既包括 primary 也包括replica)都没了,某些索引的副本就达不到number_of_replicas 指定的值了,那么ES会"复制"一个新的副本出来以满足:number_of_replicas 参数所配置的值。但由于是重启节点,而不是真正的故障,因此,应该要避免这种复制操作。index.unassigned.node_left.delayed_timeout 可以推迟这种复制操作的发生。
但是里面提到了 "cluster.routing.allocation.enable": "primaries" 参数,不太明白为什么要设置成 primaries而不是其他参数?
网友评论