首页 > 其他分享 >干货 | Elasticsearch 运维实战常用命令清单

干货 | Elasticsearch 运维实战常用命令清单

时间:2022-10-18 22:01:36浏览次数:268  
标签:index 运维 常用命令 cluster Elasticsearch result 分片 集群 节点


Elasticsearch 最少必要知识实战教程直播回放



背景

球友反馈的实战问题:

关于es的运维相关的, 遇到一些问题!

  • 第一个问题:是关于集群迁移的,目前需要 针对20亿的数据做迁移,如果文件迁移,需要停机时间太久,除了重新灌入,不知 道有没有更好的方式?
  • 第二个问题:我们es集群的读写都很频繁,如何把控在相互不影响性能,当前情况是会有相互影响!
  • 第三个问题:之前做版本升级,升级后部分分片不可用,但是不知道什么原因导致?
  • 最后:就是关于数据的扩容,备份,高可用这方面...... 扩容其实 面对一个问题就是你之前的es  mapping 如何建, 如果这个没规划好,增加节点的意义也不大了
  • 另外就是面对现在集群状态黄色和红色,没有体系化的思路去排查问题到底出在哪儿?

更多的是点对点去临时解决,积累的知识是碎片化的。

的确,类似问题经常被问到,是时候整合梳理一下了。

1、集群状态非绿排查清单

1.1 集群状态的含义

  • 红色:至少一个主分片未分配成功;
  • 黄色:至少一个副本分片未分配成功;
  • 绿色:全部主&副本都分配成功。

1.2 排查实战

1.2.1 查看集群状态

GET _cluster/health

返回状态举例:"status" : "red", 红色,至少一个主分片未分配成功。

1.2.2 到底哪个节点出现了红色或者黄色问题呢?

GET _cluster/health?level=indices

如下的方式,更明快直接

GET /_cat/indices?v&health=yellow
GET /_cat/indices?v&health=red

找到对应的索引。

1.2.3 到底索引的哪个分片出现了红色或者黄色问题呢?

GET _cluster/health?level=shards

1.2.4 到底什么原因导致了集群变成红色或者黄色呢?

GET _cluster/allocation/explain

返回核心信息解读举例:

"current_state" : "unassigned",——未分配
"unassigned_info" : {
"reason" : "INDEX_CREATED",——原因,索引创建阶段
"at" : "2020-01-29T07:32:39.041Z",
"last_allocation_status" : "no"
},
"explanation" : """node does not match index setting [index.routing.allocation.require] filters [box_type:"hot"]"""
}

根本原因,shard分片与节点过滤类型不一致 到此,找到了根本原因,也就知道了对应解决方案。

1.3 扩展思考:类似 "current_state" : "unassigned",——未分配 还有哪些?

实战:

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

官网:https://www.elastic.co/guide/en/elasticsearch/reference/7.2/cat-shards.html

未分配状态及原因解读:

(1)INDEX_CREATED
Unassigned as a result of an API creation of an index.
(2)CLUSTER_RECOVERED
Unassigned as a result of a full cluster recovery.
(3)INDEX_REOPENED
Unassigned as a result of opening a closed index.
(4)DANGLING_INDEX_IMPORTED
Unassigned as a result of importing a dangling index.
(5)NEW_INDEX_RESTORED
Unassigned as a result of restoring into a new index.
(6)EXISTING_INDEX_RESTORED
Unassigned as a result of restoring into a closed index.
(7)REPLICA_ADDED
Unassigned as a result of explicit addition of a replica.
(8)ALLOCATION_FAILED
Unassigned as a result of a failed allocation of the shard.
(9)NODE_LEFT
Unassigned as a result of the node hosting it leaving the cluster.
(10)REROUTE_CANCELLED
Unassigned as a result of explicit cancel reroute command.
(11)REINITIALIZED
When a shard moves from started back to initializing, for example, with shadow replicas.
(12)REALLOCATED_REPLICA
A better replica location is identified and causes the existing replica allocation to be cancelled.

2、节点间分片移动

适用场景:手动移动分配分片。将启动的分片从一个节点移动到另一节点。

POST /_cluster/reroute
{
"commands": [
{
"move": {
"index": "indexname",
"shard": 1,
"from_node": "nodename",
"to_node": "nodename"
}
}
]
}

3、集群节点优雅下线

适用场景:保证集群颜色绿色的前提下,将某个节点优雅下线。

PUT /_cluster/settings
{
"transient": {
"cluster.routing.allocation.exclude._ip": "122.5.3.55"
}
}

4、强制刷新

适用场景:刷新索引是确保当前仅存储在事务日志中的所有数据也永久存储在Lucene索引中。

POST /_flush

注意:这和 7.6 版本之前的同步刷新(未来8版本+会废弃同步刷新)一致。

POST /_flush/synced

5、更改并发分片的数量以平衡集群

适用场景:

控制在集群范围内允许多少并发分片重新平衡。默认值为2。

PUT /_cluster/settings
{
"transient": {
"cluster.routing.allocation.cluster_concurrent_rebalance": 2
}
}

6、更改每个节点同时恢复的分片数量

适用场景:

如果节点已从集群断开连接,则其所有分片将都变为未分配状态。经过一定的延迟后,分片将分配到其他位置。每个节点要恢复的并发分片数由该设置确定。

PUT /_cluster/settings
{
"transient": {
"cluster.routing.allocation.node_concurrent_recoveries": 6
}
}

7、调整恢复速度

适用场景:

为了避免集群过载,Elasticsearch限制了分配给恢复的速度。你可以仔细更改该设置,以使其恢复更快。

如果此值调的太高,则正在进行的恢复可能会消耗过多的带宽和其他资源,这可能会使集群不稳定。

PUT /_cluster/settings
{
"transient": {
"indices.recovery.max_bytes_per_sec": "80mb"
}
}

8、清除节点上的缓存

适用场景:如果节点达到较高的JVM值,则可以在节点级别上调用该API 以使 Elasticsearch 清理缓存。

这会降低性能,但可以使你摆脱OOM(内存不足)的困扰。

POST /_cache/clear

9、调整断路器

适用场景:为了避免在Elasticsearch中进入OOM,可以调整断路器上的设置。这将限制搜索内存,并丢弃所有估计消耗比所需级别更多的内存的搜索。

注意:这是一个非常精密的设置,你需要仔细校准。

PUT /_cluster/settings
{
"persistent": {
"indices.breaker.total.limit": "40%"
}
}

10、集群迁移

适用场景:集群数据迁移、索引数据迁移等。

方案一、 针对索引部分或者全部数据,reindex

干货 | Elasticsearch 运维实战常用命令清单_java

POST _reindex
{
"source": {
"index": "my-index-000001"
},
"dest": {
"index": "my-new-index-000001"
}
}

方案二:借助第三方工具迁移索引或者集群

  • elasticdump
  • elasticsearch-migration

工具本质:scroll + bulk 实现。

11、集群数据备份和恢复

适用场景:高可用业务场景,定期增量、全量数据备份,以备应急不时之需。

PUT /_snapshot/my_backup/snapshot_hamlet_index?wait_for_completion=true
{
"indices": "hamlet_*",
"ignore_unavailable": true,
"include_global_state": false,
"metadata": {
"taken_by": "mingyi",
"taken_because": "backup before upgrading"
}
}

POST /_snapshot/my_backup/snapshot_hamlet_index/_restore

小结

文章开头的几个运维问题已经解决,其他性能相关的问题,后面会有另外的博文做梳理。

运维工作包罗万象,文章内容只是抛砖引玉,开了个头。

牛逼的集群运维需要结合可视化工具(如:kibana,cerebro,elastic-hd,Prometheus + grafana,结合业务自研工具如 阿里云Eyou等)能极大提高效率。

你的Elasticsearch 运维的经验、心得、体会,欢迎留言交流,我们一起完善清单。


参考:

Elasticsearch 官方文档 

​https://logz.io/blog/elasticsearch-cheat-sheet/ ​


标签:index,运维,常用命令,cluster,Elasticsearch,result,分片,集群,节点
From: https://blog.51cto.com/elasticsearch/5768252

相关文章

  • 开干!Elasticsearch官方文档离线访问实操指南
    Elasticsearch最少必要知识实战教程直播回放1、开发不能联网怎么访问Elasticsearch文档?这是最近被频繁问到的问题。直接上个图:不能让Elasticsearch文档限制了你我的学......
  • 干货 | Elasticsearch 开发实战常用命令清单
    Elasticsearch最少必要知识实战教程直播回放0、背景Elasticsearch具有一组丰富的易于理解的RESTAPI,这些API 均可如下几种方式通过HTTP调用进行访问。CurlPostma......
  • Elasticsearch聚合优化 | 聚合速度提升5倍
    1、聚合为什么慢?大多数时候对单个字段的聚合查询还是非常快的,但是当需要同时聚合多个字段时,就可能会产生大量的分组,最终结果就是占用es大量内存,从而导致OOM的情况发生......
  • Git忽略提交规则 - .gitignore配置运维总结
    在使用Git的过程中,我们喜欢有的文件比如日志,临时文件,编译的中间文件等不要提交到代码仓库,这时就要设置相应的忽略规则,来忽略这些文件的提交。简单来说一个场景:在你使用git......
  • Elasticsearch 6.8.6
     mac;centos;unix; 下载wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.8.6.tar.gz windows下载(迅雷)​​https://artifacts.elastic.c......
  • Git 常用命令清单
    每天使用Git,但是很多命令记不住。一般来说,日常使用只要记住下图6个命令,就可以了。但是熟练使用,恐怕要记住60~100个命令。下面是整理的常用Git命令清单。几个专用名词......
  • 《SREWorks 云原生数智运维工程实践》电子书重磅来袭!(免费下载)
    云原生是在云计算场景下的再升级,其核心是创新,是一次比物理机上云更彻底的创新。云原生让工作负载摆脱束缚,能够自由地在各种平台上运行。诚然,这种创新带来了更多的可能性,但也......
  • git 常用命令
    git是最常用的版本控制工具基本命令gitinitgitinit初始化本地仓库gitstatusgitstatus查看git状态gitaddgitaddfilename向本地仓库增加一个修改项。添......
  • Docker的常用命令
    Docker的常用命令目录Docker的常用命令帮助命令1、镜像命令dockerimages查看所有本地的主机上的镜像dockersearch搜索镜像dockerpull下载镜像dockerrmi删除镜像2......
  • Elasticsearch 搜索 API
    Elasticsearch搜索API目录Elasticsearch搜索API搜索多个索引搜索单个索引只返回特定字段统计文档数量查询索引配置修改索引Mapping参阅搜索多个索引#未指定文档时......