1、如果是在已经部署过TiDB的服务器上部署PD节点,则先需要将原来的deploy目录删掉。
2、编辑hosts.ini(中控机)
将新节点IP加入[servers]中
3、中控机编辑 inventory.ini
文件,添加节点信息置于 [pd_servers]
主机组最后一行:
[pd_servers]
原有PD服务器IP列表
新增PD服务器IP
[monitored_servers]
原有集群服务器IP列表
自增PD服务器IP
4、如果是之前未在集群中的新服务器,则需配置ssh互信(新节点)
4.1 添加tidb用户(新节点)
useradd tidb
4.2 设置登录密码(新节点)
passwd
4.3 配置sudo免密码,编辑visudo,将以下添加至文件末尾(新节点)
visudo
tidb ALL=(ALL) NOPASSWD: ALL
4.4 将公钥发送到目标机器(中控机执行)
ssh-copy-id -i ~/.ssh/id_rsa.pub 新节点IP
4.5 测试是否配置互信成功
ssh 新节点IP
如果无需密码成功登录新节点服务器,则表示ssh互信配置成功
5、首先要检查服务器的ntpd服务是否正常(每次在中控机执行相关初始化、部署、滚动升级过程中,如果看到make sure ntp服务是否正常,都检查对应服务器ntpd服务)
#ntpstat
异常:unsynchronised
polling server every 64 s
正常:synchronised to NTP server (94.130.49.186) at stratum 4
time correct to within 1167 ms
polling server every 64 s
如遇异常,则可执行一下命令,重新部署ntp服务(中控机执行):
ansible-playbook -i hosts.ini deploy_ntp.yml -u tidb -b
6、初始化新增节点(中控机执行)
ansible-playbook bootstrap.yml -l 新增节点IP
7、部署新增节点
ansible-playbook deploy.yml -l 新增节点IP
8、新增节点修改脚本{deploy_dir}/scripts/run_pd.sh
8.1 移除--initial-cluster="" \ (不能使用注释符号#,要删除)
8.2 添加--join="http://原有PD节点中的一个IP:2379" \
8.3 启动PD服务:
{deploy_dir}/scripts/start_pd.sh
9、中控机查看节点是否注册成功(中控机执行,此处只是注册pd节点)
/home/tidb/tidb-ansible/resources/bin/pd-ctl -u "http://原有PD节点中的一个IP:2379" -d member
10、在中控机滚动升级整个集群(中控机执行)
ansible-playbook rolling_update.yml
11、更新Prometheus 配置并重启(中控机执行)
ansible-playbook rolling_update_monitor.yml --tags=prometheus