elasticsearch 故障恢复的参考 —— 筑梦之路_primary shard is not active timeout

GET _cat/recovery?v=true&h=i,s,t,ty,st,shost,thost,f,fp,b,bp&s=index:desc


**用途:**返回有关分片恢复的信息,包括正在进行的和已完成的。


**注意:**分片恢复完成后,恢复的分片可用于搜索和索引。


2. **确定每个节点将被恢复的并发分片数**



如下设置若生效,本质上是:

node_concurrent_incoming_recoveries和 node_concurrent_outgoing_recoveries同时生效。

incoming_recoverie可以简单理解为副本分片的恢复,outgoing_recoveries可以简单理解为主分片的恢复。

PUT _cluster/settings
{
“transient”: {
“cluster.routing.allocation.node_concurrent_recoveries”: 3
}
}


 默认值是2,理论上调大会增大并发。


[Cluster-level shard allocation and routing settings | Elasticsearch Guide [8.7] | Elastic]( )


3. **延时分片分配策略**



当节点出于任何原因(人为原因或系统异常)离开集群时,主节点会做出以下反应(如下称为步骤 X 是方便后续的解读):

步骤1:将副本分片提升为主分片以替换节点上的任何主分片。

步骤2:分配副本分片以替换丢失的副本(在有足够的节点的前提下)。

步骤3:在其余节点之间均匀地重新平衡分片。

以上操作的好处是:避免集群数据丢失,确保集群高可用。

但可能带来的副作用也非常明显:其一,会给集群带来额外的负载(分片分配非常耗费系统资源);其二,若离开集群的节点很快返回,上述机制的必要性就有待商榷。

此时,延迟分片分配就显得非常必要,设置如下:

PUT _all/_settings
{
“settings”: {
“index.unassigned.node_left.delayed_timeout”: “6m”
}
}


 **延时分片分配策略的本质**



当节点离开集群并确认几分钟(自己设定)可以快速上线的情况下,离开的过程中只触发步骤1的将离开节点上的对应的副本分片提升为主分片。此时集群至少不是red 状态,而是yellow状态。步骤2、步骤3不会发生,此时集群是可用的,待设定的几分钟内下线集群确保重新上线后,分片再重新转为副本分片,此时集群恢复绿色状态。

这个过程有效避免了步骤2、步骤3的分片分配,整体上以最短的时间确保了集群的高可用性。


 [Delaying allocation when a node leaves | Elasticsearch Guide [8.7] | Elastic]( )


4. **限制恢复速度以避免集群过载**



Elasticsearch 限制分配给恢复的速度以避免集群过载。

可以更新此设置以使恢复更快或更慢,具体取决于业务要求。在资源允许的情况下,想快就调大;反之,则相反。

但一味的追求快速恢复,将如下设置过高,正在进行的恢复操作会消耗过多的带宽和其他资源,这可能会破坏集群的稳定性。

PUT _cluster/settings
{
“transient”: {
“indices.recovery.max_bytes_per_sec”: “100mb”
}
}

注意事项:

这是集群层面的动态设置,一旦设置后,对集群中每个节点都生效。

如果仅想限制有限的某个节点,可以通过更新elasticsearch.yml 配置文件的静态配置来实现。


 [Index recovery settings | Elasticsearch Guide [8.7] | Elastic]( )


以上是集群还可以访问的情况下


集群无法响应的情况下如何恢复???


提速的核心:删除历史“包袱”(将来不再需要的大索引),以间接使得集群恢复加速。


免责说明:


* 如下的验证,仅在单节点集群验证 ok,多节点原理一致。
* 涉及文件的操作,是无法之法,**万不得已,不要直接操作文件。**


1. **找到待删除大索引的 uuid**



部分命令可执行,可以 cat/index

GET _cat/indices?v&s=docs.count:desc

找到对应的uuid




**自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。**

**深知大多数大数据工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!**

**因此收集整理了一份《2024年大数据全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。**
![img](https://img-blog.csdnimg.cn/img_convert/e0da987dbb08715c06096853503b343b.png)
![img](https://img-blog.csdnimg.cn/img_convert/8039359bdfd711beb6c749961f07de88.png)
![img](https://img-blog.csdnimg.cn/img_convert/d708c27ed6eaca4f830a86c103a4ee45.png)
![img](https://img-blog.csdnimg.cn/img_convert/d48b50e75c6dccf687f62764163e59f1.png)
![img](https://img-blog.csdnimg.cn/img_convert/6c78162ead265146913553fce434c5c7.png)

**既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上大数据开发知识点,真正体系化!**

**由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新**

**如果你觉得这些内容对你有帮助,可以添加VX:vip204888 (备注大数据获取)**
![img](https://img-blog.csdnimg.cn/img_convert/966d5803d60de3064b19340be21d71fd.png)

**一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**

04888 (备注大数据获取)**
[外链图片转存中...(img-U3Kj1PAE-1712957866862)]

**一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
cpu_sys_in_millis cpu_user_in_millis merge_threads merge_queue merge_active merge_rejected merge_largest merge_completed bulk_threads bulk_queue bulk_active bulk_rejected bulk_largest bulk_completed warmer_threads warmer_queue warmer_active warmer_rejected warmer_largest warmer_completed get_largest get_completed get_threads get_queue get_active get_rejected index_threads index_queue index_active index_rejected index_largest index_completed suggest_threads suggest_queue suggest_active suggest_rejected suggest_largest suggest_completed fetch_shard_store_queue fetch_shard_store_active fetch_shard_store_rejected fetch_shard_store_largest fetch_shard_store_completed fetch_shard_store_threads management_threads management_queue management_active management_rejected management_largest management_completed percolate_queue percolate_active percolate_rejected percolate_largest percolate_completed percolate_threads listener_active listener_rejected listener_largest listener_completed listener_threads listener_queue search_rejected search_largest search_completed search_threads search_queue search_active fetch_shard_started_threads fetch_shard_started_queue fetch_shard_started_active fetch_shard_started_rejected fetch_shard_started_largest fetch_shard_started_completed refresh_rejected refresh_largest refresh_completed refresh_threads refresh_queue refresh_active optimize_threads optimize_queue optimize_active optimize_rejected optimize_largest optimize_completed snapshot_largest snapshot_completed snapshot_threads snapshot_queue snapshot_active snapshot_rejected generic_threads generic_queue generic_active generic_rejected generic_largest generic_completed flush_threads flush_queue flush_active flush_rejected flush_largest flush_completed server_open rx_count rx_size_in_bytes tx_count tx_size_in_bytes
06-02
这些指标是Elasticsearch集群监控指标,包括: - cpu_sys_in_millis:集群中所有节点的系统CPU使用间,即内核态间。 - cpu_user_in_millis:集群中所有节点的用户CPU使用间,即用户态间。 - merge_threads/merge_queue/merge_active/merge_rejected/merge_largest/merge_completed:用于合并段(segments)的线程池监控指标。 - bulk_threads/bulk_queue/bulk_active/bulk_rejected/bulk_largest/bulk_completed:用于批量操作的线程池监控指标。 - warmer_threads/warmer_queue/warmer_active/warmer_rejected/warmer_largest/warmer_completed:用于预热索引的线程池监控指标。 - get_largest/get_completed/get_threads/get_queue/get_active/get_rejected:用于处理get请求的线程池监控指标。 - index_threads/index_queue/index_active/index_rejected/index_largest/index_completed:用于处理index请求的线程池监控指标。 - suggest_threads/suggest_queue/suggest_active/suggest_rejected/suggest_largest/suggest_completed:用于处理suggest请求的线程池监控指标。 - fetch_shard_store_queue/fetch_shard_store_active/fetch_shard_store_rejected/fetch_shard_store_largest/fetch_shard_store_completed/fetch_shard_store_threads:用于获取分片数据的线程池监控指标。 - management_threads/management_queue/management_active/management_rejected/management_largest/management_completed:用于管理操作的线程池监控指标。 - percolate_queue/percolate_active/percolate_rejected/percolate_largest/percolate_completed/percolate_threads:用于处理percolate请求的线程池监控指标。 - listener_active/listener_rejected/listener_largest/listener_completed/listener_threads/listener_queue:用于处理请求的监听器监控指标。 - search_rejected/search_largest/search_completed/search_threads/search_queue/search_active:用于处理search请求的线程池监控指标。 - fetch_shard_started_threads/fetch_shard_started_queue/fetch_shard_started_active/fetch_shard_started_rejected/fetch_shard_started_largest/fetch_shard_started_completed:用于获取分片数据的线程池监控指标。 - refresh_rejected/refresh_largest/refresh_completed/refresh_threads/refresh_queue/refresh_active:用于刷新操作的线程池监控指标。 - optimize_threads/optimize_queue/optimize_active/optimize_rejected/optimize_largest/optimize_completed:用于优化操作的线程池监控指标。 - snapshot_largest/snapshot_completed/snapshot_threads/snapshot_queue/snapshot_active/snapshot_rejected:用于快照操作的线程池监控指标。 - generic_threads/generic_queue/generic_active/generic_rejected/generic_largest/generic_completed:用于处理通用请求的线程池监控指标。 - flush_threads/flush_queue/flush_active/flush_rejected/flush_largest/flush_completed:用于刷新操作的线程池监控指标。 - server_open:当前打开的HTTP连接数。 - rx_count/rx_size_in_bytes:接收的HTTP请求数和数据量。 - tx_count/tx_size_in_bytes:发送的HTTP响应数和数据量。 这些指标可以帮助我们监控Elasticsearch集群的运行状态和性能,及发现并解决潜在的问题。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值