Enabling shard allocation awareness (分片分配感知)
elasticsearch集群部署在k8s集群上,遇到了这样一个问题,索引的某个主分片和其副本分片都分配到一个node上。万一出现node挂掉的情况,将出现数据无法恢复,数据缺失的情况。这里可以使用shard allocation awareness来解决这个问题。
# 集群增加如下配置
node.attr.node_name: 'node1'
cluster.routing.allocation.awareness.attributes: node_name
'node1’以实际值为准,当然这里不一定是node_name,node_ip也可以,只要能够唯一标识node的属性都可以。
给集群增加这个配置后,我们可以看到原来都分配在同一个node上主副本分片进行了重新分配,分配到了不同的node。
启动elasticsearch必须配置的一个系统参数
6.8和7.10这些常用的版本,只需要配置这一个 Virtual memory系统参数就不会影响服务启动了,太老的版本可能还需要配置一下ulimit
在root下执行
sysctl -w vm.max_map_count=262144
永久配置方法,在 /etc/sysctl.conf 中更新 vm.max_map_count ,然后reboot,sysctl vm.max_map_count 进行验证。
为什么要配置这个值呢?因为elasticsearc默认使用 mmapfs 存储索引。操作系统的默认值太低,可能会导致out of memory exception。