目录
- 0. 环境信息
- 0.1 主机信息
- 0.2 集群节点信息
- 0.3 索引数据信息
- 1. 迁移需求
- 2. 实际动作
- 3. 问题总结
0. 环境信息
0.1 主机信息
CPU | Mem | DISK |
48c | 500GB | 32TB |
该集群为9节点集群,6台数据节点主机是上面配置,3台master节点大概是12c、48g、200GB(和其他服务混用主机了)
0.2 集群节点信息
# curl -X GET "xx.xx.xx.xx:10004/_cat/nodes?v"
ip heap.percent ram.percent cpu load_1m load_5m load_15m node.role master name
xx.xx.x.87 65 99 5 3.98 2.93 2.35 d - es-newdata4
xx.xx.x.22 23 99 10 2.13 1.83 1.48 mi - es-master1
xx.xx.x.85 54 99 5 1.68 1.16 1.07 d - es-newdata2
xx.xx.x.88 58 98 5 1.49 2.66 2.64 d - es-newdata5
xx.xx.x.84 72 99 5 1.65 2.19 2.05 d - es-newdata1
xx.xx.x.23 17 99 7 0.86 0.89 1.05 mi * es-master2
xx.xx.x.24 43 99 7 1.61 1.33 1.24 mi - es-master3
xx.xx.x.89 63 99 5 0.51 0.95 0.96 d - es-newdata6
xx.xx.x.86 66 99 4 0.86 1.51 1.64 d - es-newdata3
0.3 索引数据信息
es集群数据信息:
9 nodes----1218 indices----64450 shards----26968596160 docs----16.98TB
# curl -s "xx.xx.x.22:10004/_cat/shards" | grep es-newdata1 | wc -l
11956
每台数据节点大概1w+的分片数据
1. 迁移需求
- 集群数据节点全部使用的是物理机,newdata3节点物理机节点坏了一根内存,不过由于机器内存很大,好的内存不影响主机使用
- 准备将newdata3迁移到其他节点后,停止newdata3节点es服务,停止主机
- 更换内存
- 启动newdata3节点主机,启动newdata3节点es服务,重新分片数据
2. 实际动作
1.禁止节点分配数据
curl -H "Content-Type: application/json" -XPUT xx.xx.x.22:10004/_cluster/settings -d '{ "transient" : { "cluster.routing.allocation.exclude._name" : "es-newdata3" } }'
观察发现分片数据迁移很慢
2.查看集群分片恢复个数和节点传输最大带宽
curl -H "Content-Type: application/json" -XGET xx.xx.x.22:10004/_cluster/settings
发现集群分片恢复个数是默认的2个
3.调整集群分片恢复个数和节点传输最大带宽
curl -H "Content-Type: application/json" -XPUT xx.xx.x.22:10004/_cluster/settings -d '{"persistent": { "cluster.routing.allocation.node_concurrent_recoveries": "40", "indices.recovery.max_bytes_per_sec": "80mb" }}'
数值可以根据自己机器进行调整
cluster.routing.allocation.node_concurrent_recoveries属性集群中每个节点上分片并发恢复的个数,
默认为2。可根据老数据节点的 CPU 核数 * 4来确定具体的值,但不要超过50。例如,老数据节点为4核16G,则建
议该值设置为16;老数据节点为16核64G,则建议该值设置为50。如果发现调大了该值后集群的稳定性受到影响,可
适当减小该值。
indices.recovery.max_bytes_per_sec属性表示节点之间数据传输的最大带宽限制,默认为40mb。该值不宜
设置的过高,否则会破坏集群的稳定性。客户可以5mb为步长,逐步调整该限制值,并持续观察集群的稳定性,最终
选择一个相对平衡的值。
4.机器更换好内存后,解除禁止节点分配数据动作
curl -H "Content-Type: application/json" -XPUT xx.xx.x.22:10004/_cluster/settings -d '{ "transient" : { "cluster.routing.allocation.exclude._name" : "" } }'
3. 问题总结
1.关机前,数据迁移了大概5个小时
2.机器恢复后,数据重新分片速度特别慢,修改集群分片恢复个数和节点传输最大带宽没有作用,始终只修改2个索引,es也没有日志报错(还未理解为什么),但不影响业务使用