集群一直处于快照中
集群一直处于快照中,有三个比较常见的原因:
- 集群数据量大或者集群压力大,备份快照耗时长。
单个节点的快照速度默认是40MB/s,同时,快照的性能还受集群情况影响,如果此时集群负载较高,耗时将会更久。可以通过上述章节的查询单个快照信息查询正在执行的快照情况。
执行GET _snapshot/repo_auto/snapshot-name,可以看到剩余还需要完成的shard个数,也可以通过删除快照接口提前终止。
解决方法:等待或者提前终止。
- 快照信息更新失败。
Elasticsearch将进行中的快照信息保存在cluster state中,快照完成后需要更新快照状态,由于Elasticsearch更新快照状态的接口没有加入重试或者容错机制,比如由于当时集群内存压力大,更新快照动作被熔断,那么这个快照将会一直处于快照中。
解决方法:调用快照删除接口。
- 临时AK、SK过期。
CSS通过委托将Elasticsearch中的数据写入到用户的OBS中,快照仓库创建的时候,需要去使用委托获取临时的AK 、SK设置到仓库中。由于临时的AK、SK是有时效性的(24小时过期),如果一个快照超过24小时还未完成,那么这个快照将会失败。这种情况会有一个比较大的风险,因为此时仓库的AK、SK过期,无法对这个仓库进行更新、查询、删除操作,这种情况下cluster state信息将会无法清除,只能通过普通重启(滚动重启无法生效)集群来清除cluster state里面残留的快照信息。
解决方法:暂时只能通过普通重启集群来消除,后期CSS会提供终止接口,可以来解决这种无法消除状态的现象。