0、引言
今天群里有小伙伴讨论公司集群报黄的问题,特此记录,以供后续的同学参考
1、原因
集群的有三种状态:
绿色:正常状态,表示主副分片都正常
黄色:主分片正常,至少一个副本分片不可用,该状态下仍然可以正常查询
红色:至少一个主分片不可用,可以查询到部分数据,但是数据不具备完整性
2、解决
由上述表示可知,集群报黄归根结底是一个原因,至少一个副本分片不可用。但是造成这个情况的形式不止一种,目前已知的有:
2.1 副本分片数过大
主副分片是不允许在同一节点上的,如果副本分片数设置的过大,导致副本分片无节点可分配的话就会导致这个问题。而这里的过大也是相对于集群节点数而言的,如果是单节点集群,副本分片数即使为1也是过大,因为肯定会和主分片处在同一个节点上。
可以通过以下指令排查
# 查询分片状态,观察哪些索引是yellow
GET _cat/shards?v
# 找到yellow 索引,查询settings
GET <index>/_settings
解决
1、手动设置副本分片数,将其调整为0或者一个合适值:
PUT /cs_indexs/_settings
{
"number_of_replicas": 0
}
需要注意的是,副本分片的作用是主分片的备份,所以如果设置为0的话就意味着没有备份了。
2、增加节点数量也可解决此类问题
2.2 磁盘占用数超85%
官方文档中有记录,默认是不会将分片分配给磁盘占用率超85%的节点的,所以检查下你服务器的磁盘占用量
可以通过df -h
指令查看磁盘占用量
解决
1、拓展磁盘空间
2、删除无用索引数据
2.3 网络问题
节点无法连接到集群,自然会使节点无法分配分片,也会导致报黄设置报红。当集群出现一会报黄一会正常的情况,就要考虑下是否是某部分节点存在网络波动或者其他问题导致连接不稳定
如果上述两种情况都不满足的话,排查一下是否是网络的问题。
用docker安装的集群,要重点排查下这种情况
如果你还遇到其他的情况,请留言告诉我