环境
系统: centos7
工具: ansible
情景:将host1节点上的es迁移至host4,缓解A机器资源压力。
准备
-
停止logstash服务,部署位置:host1
-
停止elasticsearch服务,
asible-playbook elasticsearch -v "action=stop"
-
es使用ansible部署,更改部署脚本 elasticsearch.yml
--- - hosts: host1 host2 host3 host4 gather_facts: False roles: - role: elasticsearch memory: 10g es_cluster_name: 'cy_es_cluster' es_cluster_servers: ['host1', 'host2', 'host3', 'host4']
-
如上,先增加要部署的新节点机器 db10
部署
新节点部署es服务:
$ ansible-playbook elasticsearch -l host4
部署完成后手动启动服务,调试:
-
db10配置有防火墙,需要为es集群机器开放9200、9300、18019端口,编辑
host_vars/db10.yml
:- '# elasticsearch' - '-A INPUT -s ip/24 -m state --state NEW -m tcp -p tcp --dport 9200 -j ACCEPT' - '-A INPUT -s ip/24 -m state --state NEW -m tcp -p tcp --dport 9300 -j ACCEPT' - '-A INPUT -s ip/24 -m state --state NEW -m tcp -p tcp --dport 18019 -j ACCEPT'
-
启动集群中其他机器es服务:
asible-playbook elasticsearch -v "action=start"
-
等待es集群恢复健康状态,查看es状态信息(等待时间比较长):
# 查看节点信息 $ curl 'host4:9200/_cat/nodes' # 查看集群健康状况 $ curl 'host4:9200/_cat/health' # 查看集群状态 $ curl 'host4:9200/_cluster_health?pretty'
-
待es集群健康状态恢复之 “green” 后进行节点的切换,去除旧节点host1。
-
集群会自动恢复至green健康状态。
-
注意: 本次迁移单节点没有迁移索引,如果集群整体迁移需要进行索引迁移,参考
附属迁移
待es恢复至green状态后需要配置logstash、kibana以及grafna(kibana和grafna之前都是从md6采集数据)。
-
ansible中更改logstash.yml中es对应的hosts如下:
- hosts: host1 gather_facts: False tags: ['elasticsearch'] vars: config: kafka: bootstrap_servers: md3:9092,md6:9092,md11:9092 group_id: elasticsearch elasticsearch: hosts: ["host1_ip:9200", "host2_ip:9200", "host3_ip:9200"]
- 重置logstash配置
ansible-playbook logstash.yml
- 启动logstash,
systemctl start logstash
- 重置logstash配置
-
更改kibana配置
/etc/kibana/kibana.yml
:elasticsearch.url: "http://ip:9200" # ip对应es集群中的一台机器
-
更改grafna数据源,将所有来自es的数据源ip更换为es机器中一台机器的ip。
检查kibana和grafna无异常,即完成迁移。