使用TiDB Ansible 扩容缩容TiDB 集群,可以在不影响线上服务的情况下进行扩容和缩容。本文带大家走进TiDB的扩缩容场景实验。
当前tidb拓扑结构如下:
Name | Host ip | Service |
Ti1 | 192.168.37.132 | Tidb,pd |
Ti2 | 192.168.37.128 | Tikv1 |
Ti3 | 192.168.37.129 | Tikv2 |
Ti4 | 192.168.37.130 | Tikv3 |
1、扩容tidb/tikv(可使用同样的步骤添加 TiKV 节点,tikv不演示)扩容tidb节点(IP:192.168.37.131)
编辑 inventory.ini 文件,添加节点信息:
初始化新增节点:
ansible-playbookbootstrap.yml -l 192.168.37.131
部署新增节点:
ansible-playbookdeploy.yml -l 192.168.37.131
启动新节点服务:
ansible-playbookstart.yml -l 192.168.37.131
更新 Prometheus 配置并重启:
ansible-playbookrolling_update_monitor.yml --tags=prometheus
打开浏览器访问监控平台:http://192.168.37.132:3000,监控整个集群和新增节点的状态
可以看到新扩容tidb节点已添加到tidb集群,tidb扩容成功。
2、扩容pd
编辑 inventory.ini 文件,添加节点信息:
本次添加pd节点(192.168.37.133)
初始化新增节点:
ansible-playbookbootstrap.yml -l 192.168.37.133
部署新增节点:
ansible-playbookdeploy.yml -l 192.168.37.133
登录新增的 PD 节点,编辑启动脚本:{deploy_dir}/scripts/run_pd.sh
D1:移除--initial-cluster="xxxx" 配置,注意这里不能在行开头加注释符#。
D2:添加 --join="http://192.168.37.132:2379" ,IP地址(192.168.37.132)可以是集群内现有PD IP 地址中的任意一个。
D3: 在新增PD 节点中手动启动PD 服务:
{deploy_dir}/scripts/start_pd.sh
D4: 使用pd-ctl 检查新节点是否添加成功:
/home/tidb/tidb-ansible/resources/bin/pd-ctl-u "http://192.168.37.132:2379" -d member
可以看到pd节点已添加pd集群里面。
滚动升级整个集群(耗时很长,按照我的机器配置添加一个节点,需要10分钟左右):
ansible-playbookrolling_update.yml
启动监控服务:
ansible-playbookstart.yml -l 192.168.37.133
更新 Prometheus 配置并重启:
ansible-playbookrolling_update_monitor.yml --tags=prometheus
打开浏览器访问监控平台:http://192.168.37.132:3000,监控整个集群和新增节点的状态
从监控面班可以看到,pd已扩容成功。
1、缩容tidb
移除tidb节点(192.168.37.131)
停止节点上的服务
ansible-playbookstop.yml -l 192.168.37.131
编辑 inventory.ini 文件,移除节点信息(这两个位置)
更新 Prometheus 配置并重启:
ansible-playbookrolling_update_monitor.yml --tags=prometheus
打开浏览器访问监控平台:http://192.168.37.132:3000,监控整个集群和新增节点的状态
192.168.37.131节点信息已没有了,缩容成功。
2、缩容tikv
缩容tikv(192.168.37.131)
使用 pd-ctl 从集群中移除节点
A1:查看192.168.37.131节点的store id
/home/tidb/tidb-ansible/resources/bin/pd-ctl-u "http://192.168.37.132:2379" -d store (通过pdip接口)
A2:从集群中移除192.168.37.131节点
/home/tidb/tidb-ansible/resources/bin/pd-ctl-u "http://192.168.37.132:2379" -d store delete 1
使用 Grafana 或者 pd-ctl 检查节点是否下线成功
/home/tidb/tidb-ansible/resources/bin/pd-ctl-u "http://192.168.37.132:2379" -d store delete 1
下线成功后,停止节点(192.168.37.131)上的服务
ansible-playbookstop.yml -l 192.168.37.131
编辑 inventory.ini 文件,移除节点信息
注释掉要缩容的tikv节点
更新 Prometheus 配置并重启
ansible-playbookrolling_update_monitor.yml --tags=prometheus
打开浏览器访问监控平台:http://192.168.37.132:3000,监控整个集群和新增节点的状态
查看监控列表发现192.168.37.131已缩容。
3、缩容pd
缩容pd(192.168.37.133)
使用 pd-ctl 从集群中移除节点
A1:查看node2 节点的name
/home/tidb/tidb-ansible/resources/bin/pd-ctl-u "http://192.168.37.132:2379" -d member
A2:从集群中移除node2,假如name 为pd2
/home/tidb/tidb-ansible/resources/bin/pd-ctl-u "http://192.168.37.132:2379" -d member delete namepd_ti5
使用 pd-ctl 检查节点是否下线成功(PD 下线会很快,结果中没有192.168.37.133节点信息即为下线成功)
/home/tidb/tidb-ansible/resources/bin/pd-ctl -u"http://192.168.37.132:2379" -d member
下线成功后,停止192.168.37.133上的服务
ansible-playbook stop.yml -l 192.168.37.133
编辑 inventory.ini 文件,移除节点信息
把192.168.37.133注释掉
滚动升级整个集群
ansible-playbookrolling_update.yml
更新 Prometheus 配置并重启
ansible-playbookrolling_update_monitor.yml --tags=prometheus
打开浏览器访问监控平台:http://192.168.37.132:3000,监控整个集群和新增节点的状态
192.168.37.133的PD已缩容。
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/130143.html
摘要:临近年中,银行重要系统的建设进入投产冲刺阶段,本次上线又有多个系统对接,为了优化集群资源分配,引发了这次分享的主题线上系统的缩容的迁移,本文主要针对本次的缩容迁移过程进行梳理总结。 作者:Dan本文转载自公众号「白噪声OG」。 经历了上礼拜漫长的上线周期,终于有时间总结一下期间发生的故事。TiDB 是一款非常优秀的国产分布式 NewSQL 数据库,因其支持水平扩展性、强一致性、高可用性...
摘要:作为一个开源的分布式数据库产品,具有多副本强一致性的同时能够根据业务需求非常方便的进行弹性伸缩,并且扩缩容期间对上层业务无感知。另外本身维护了数据多副本,这点和分布式文件系统的多副本是有重复的。 作者:邓栓来源:细说云计算 作为一款定位在 Cloud-native 的数据库,现如今 TiDB 在云整合上已取得了阶段性的进展。日前 Cloud TiDB 产品在 UCloud 平台正式开启...
阅读 1246·2023-01-11 13:20
阅读 1554·2023-01-11 13:20
阅读 1007·2023-01-11 13:20
阅读 1673·2023-01-11 13:20
阅读 3967·2023-01-11 13:20
阅读 2509·2023-01-11 13:20
阅读 1304·2023-01-11 13:20
阅读 3472·2023-01-11 13:20