Elasticsearch使用过程中的问题总结

来源:互联网 发布:java 游戏 编码 编辑:程序博客网 时间:2024/04/26 21:29

1、es脑裂问题

由于某些节点的失效,部分节点的网络连接会断开,并形成一个与原集群一样名字的集群,这种情况成为集群脑裂(split-brain)现象。这个问题非常危险,因为两个新形成的集群会同时索引和修改集群的数据。

正常情况下,集群中的所有的节点,应该对集群中master的选择是一致的,这样获得的状态信息也应该是一致的,不一致的状态信息,说明不同的节点对master节点的选择出现了异常——也就是所谓的脑裂问题。这样的脑裂状态直接让节点失去了集群的正确状态,导致集群不能正常工作。
ES集群脑裂导致的原因:
  1. 网络: 由于是内网通信, 网络通信问题造成某些节点认为 master 死掉, 而另选 master的可能性较小; 进而检查 Ganglia 集群监控, 也没有发现异常的内网流量, 故此原因可以排除。
   内网一般不会出现es集群的脑裂问题,可以监控内网流量状态。外网的网络出现问题的可能性大些。
  2. 节点负载: 由于 master 节点与 data 节点都是混合在一起的, 所以当工作节点的负载较大( 确实也较大) 时, 导致对应的 ES 实例停止响应, 而这台服务器如果正充当着 master节点的身份, 那么一部分节点就会认为这个 master 节点失效了, 故重新选举新的节点, 这时就出现了脑裂; 同时由于 data 节点上 ES 进程占用的内存较大, 较大规模的内存回收操作也能造成 ES 进程失去响应。 所以, 这个原因的可能性应该是最大的。
  3、回收内存
  由于data节点上es进程占用的内存较大,较大规模的内存回收操作也能造成es进程失去响应。
解决方案:
之前的博客有描述,master节点和data节点分离。

2、 集群中出现大量shard unassiged问题,如何修复?

当集群重启过程中如果出现unassiged的分片,如何快速修复,下面两个链接都是很好的解决方案
https://www.datadoghq.com/blog/elasticsearch-unassigned-shards/#reason-1-shard-allocation-is-purposefully-delayed

http://www.wklken.me/posts/2015/05/23/elasticsearch-issues.html


curl -XPUT 'localhost:9200/<INDEX_NAME>/_settings' -d '{    "settings": {      "index.unassigned.node_left.delayed_timeout": "30s"    }}'

3、节点负载过高,GC频繁?

首先判断是否CPU过高或部分IO等待导致,并排除其他组件的影响,GC的问题可以升级G1回收器(JDK1.8 40版本以上),同时需要考虑降低副本数到0或1、部分增加超时时间来降低影响。一般来说,ES配置可优化的点很少,更多的是使用的问题。当使用X-pack插件时要注意,每台机器都需要装该插件。

4、 ES如何安全重启—–滚动重启

参考官网地址:
https://www.elastic.co/guide/cn/elasticsearch/guide/current/_rolling_restarts.html#_rolling_restarts

总有一天你会需要做一次集群的滚动重启——保持集群在线和可操作,但是逐一把节点下线。

常见的原因:Elasticsearch 版本升级,或者服务器自身的一些维护操作(比如操作系统升级或者硬件相关)。不管哪种情况,都要有一种特别的方法来完成一次滚动重启。

正常情况下,Elasticsearch 希望你的数据被完全的复制和均衡的分布。如果你手动关闭了一个节点,集群会立刻发现节点的丢失并开始再平衡。如果节点的维护是短期工作的话,这一点就很烦人了,因为大型分片的再平衡需要花费相当的时间(想想尝试复制 1TB 的数据——即便在高速网络上也是不一般的事情了)。

我们需要的是,告诉 Elasticsearch 推迟再平衡,因为对外部因子影响下的集群状态,我们自己更了解。操作流程如下:

  • 1.可能的话,停止索引新的数据。虽然不是每次都能真的做到,但是这一步可以帮助提高恢复速度。
  • 2.禁止分片分配。这一步阻止 Elasticsearch 再平衡缺失的分片,直到你告诉它可以进行了。如果你知道维护窗口会很短,这个主意棒极了。你可以像下面这样禁止分配:
PUT /_cluster/settings{    "transient" : {        "cluster.routing.allocation.enable" : "none"    }}
  • 3.关闭单个节点。
  • 4.执行维护/升级。
  • 5.重启节点,然后确认它加入到集群了。
  • 6.用如下命令重启分片分配
PUT /_cluster/settings{    "transient" : {        "cluster.routing.allocation.enable" : "all"    }}

分片再平衡会花一些时间。一直等到集群变成 绿色 状态后再继续。
- 7.重复第 2 到 6 步操作剩余节点。
- 8.到这步你可以安全的恢复索引了(如果你之前停止了的话),不过等待集群完全均衡后再恢复索引,也会有助于提高处理速度.

主要几个需要注意的点:
1.不要通过kill -9来停止服务
2.滚动重启时需要等待该节点加入集群,加入集群后再开启自动分配分片,直到分片分配结束.
3.重启各台机器前需要先关闭自动分配分片

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 25岁总掉头发怎么办 25岁掉头发厉害怎么办 我25岁经常掉头发怎么办 25岁掉头发很厉害怎么办 我今年25岁掉头发怎么办 头顶头发稀少怎么办有方法吗 头发又干又黄怎么办 2岁宝宝头发细软怎么办 头发突然变得稀疏了怎么办 孕期掉头发很厉害怎么办 冬天头发掉的厉害怎么办 怀孕期间掉头发比较严重怎么办 头发油腻容易掉发怎么办 最近头发掉的厉害怎么办 头发新长的绒毛怎么办 久躺床上头发黏在一起怎么办 头发长油怎么办小妙招 头发出油多脱发怎么办 头发出油掉头发怎么办 在英国狂掉头发怎么办 我头发油头皮痒脱发怎么办 油性头发容易掉发怎么办 洗了头发很蓬松怎么办 小孩头皮黄掉头发怎么办 头发又油又掉发怎么办 英国的水掉头发怎么办 洗发为什么会掉头发怎么办 头发老掉怎么办吃什么 19岁掉头发严重怎么办 头发总是从根掉怎么办 18岁掉头发很厉害怎么办 20岁脱发严重该怎么办 22岁m型脱发严重怎么办 22掉头发很厉害怎么办 哺乳期头发掉的很厉害怎么办 失眠多梦掉头发怎么办 老婆生完孩子掉头发怎么办 16岁发际线高怎么办 生了小孩头发掉怎么办 16岁头发掉的厉害怎么办 经常脱发严重不长头发怎么办