签到成功

知道了

CNDBA社区CNDBA社区

TiDB 集群扩缩容

2019-02-19 18:29 4646 0 原创 TiDB
作者: Marvinn

扩容 TiDB/TiKV 节点

例如,如果要添加两个 TiDB 节点(TiDB1,TiDB2),IP 地址为 172.16.30.90、172.16.30.91,

  1. 编辑 inventory.ini 文件,添加节点信息:

    [tidb_servers]
    TiDB ansible_host=172.16.30.86 deploy_dir=/data/tidb/deploy_tidb/tidb tidb_port=5000 tidb_status_port=10086 pump_port=8258 labels="host=ip-172-16-30-86"
    TiDB1 ansible_host=172.16.30.90 deploy_dir=/data/tidb/deploy_tidb/tidb tidb_port=5000 tidb_status_port=10086 pump_port=8258 labels="host=ip-172-16-30-90"
    TiDB2 ansible_host=172.16.30.91 deploy_dir=/data/tidb/deploy_tidb/tidb2 tidb_port=5000 tidb_status_port=10086 pump_port=8258 labels="host=ip-172-16-30-91"
    
  2. 初始化新增节点:http://www.cndba.cn/Marvinn/article/3273

    http://www.cndba.cn/Marvinn/article/3273

    ansible-playbook bootstrap.yml -l TiDB1,TiDB2
    

    : 如果 inventory.ini 中为节点配置了别名,如 node101 ansible_host=172.16.10.101,执行 ansible-playbook 时 -l 请指定别名,以下步骤类似。例如:ansible-playbook bootstrap.yml -l node101,node10

  3. 部署新增节点:

    ansible-playbook deploy.yml -l -l TiDB1,TiDB2
    
  4. 启动新节点服务:

    ansible-playbook start.yml -l -l TiDB1,TiDB2
    
  5. 更新 Prometheus 配置并重启:

    ansible-playbook rolling_update_monitor.yml --tags=prometheus
    
  6. 打开浏览器访问监控平台:`http://172.16.10.3:3000,监控整个集群和新增节点的状态。

    可使用同样的步骤添加 TiKV 节点。但如果要添加 PD 节点,则需手动更新一些配置文件。

扩容 PD 节点

例如,如果要添加一个 PD 节点(PD04),IP 地址为 172.16.30.92,可以进行如下操作:

  1. 编辑 inventory.ini 文件,添加节点信息置于 [pd_servers] 主机组最后一行

  2. 初始化新增节点:

    ansible-playbook bootstrap.yml -l PD04
    
  3. 部署新增节点:

    http://www.cndba.cn/Marvinn/article/3273

    ansible-playbook deploy.yml -l PD04
    
  4. 登录新增的 PD 节点,编辑启动脚本:{deploy_dir}/scripts/run_pd.sh

    1. 移除 --initial-cluster="xxxx" / 配置,注意这里不能在行开头加注释符 #。

    2. 添加 --join="http://172.16.30.92:2379" /,IP 地址 (172.16.10.1) 可以是集群内现有 PD IP 地址中的任意一个。

    3. 在新增 PD 节点中手动启动 PD 服务:

      {deploy_dir}/scripts/start_pd.sh
      
    4. 使用 pd-ctl 检查新节点是否添加成功:http://www.cndba.cn/Marvinn/article/3273

      /home/tidb/tidb-ansible/resources/bin/pd-ctl -u "http://172.16.10.1:2379" -d member
      
  5. 滚动升级整个集群:

    ansible-playbook rolling_update.yml
    
  6. 更新 Prometheus 配置并重启:

    ansible-playbook rolling_update_monitor.yml --tags=prometheus
    
  7. 打开浏览器访问监控平台:http://172.16.10.3:3000,监控整个集群和新增节点的状态。

缩容 TiDB 节点

例如,如果要移除一个 TiDB 节点(node5),IP 地址为 172.16.30.90,可以进行如下操作:

  1. 停止 node5 节点上的服务:http://www.cndba.cn/Marvinn/article/3273

    ansible-playbook stop.yml -l TiDB1
    
  2. 编辑 inventory.ini 文件,移除节点信息:

    [tidb_servers]
    #172.16.30.90  # 注释被移除节点
    
    [monitored_servers]
    
    #172.16.30.90  # 注释被移除节点
    
  3. 更新 Prometheus 配置并重启:http://www.cndba.cn/Marvinn/article/3273http://www.cndba.cn/Marvinn/article/3273

    ansible-playbook rolling_update_monitor.yml --tags=prometheus
    
  4. 打开浏览器访问监控平台:http://172.16.10.3:3000,监控整个集群的状态。

缩容 TiKV 节点

例如,如果要移除一个 TiKV 节点(node9),IP 地址为 172.16.30.87,可以进行如下操作:

  1. 使用 pd-ctl 从集群中移除节点:

    1. 查看 node9 节点的 store id:

      /home/tidb/tidb-ansible/resources/bin/pd-ctl -u "http://172.16.30.86:2379" -d store
      
    2. 从集群中移除 node9,假如 store id 为 10:

      /home/tidb/tidb-ansible/resources/bin/pd-ctl -u "http://172.16.30.86:2379" -d store delete 10
      
  2. 使用 Grafana 或者 pd-ctl 检查节点是否下线成功(下线需要一定时间,下线节点的状态变为 Tombstone 就说明下线成功了):

    /home/tidb/tidb-ansible/resources/bin/pd-ctl -u "http://172.16.30.86:2379" -d store 10
    
  3. 下线成功后,停止 node9 上的服务,-l 参数后要是存在别名则用别名 :

    ansible-playbook stop.yml -l  172.16.30.87
    
  4. 编辑 inventory.ini 文件,移除节点信息:

    [tikv_servers]
    #172.16.30.87  # 注释被移除节点
    
    [monitored_servers]
    #172.16.30.87  # 注释被移除节点
    
  5. 更新 Prometheus 配置并重启:

    ansible-playbook rolling_update_monitor.yml --tags=prometheus
    
  6. 打开浏览器访问监控平台:http://172.16.10.3:3000,监控整个集群的状态。http://www.cndba.cn/Marvinn/article/3273

缩容 PD 节点

例如,如果要移除一个 PD 节点(node2),IP 地址为 172.16.30.87,可以进行如下操作:

  1. 使用 pd-ctl 从集群中移除节点:

    1. 查看 node2 节点的 name:

      http://www.cndba.cn/Marvinn/article/3273

      /home/tidb/tidb-ansible/resources/bin/pd-ctl -u "http://172.16.30.86:2379" -d member
      
    2. 从集群中移除 node2,假如 name 为 pd2:

      /home/tidb/tidb-ansible/resources/bin/pd-ctl -u "http://172.16.30.86:2379" -d member delete name pd2
      
  2. 使用 Grafana 或者 pd-ctl 检查节点是否下线成功(PD 下线会很快,结果中没有 node2 节点信息即为下线成功):

    /home/tidb/tidb-ansible/resources/bin/pd-ctl -u "http://172.16.10.1:2379" -d member
    
  3. 下线成功后,停止 node2 上的服务,-l 参数后要是存在别名则用别名:

    ansible-playbook stop.yml -l 172.16.30.87
    
  4. 编辑 inventory.ini 文件,移除节点信息:

    [pd_servers]
    #172.16.30.87  # 注释被移除节点
    
    [monitored_servers]
    #172.16.30.87  # 注释被移除节点
    
  5. 滚动升级整个集群:

    ansible-playbook rolling_update.yml
    
  6. 更新 Prometheus 配置并重启:

    ansible-playbook rolling_update_monitor.yml --tags=prometheus
    
  7. 打开浏览器访问监控平台:http://172.16.10.3:3000,监控整个集群的状态。http://www.cndba.cn/Marvinn/article/3273

版权声明:本文为博主原创文章,未经博主允许不得转载。

用户评论
* 以下用户言论只代表其个人观点,不代表CNDBA社区的观点或立场
Marvinn

Marvinn

关注

路漫漫其修远兮、吾将上下而求索

  • 99
    原创
  • 0
    翻译
  • 2
    转载
  • 36
    评论
  • 访问:458395次
  • 积分:449
  • 等级:中级会员
  • 排名:第12名
精华文章
    最新问题
    查看更多+
    热门文章
      热门用户
      推荐用户
        Copyright © 2016 All Rights Reserved. Powered by CNDBA · 皖ICP备2022006297号-1·

        QQ交流群

        注册联系QQ