暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

TiDB集群在线服务器停机维护主机资源

IT那活儿 2022-08-10
959

点击上方“IT那活儿”公众号,关注后了解更多内容,不管IT什么活儿,干就完了!!!


  
TiDB集群环境随着业务的增长,现每台虚拟服务器(8C+16G)资源已经难以满足业务需求,需对现有的虚拟服务器进行纵向扩容操作,将虚拟服务器资源扩展到16C+32G。
生产环境集群混合部署如下:

由于TiDB-server层是无状态服务,并且有Haproxy进行流量负载均衡,TiKV和PD层有Raft协议的高可用保障,停止单台服务器进行维护对整个集群运行没有太大影响,但是集群会存在有某些SQL访问、在线DDL延迟抖动的情况,总体影响不是太大。延迟抖动主要有以下原因:

  • 存在TiKV层Leader region正好在停机维护的服务器上,从而出现Raft重新选择Leader region,业务已经在运行期间部分SQL在访问中由于找不到原Leader信息会出现Backoff的情况,从而SQL访问伴随有延迟的情况。
  • PD层Leader的转移类似TiKV,TiDB-server层中owner转移需重新选择新owner会对正在执行中DDL有影响。

在线停单台服务器升级CPU、内存的大致维护流程:
  • 在停单台服务器进行维护操作之前梳理DM同步到TiDB的任务,确保同步不失败。
  • 调整max-store-down-time参数(默认30分钟,如果停机时间超过30分钟,建议调大此参数)。
  • Tiup正常停止该节点的TiKV、PD、TiDB实例。
  • 服务器停机。
  • 服务器维护。
  • 服务器启动。
  • 启动该节点的TiKV、PD、TiDB实例。
  • 观察Grafana PD相关的metric信息以及Dashboard访问情况。
  • 应用检查业务使用情况。

停TiKV组件

通常情况下,线上集群对 TiKV 的部署是单机单实例或者单机多实例,在对服务器做临时维护时,需要根据部署情况来进行相应的处理,由于现网为单机单实例只做对应的描述;在实际维护中TiKV节点下线过程中Leader region调度对集群的服务影响很小,并且Leader region调度速度也较快。

注:以下运维命令均为其他环境,实际需根据情况对应进行命令更新。

单机单实例临时关机维护步骤:

  • 修改 max-store-down-time 超过服务器维护时间,默认 30 min,保证在服务器维护期间不发生补副本行为(需要注意维护完成后将参数恢复。)

tiup ctl:v5.0.0 pd -u http://{PDIP}:2379 config set max-store-down-time 60m // 
修改为60分钟,根据实际情况而定

  • 检查是否有 label,确保没有标签(如果存在标签需要单独分析是否为单机多实例的情况。)

tiup ctl:v5.0.0 pd -u http://{PDIP}:2379 label

  • 检查所有服务器上store的情况,找到该服务器的对应的store id。
tiup ctl:v5.0.0 pd -u http://{PDIP}:2379 store
  • 迁移该服务器上所有 store 的 leader到其他节点。

tiup ctl:v5.0.0 pd -u http://{PDIP}:2379 scheduler add evict-leader-scheduler 2 // 
把 store 2 上的所有 region 的 leader 从 store 2 调度出去

  • 检查 leader 情况:

tiup ctl:v5.0.0 pd -u http://{PDIP}:2379 store 2  // 
检查该服务器所有 tikv 节点上的 leader count,leader count数量为 0 进行下一步,否则等待为0

  • 停止Tikv组件:

tiup cluster stop tidb-test -N {TiKVIP}:20160

停PD组件

通常大多数的线上集群有3 或5个PD节点,如果维护的服务器上有PD 组件,需要具体考虑节点是 leader 还是 follower(以下1 和 2 两部分),关闭 follower 对集群运行没有任何影响,关闭 leader 需要先切换,并在切换时可能存在短暂性能抖动。

1. 当前服务器包括一个 PD follower 节点且集群 PD 总数 >= 3

  • 检查当前待操作 PD 集群节点信息:

tiup ctl:v5.0.0 pd -u http://{PDIP}:2379 member 显示当前所有成员
tiup ctl:v5.0.0 pd -u http://{PDIP}:2379 member leader show //显示当前Leader成员

  • 停止当前待操作 PD follower 节点:

tiup cluster stop tidb-test -N {PDIP}:2379

2. 当前服务器包括一个 PD leader 节点且集群 PD 总数 >= 3

  • 检查当前待操作 PD 集群节点信息:

tiup ctl:v5.0.0 pd -u http://{PDIP}:2379 member //显示当前所有成员
  • 检查当前待操作 PD 节点角色:

tiup ctl:v5.0.0 pd -u http://{PDIP}:2379 member leader show //显示当前leader 的信息
  • 迁移 leader 节点:

tiup ctl:v5.0.0 pd -u http://{PDIP}:2379 member leader transfer pd-id // 将 leader 迁移到指定成员pd-id
  • 检查迁移结果:

tiup ctl:v5.0.0 pd -u http://{PDIP}:2379 member leader show
tiup ctl:v5.0.0 pd -u http://{PDIP}:2379 member //显示当前所有成员,迁移成功进行下一步,否则等待

  • 在待维护服务器上执行停PD节点:

tiup cluster stop tidb-test -N {PDIP}:2379
  • leader 迁回(可选):

tiup ctl:v5.0.0 pd -u http://{PDIP}:2379 member leader transfer pd-id // 将 leader 迁移到指定成员

停TiDB-server组件

一般情况下,线上使用TiDB会搭配负载均衡使用,在停掉Tidb-server组件之前需确定负载均衡是否需进行对应调整。

1. TiDB-server实例维护

停实例:
tiup cluster stop tidb-test -N {TiDBIP}:4000
2. 风险点
在进行停止TiDB-server 节点时,如果当前节点为 owner 节点(curl http://{TiDBIP}:10080/info )且正在进行 DDL 变更,直接停止TiDB-server节点会进行新的 owner 选举,DDL变更会变慢。另外如果当前节点非 owner 节点,在停掉之后有 DDL 操作时,每个状态变更时也会去访问该下线的节点,会对集群 DDL 操作有影响,因此尽量避免在临时停止TiDB-server时以及期间进行DDL操作

在实际生产环境中,TiDB集群经常会和DM(数据同步工具)配合使用,在停单台服务器进行维护操作之前需认真梳理DM同步到TiDB的任务,如果DM工具的目标端是直接连接的TiDB-server,在停服务器维护之前需要对DM工具的Task任务进行调整,停掉DM任务连接的TiDB-server节点会导致同步任务失败。

停grafana、alertmanager、prometheus

中控节点包含多个组件,在停服务器需添加如下组件操作:
  • 停grafana:
tiup cluster stop tidb-test -N {grafanaIP}:3000
  • 停alertmanager:

tiup cluster stop tidb-test -N {alertmanagerIP}:9093
  • 停止prometheus:

tiup cluster stop tidb-test -N {prometheusIP}:9090

关停服务器前检查

  • 检查集群状态,对应的服务器的组件是否都完全停掉。

tiup cluster display tidb-test

停服务器升级CPU和内存并重新启动。

启动服务器后检查集群状态

  • 检查集群状态,是否都正常。

tiup cluster display tidb-test

所有节点都完成后调整参数

  • 修改 max-store-down-time 超过服务器维护时间,默认 30 min,保证在服务器维护期间不发生补副本行为(需要注意维护完成后将参数恢复。)

tiup ctl:v5.0.0 pd -u http://{PDIP}:2379 config set max-store-down-time 30m // 默认30分钟


本文作者:陈 聪(上海新炬王翦团队)

本文来源:“IT那活儿”公众号

文章转载自IT那活儿,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论