干货 | Elasticsearch集群黄色原因的终极探秘

本文涉及的产品
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
简介: 1、Elasticsearch集群不同颜色代表什么?绿色——最健康的状态,代表所有的主分片和副本分片都可用;黄色——所有的主分片可用,但是部分副本分片不可用;红色——部分主分片不可用。(此时执行查询部分数据仍然可以查到,遇到这种情况,还是赶快解决比较好。

image.png

链接

2、Elasticsearch 集群颜色变黄色了要不要紧?

Elasticsearch集群黄色代表:


分配了所有主分片,但至少缺少一个副本。

没有数据丢失,因此搜索结果仍将完整。

注意:您的高可用性在某种程度上会受到影响。

如果更多分片消失,您可能会丢失数据。 将黄色视为应该提示调查的警告。


3、Elasticsearch集群健康状态如何排查?

3.1 集群状态查看

curl -XGET 'http://localhost:9200/_cluster/health?pretty=true'  

{

"cluster_name" : "astrung",

"status" : "yellow",

"timed_out" : false,

"number_of_nodes" : 2,

"number_of_data_nodes" : 2,

"active_primary_shards" : 22,

"active_shards" : 22,

"relocating_shards" : 0,

"initializing_shards" : 2,

"unassigned_shards" : 20

}

1

2

3

4

5

6

7

8

9

10

11

12

13

3.2 分片状态查看

curl -XGET 'http://localhost:9200/_cat/shards?v'

index          shard prirep state        docs  store ip          node

_river         0     p      STARTED         2  8.1kb 192.168.1.3 One  

_river         0     r      UNASSIGNED                                

megacorp       4     p      STARTED         1  3.4kb 192.168.1.3 One  

megacorp       4     r      UNASSIGNED                                

megacorp       0     p      STARTED         2  6.1kb 192.168.1.3 One  

1

2

3

4

5

6

7

3.3 查看unsigned 的原因

GET /_cluster/allocation/explain

1

3.4 查看集群中不同节点、不同索引的状态

GET _cat/shards?h=index,shard,prirep,state,unassigned.reason

1

3.5 Head插件直观排查

image.png

4、Elasticsearch集群黄色的原因排查及解决方案

4.1 原因1:Elasticsearch采用默认配置(5分片,1副本),但实际只部署了单节点集群。

由于只有一个节点,因此群集无法放置副本,因此处于黄色状态。

elasticsearch 索引的默认配置如下:


index.number_of_shards:5

index.number_of_replicas:1

1

2

解决方案如下:

您可以将副本计数降低到0或将第二个节点添加到群集,以便可以将主分片和副本分片安全地放在不同的节点上。

这样做以后,如果您的节点崩溃,群集中的另一个节点将拥有该分片的副本。

(1)设置副本数为0,操作如下:


PUT /cs_indexs/_settings

{

 "number_of_replicas": 0

}

1

2

3

4

进行段合并,提升访问效率,操作如下:

POST /cs_indexs/_forcemerge?max_num_segments=1

(2)不再物理扩展集群,将后续所有的索引自动创建的副本设置为 0。


PUT /_template/index_defaults

{

 "template": "*",

 "settings": {

 "number_of_replicas": 0

 }

}

1

2

3

4

5

6

7

##4.2 原因2:Elasticsearch分配分片错误。

进一步可能的原因:您已经为集群中的节点数过分分配了副本分片的数量,则分片将保持UNASSIGNED状态。其错误码为:ALLOCATION_FAILED。

解决方案如下:

reroute:重新路由命令允许手动更改群集中各个分片的分配。

核心操作如下:


POST /_cluster/reroute

 {

 "commands": [

   {

     "allocate_replica": {

       "index": "cs_indexs",

       "shard": 0,   # 重新分配的分片(标记黄色的分片)

       "node": "es-2"

     }

   }

 ]

}

1

2

3

4

5

6

7

8

9

10

11

12

reroute扩展使用——可以显式地将分片从一个节点移动到另一个节点,可以取消分配,

并且可以将未分配的分片显式分配给特定节点。

举例使用模板如下:


POST /_cluster/reroute

{

   "commands" : [

       {

           "move" : {

               "index" : "test", "shard" : 0,

               "from_node" : "node1", "to_node" : "node2"

           }

       },

       {

         "allocate_replica" : {

               "index" : "test", "shard" : 1,

               "node" : "node3"

         }

       }

   ]

}

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

其中:

1)move代表移动;

2)allocate_replica 代表重新分配;

3)cancel 代表取消;


4.3 磁盘使用过载。

原因3:磁盘使用超过设定百分比85%。

cluster.routing.allocation.disk.watermark.low——控制磁盘使用的低水位线。 它默认为85%,这意味着Elasticsearch不会将分片分配给使用磁盘超过85%的节点。 它也可以设置为绝对字节值(如500mb),以防止Elasticsearch在小于指定的可用空间量时分配分片。

解决方案:

(1)查看磁盘空间是否超过85%。


[root@localhost home]# df -h

Filesystem           Size  Used Avail Use% Mounted on

/dev/xvda1          1014M  165M  849M  17% /boot

/dev/mapper/cl-home  694G  597G   98G  86% /home

1

2

3

4

(2)删除不必要的索引,以释放更多的空间。


DELETE  cs_indexs

1

##4.4 磁盘路径权限问题。

原因4:磁盘路径权限问题。安全起见,默认Elasticsearch非root账户和启动。

相关的Elasticsearch数据路径也是非root权限。

解决方案:

去数据存储路径排查权限,或者在data的最外层设置:


chown -R elasticsearch:elasticsearch data

1

推荐阅读:

干货 | Elasticsearch 集群健康值红色终极解决方案


参考:


https://www.elastic.co/guide/en/elasticsearch/guide/current/_cluster_health.html

https://www.jianshu.com/p/542ed5a5bdfc

https://www.elastic.co/guide/en/elasticsearch/reference/current/indices-update-settings.html

https://www.elastic.co/guide/en/elasticsearch/reference/current/cluster-reroute.html

相关实践学习
使用阿里云Elasticsearch体验信息检索加速
通过创建登录阿里云Elasticsearch集群,使用DataWorks将MySQL数据同步至Elasticsearch,体验多条件检索效果,简单展示数据同步和信息检索加速的过程和操作。
ElasticSearch 入门精讲
ElasticSearch是一个开源的、基于Lucene的、分布式、高扩展、高实时的搜索与数据分析引擎。根据DB-Engines的排名显示,Elasticsearch是最受欢迎的企业搜索引擎,其次是Apache Solr(也是基于Lucene)。 ElasticSearch的实现原理主要分为以下几个步骤: 用户将数据提交到Elastic Search 数据库中 通过分词控制器去将对应的语句分词,将其权重和分词结果一并存入数据 当用户搜索数据时候,再根据权重将结果排名、打分 将返回结果呈现给用户 Elasticsearch可以用于搜索各种文档。它提供可扩展的搜索,具有接近实时的搜索,并支持多租户。
相关文章
|
28天前
|
存储 负载均衡 索引
linux7安装elasticsearch-7.4.0集群配置
linux7安装elasticsearch-7.4.0集群配置
113 0
|
2月前
|
Docker 索引 容器
Elasticsearch跨集群检索配置
Elasticsearch跨集群检索配置
45 1
|
4月前
|
存储 Linux
ElasticSearch集群快照
ElasticSearch集群快照
236 1
|
4月前
|
安全 大数据 Java
elasticsearch|大数据|低版本的elasticsearch集群的官方安全插件x-pack的详解
elasticsearch|大数据|低版本的elasticsearch集群的官方安全插件x-pack的详解
53 0
|
2月前
|
开发工具 Docker 容器
docker安装集群版ElasticSearch
docker安装集群版ElasticSearch
|
2月前
|
Java 网络安全 数据安全/隐私保护
高可用elasticsearch集群搭建
高可用elasticsearch集群搭建
|
2月前
|
网络安全 Docker 容器
【docker专题_01】docker搭建elasticsearch集群 -
【docker专题_01】docker搭建elasticsearch集群 -
|
3月前
dsl语句查询elasticsearch集群节点分布和资源使用情况
dsl语句查询elasticsearch集群节点分布和资源使用情况
118 0
|
4月前
|
安全 Java 大数据
elasticsearch|大数据|elasticsearch低版本集群的部署安装和安全增强---密码设置问题
elasticsearch|大数据|elasticsearch低版本集群的部署安装和安全增强---密码设置问题
42 0
|
4月前
|
JSON 自然语言处理 负载均衡
数据库-Elasticsearch进阶学习笔记(集群、故障、扩容、简繁体、拼音等)
数据库-Elasticsearch进阶学习笔记(集群、故障、扩容、简繁体、拼音等)
56 0

热门文章

最新文章