节点IP变化后,如何操作更新?

为提高效率,提问时请尽量提供详细背景信息,问题描述清晰可优先响应。以下信息点请尽量提供:

  • 系统版本 & kernel 版本:Centos 7.3
  • TiDB 版本:3.0.1
  • 集群节点分布:4 kv+3 pd + 3 Tidb, 分别在7台服务器上
  • 问题描述(我做了什么): 目前由于服务器网络变化,需要更新节点的IP,请问该如何操作?

目前只能通过重启来为节点更新 IP

重启可以,但是相关的配置文件要如何修改?请问有没有完整的操作步骤?

请问是通过 ansible 部署的集群吗?

对,是用ansible部署的集群.

修改 inventory.ini

ansible-playbook stop.yml

ansible-playbook deploy.yml

ansible-playbook start.yml

是必须要整个集群都要停止吗?还是如果只变化了某一台,可以指定停止某一台服务器吗?

可以只更改启动脚本,在目标机器 {deploy}/scripts 下,以修改 TiKV 为例

修改 {deploy}/scripts/run_tikv.sh

修改后运行

{deploy}/scripts/stop_tikv.sh
{deploy}/scripts/start_tikv.sh

但是启动脚本会在下次 deploy 时重新生成被覆盖,所以 inventory.ini 也要修改

是否可以这样? 1,修改inventory.ini 2,ansible-playbook deploy.yml 3,使用rolling upgrade命令生效?

可以的

TASK [wait until the PD health page is available] ******************************************************************************************************************************************************************************** FAILED - RETRYING: wait until the PD health page is available (12 retries left). FAILED - RETRYING: wait until the PD health page is available (12 retries left). FAILED - RETRYING: wait until the PD health page is available (12 retries left).

重启一直卡在这里,无法启动集群了

PD 是不能直接重启换 IP,抱歉我之前说的有误。

目前的情况最简单的方法是新启动一套 PD,然后用 pd-recover 恢复。

我现在也有这个问题。官方有操作吗?能有写一个标准的流程,这样改风险很大,稍不注意整个集群就完了。

可以按以下步骤尝试:

1、stop 三节点 pd 集群中的两个 pd 节点,剩下的节点也无法提供服务,日志中报错 [error] no etcd leader, check leader later

2、stop 剩下的节点,从 pd 日志获取 [info] init cluster id 6636904115040717817

3、从 tikv 日志获取 INFO node.rs:229: alloc store id 8

4、删除 pd 节点的 data-dir

5、选择一个或多个 pd 节点启动或在新的机器上重新部署,这里选择原有 pd 集群中的一个节点重建pd

run_pd.sh 中指定 --initial-cluster=“pd1=http://172.16.75.239:2380

执行 start_pd.sh,日志显示 [info] init cluster id 6637221545670907823,使用了新的 cluster id

6、执行 ./resources/bin/pd-recover -endpoints http://172.16.75.239:2379 -alloc-id 10 -cluster-id 6636904115040717817

store 的 alloc-id 需要取比原来已分配的 id 更大的值

重新启动该 pd,会继续使用原有的 cluster id

7、重启 tikv、tidb 集群 ansible-playbook start.yml --tags=tidb,tikv

8、将另外两个 pd 节点加入到 pd 集群中,在 run_pd.sh 中的 --initial-cluster 修改为 --join=“http://172.16.75.239:2379

执行 start_pd.sh

9、检查 member 信息 ./resources/bin/pd-ctl -u “http://172.16.75.239:2379” -d member