为提高效率,请提供以下信息,问题描述清晰能够更快得到解决:
【TiDB 版本】
v4.0.10
【问题描述】
今天尝试kill掉pd的leader节点的pd进程,发现组件状态都是down,但是很快重新启动了,,这个不应该是剩下两个还是好的,重新选择pd的leader角色嘛?怎么会都变为down的呢?tikv也全是N/A?我想知道一下这里面的具体的原因以及选择机制等,谢谢
若提问为性能优化、故障排查类问题,请下载脚本运行。终端输出的打印结果,请务必全选并复制粘贴上传。
为提高效率,请提供以下信息,问题描述清晰能够更快得到解决:
【TiDB 版本】
v4.0.10
【问题描述】
今天尝试kill掉pd的leader节点的pd进程,发现组件状态都是down,但是很快重新启动了,,这个不应该是剩下两个还是好的,重新选择pd的leader角色嘛?怎么会都变为down的呢?tikv也全是N/A?我想知道一下这里面的具体的原因以及选择机制等,谢谢
若提问为性能优化、故障排查类问题,请下载脚本运行。终端输出的打印结果,请务必全选并复制粘贴上传。
方便上传以下所有的操作步骤吗?
我按照您的思路做了一个简单的测试
Starting component `cluster`: /root/.tiup/components/cluster/v1.3.2/tiup-cluster display tidb-c3-v409
Cluster type: tidb
Cluster name: tidb-c3-v409
Cluster version: v4.0.9
SSH type: builtin
Dashboard URL: http://192.168.12.22:32379/dashboard
ID Role Host Ports OS/Arch Status Data Dir Deploy Dir
-- ---- ---- ----- ------- ------ -------- ----------
192.168.12.24:39093 alertmanager 192.168.12.24 39093/39094 linux/x86_64 Up /opt/tidb-c3/data/alertmanager-29093 /opt/tidb-c3/alertmanager-29093
192.168.12.24:33000 grafana 192.168.12.24 33000 linux/x86_64 Up - /opt/tidb-c3/grafana-33000
192.168.12.22:32379 pd 192.168.12.22 32379/32380 linux/x86_64 Up|UI /opt/tidb-c3/data/pd-32379 /opt/tidb-c3/pd-32379
192.168.12.23:32379 pd 192.168.12.23 32379/32380 linux/x86_64 Up /opt/tidb-c3/data/pd-32379 /opt/tidb-c3/pd-32379
192.168.12.24:32379 pd 192.168.12.24 32379/32380 linux/x86_64 Up|L /opt/tidb-c3/data/pd-32379 /opt/tidb-c3/pd-32379
192.168.12.24:39090 prometheus 192.168.12.24 39090 linux/x86_64 Up /opt/tidb-c3/data/prometheus-39090 /opt/tidb-c3/prometheus-39090
192.168.12.22:34000 tidb 192.168.12.22 34000/32080 linux/x86_64 Up - /opt/tidb-c3/tidb-34000
192.168.12.23:34000 tidb 192.168.12.23 34000/32080 linux/x86_64 Up - /opt/tidb-c3/tidb-34000
192.168.12.24:34000 tidb 192.168.12.24 34000/32080 linux/x86_64 Up - /opt/tidb-c3/tidb-34000
192.168.12.22:32160 tikv 192.168.12.22 32160/32180 linux/x86_64 Up /opt/tidb-c3/data/tikv-32160 /opt/tidb-c3/tikv-32160
192.168.12.23:32160 tikv 192.168.12.23 32160/32180 linux/x86_64 Up /opt/tidb-c3/data/tikv-32160 /opt/tidb-c3/tikv-32160
192.168.12.24:32160 tikv 192.168.12.24 32160/32180 linux/x86_64 Up /opt/tidb-c3/data/tikv-32160 /opt/tidb-c3/tikv-32160
Total nodes: 12
停止 leader 的 pd
[root@r24 ~]# systemctl stop pd-32379
[root@r20 topology]# tiup cluster display tidb-c3-v409
Found cluster newer version:
The latest version: v1.3.4
Local installed version: v1.3.2
Update current component: tiup update cluster
Update all components: tiup update --all
Starting component `cluster`: /root/.tiup/components/cluster/v1.3.2/tiup-cluster display tidb-c3-v409
Cluster type: tidb
Cluster name: tidb-c3-v409
Cluster version: v4.0.9
SSH type: builtin
Dashboard URL: http://192.168.12.22:32379/dashboard
ID Role Host Ports OS/Arch Status Data Dir Deploy Dir
-- ---- ---- ----- ------- ------ -------- ----------
192.168.12.24:39093 alertmanager 192.168.12.24 39093/39094 linux/x86_64 Up /opt/tidb-c3/data/alertmanager-29093 /opt/tidb-c3/alertmanager-29093
192.168.12.24:33000 grafana 192.168.12.24 33000 linux/x86_64 Up - /opt/tidb-c3/grafana-33000
192.168.12.22:32379 pd 192.168.12.22 32379/32380 linux/x86_64 Up|UI /opt/tidb-c3/data/pd-32379 /opt/tidb-c3/pd-32379
192.168.12.23:32379 pd 192.168.12.23 32379/32380 linux/x86_64 Up|L /opt/tidb-c3/data/pd-32379 /opt/tidb-c3/pd-32379
192.168.12.24:32379 pd 192.168.12.24 32379/32380 linux/x86_64 Down /opt/tidb-c3/data/pd-32379 /opt/tidb-c3/pd-32379
192.168.12.24:39090 prometheus 192.168.12.24 39090 linux/x86_64 Up /opt/tidb-c3/data/prometheus-39090 /opt/tidb-c3/prometheus-39090
192.168.12.22:34000 tidb 192.168.12.22 34000/32080 linux/x86_64 Up - /opt/tidb-c3/tidb-34000
192.168.12.23:34000 tidb 192.168.12.23 34000/32080 linux/x86_64 Up - /opt/tidb-c3/tidb-34000
192.168.12.24:34000 tidb 192.168.12.24 34000/32080 linux/x86_64 Up - /opt/tidb-c3/tidb-34000
192.168.12.22:32160 tikv 192.168.12.22 32160/32180 linux/x86_64 Up /opt/tidb-c3/data/tikv-32160 /opt/tidb-c3/tikv-32160
192.168.12.23:32160 tikv 192.168.12.23 32160/32180 linux/x86_64 Up /opt/tidb-c3/data/tikv-32160 /opt/tidb-c3/tikv-32160
192.168.12.24:32160 tikv 192.168.12.24 32160/32180 linux/x86_64 Up /opt/tidb-c3/data/tikv-32160 /opt/tidb-c3/tikv-32160
Total nodes: 12
我是使用的kill -9 进程号,直接杀掉的。
你的那个停掉的步骤:systemctl stop pd-32379和tiup cluster stop pd -N 192.168.12.24:32379的效果一样嘛?这两个的区别是?
不一样。 你可以看一下 kill -9 以后又会重启。因为这是一个 systemd 的守护进程。pd 的进程会一直 fork 在那里。被 kill 掉就会重启。
嗯,是的,kill掉后,会被重新启动的,
按照你的方式使用 kill 命令重新做了一下,
Starting component `cluster`: /root/.tiup/components/cluster/v1.3.2/tiup-cluster display tidb-c3-v409
Cluster type: tidb
Cluster name: tidb-c3-v409
Cluster version: v4.0.9
SSH type: builtin
Dashboard URL: http://192.168.12.22:32379/dashboard
ID Role Host Ports OS/Arch Status Data Dir Deploy Dir
-- ---- ---- ----- ------- ------ -------- ----------
192.168.12.24:39093 alertmanager 192.168.12.24 39093/39094 linux/x86_64 Up /opt/tidb-c3/data/alertmanager-29093 /opt/tidb-c3/alertmanager-29093
192.168.12.24:33000 grafana 192.168.12.24 33000 linux/x86_64 Up - /opt/tidb-c3/grafana-33000
192.168.12.22:32379 pd 192.168.12.22 32379/32380 linux/x86_64 Up|UI /opt/tidb-c3/data/pd-32379 /opt/tidb-c3/pd-32379
192.168.12.23:32379 pd 192.168.12.23 32379/32380 linux/x86_64 Up /opt/tidb-c3/data/pd-32379 /opt/tidb-c3/pd-32379
192.168.12.24:32379 pd 192.168.12.24 32379/32380 linux/x86_64 Up|L /opt/tidb-c3/data/pd-32379 /opt/tidb-c3/pd-32379
192.168.12.24:39090 prometheus 192.168.12.24 39090 linux/x86_64 Up /opt/tidb-c3/data/prometheus-39090 /opt/tidb-c3/prometheus-39090
192.168.12.22:34000 tidb 192.168.12.22 34000/32080 linux/x86_64 Up - /opt/tidb-c3/tidb-34000
192.168.12.23:34000 tidb 192.168.12.23 34000/32080 linux/x86_64 Up - /opt/tidb-c3/tidb-34000
192.168.12.24:34000 tidb 192.168.12.24 34000/32080 linux/x86_64 Up - /opt/tidb-c3/tidb-34000
192.168.12.22:32160 tikv 192.168.12.22 32160/32180 linux/x86_64 Up /opt/tidb-c3/data/tikv-32160 /opt/tidb-c3/tikv-32160
192.168.12.23:32160 tikv 192.168.12.23 32160/32180 linux/x86_64 Up /opt/tidb-c3/data/tikv-32160 /opt/tidb-c3/tikv-32160
192.168.12.24:32160 tikv 192.168.12.24 32160/32180 linux/x86_64 Up /opt/tidb-c3/data/tikv-32160 /opt/tidb-c3/tikv-32160
Total nodes: 12
kill 掉 192.168.12.24 上的 pd leader
[root@r24 ~]# kill -9 pgrep pd-server
立即查看一下 cluster 的状态
[root@r20 topology]# tiup cluster display tidb-c3-v409
Found cluster newer version:
The latest version: v1.3.4
Local installed version: v1.3.2
Update current component: tiup update cluster
Update all components: tiup update --all
Starting component `cluster`: /root/.tiup/components/cluster/v1.3.2/tiup-cluster display tidb-c3-v409
Cluster type: tidb
Cluster name: tidb-c3-v409
Cluster version: v4.0.9
SSH type: builtin
ID Role Host Ports OS/Arch Status Data Dir Deploy Dir
-- ---- ---- ----- ------- ------ -------- ----------
192.168.12.24:39093 alertmanager 192.168.12.24 39093/39094 linux/x86_64 Up /opt/tidb-c3/data/alertmanager-29093 /opt/tidb-c3/alertmanager-29093
192.168.12.24:33000 grafana 192.168.12.24 33000 linux/x86_64 Up - /opt/tidb-c3/grafana-33000
192.168.12.22:32379 pd 192.168.12.22 32379/32380 linux/x86_64 Down /opt/tidb-c3/data/pd-32379 /opt/tidb-c3/pd-32379
192.168.12.23:32379 pd 192.168.12.23 32379/32380 linux/x86_64 Down /opt/tidb-c3/data/pd-32379 /opt/tidb-c3/pd-32379
192.168.12.24:32379 pd 192.168.12.24 32379/32380 linux/x86_64 Down /opt/tidb-c3/data/pd-32379 /opt/tidb-c3/pd-32379
192.168.12.24:39090 prometheus 192.168.12.24 39090 linux/x86_64 Up /opt/tidb-c3/data/prometheus-39090 /opt/tidb-c3/prometheus-39090
192.168.12.22:34000 tidb 192.168.12.22 34000/32080 linux/x86_64 Up - /opt/tidb-c3/tidb-34000
192.168.12.23:34000 tidb 192.168.12.23 34000/32080 linux/x86_64 Up - /opt/tidb-c3/tidb-34000
192.168.12.24:34000 tidb 192.168.12.24 34000/32080 linux/x86_64 Up - /opt/tidb-c3/tidb-34000
192.168.12.22:32160 tikv 192.168.12.22 32160/32180 linux/x86_64 N/A /opt/tidb-c3/data/tikv-32160 /opt/tidb-c3/tikv-32160
192.168.12.23:32160 tikv 192.168.12.23 32160/32180 linux/x86_64 N/A /opt/tidb-c3/data/tikv-32160 /opt/tidb-c3/tikv-32160
192.168.12.24:32160 tikv 192.168.12.24 32160/32180 linux/x86_64 N/A /opt/tidb-c3/data/tikv-32160 /opt/tidb-c3/tikv-32160
Total nodes: 12
大概三秒以后在查询一下 cluster 的状态
[root@r20 topology]# tiup cluster display tidb-c3-v409
Found cluster newer version:
The latest version: v1.3.4
Local installed version: v1.3.2
Update current component: tiup update cluster
Update all components: tiup update --all
Starting component `cluster`: /root/.tiup/components/cluster/v1.3.2/tiup-cluster display tidb-c3-v409
Cluster type: tidb
Cluster name: tidb-c3-v409
Cluster version: v4.0.9
SSH type: builtin
Dashboard URL: http://192.168.12.22:32379/dashboard
ID Role Host Ports OS/Arch Status Data Dir Deploy Dir
-- ---- ---- ----- ------- ------ -------- ----------
192.168.12.24:39093 alertmanager 192.168.12.24 39093/39094 linux/x86_64 Up /opt/tidb-c3/data/alertmanager-29093 /opt/tidb-c3/alertmanager-29093
192.168.12.24:33000 grafana 192.168.12.24 33000 linux/x86_64 Up - /opt/tidb-c3/grafana-33000
192.168.12.22:32379 pd 192.168.12.22 32379/32380 linux/x86_64 Up|L|UI /opt/tidb-c3/data/pd-32379 /opt/tidb-c3/pd-32379
192.168.12.23:32379 pd 192.168.12.23 32379/32380 linux/x86_64 Up /opt/tidb-c3/data/pd-32379 /opt/tidb-c3/pd-32379
192.168.12.24:32379 pd 192.168.12.24 32379/32380 linux/x86_64 Up /opt/tidb-c3/data/pd-32379 /opt/tidb-c3/pd-32379
192.168.12.24:39090 prometheus 192.168.12.24 39090 linux/x86_64 Up /opt/tidb-c3/data/prometheus-39090 /opt/tidb-c3/prometheus-39090
192.168.12.22:34000 tidb 192.168.12.22 34000/32080 linux/x86_64 Up - /opt/tidb-c3/tidb-34000
192.168.12.23:34000 tidb 192.168.12.23 34000/32080 linux/x86_64 Up - /opt/tidb-c3/tidb-34000
192.168.12.24:34000 tidb 192.168.12.24 34000/32080 linux/x86_64 Up - /opt/tidb-c3/tidb-34000
192.168.12.22:32160 tikv 192.168.12.22 32160/32180 linux/x86_64 Up /opt/tidb-c3/data/tikv-32160 /opt/tidb-c3/tikv-32160
192.168.12.23:32160 tikv 192.168.12.23 32160/32180 linux/x86_64 Up /opt/tidb-c3/data/tikv-32160 /opt/tidb-c3/tikv-32160
192.168.12.24:32160 tikv 192.168.12.24 32160/32180 linux/x86_64 Up /opt/tidb-c3/data/tikv-32160 /opt/tidb-c3/tikv-32160
Total nodes: 12
挂掉 pd 的 leader 以后会发生选举 pd 的选举,冲新选择一个 leader。
在我的虚拟机环境中大概是两三秒的时间。
在这个选举时间内,pd 没有办法对外提供服务,所以是 down 的状态。
pd 里面存储了集群的元数据,所以有状态的 kv 节点也是没有办法对外提供服务的。
重新做一个新的实验,
192.168.12.22:32379 pd 192.168.12.22 32379/32380 linux/x86_64 Up|L|UI /opt/tidb-c3/data/pd-32379 /opt/tidb-c3/pd-32379
192.168.12.23:32379 pd 192.168.12.23 32379/32380 linux/x86_64 Up /opt/tidb-c3/data/pd-32379 /opt/tidb-c3/pd-32379
192.168.12.24:32379 pd 192.168.12.24 32379/32380 linux/x86_64 Up /opt/tidb-c3/data/pd-32379 /opt/tidb-c3/pd-32379
当停掉 r22 节点上的 pd 服务,kill 以后马上使用 systemd 停止 fork 进程
[root@r22 tikv-32160]# kill -9 pgrep pd-server
[root@r22 tikv-32160]# systemctl stop pd-32379
192.168.12.22:32379 pd 192.168.12.22 32379/32380 linux/x86_64 Down|UI /opt/tidb-c3/data/pd-32379 /opt/tidb-c3/pd-32379
192.168.12.23:32379 pd 192.168.12.23 32379/32380 linux/x86_64 Up|L /opt/tidb-c3/data/pd-32379 /opt/tidb-c3/pd-32379
192.168.12.24:32379 pd 192.168.12.24 32379/32380 linux/x86_64 Up /opt/tidb-c3/data/pd-32379 /opt/tidb-c3/pd-32379
嗯,是的,我的虚拟机也是差多不这个时间,这个都down是因为内部leader选取造成的是吧!由于pd选取时,tikv连接不了pd,tikv也就无法对外服务了,是吧!
那么systemctl stop pd-32379和tiup cluster stop pd -N 192.168.12.24:32379的具体区别是什么呢?
tiup cluster stop pd -N 192.168.12.24:32379 本质上就是在 systemctl 的基础上套了个壳。
哦,ok,好的,其实效果是一样的,是吧。
这个:当停掉 r22 节点上的 pd 服务,kill 以后马上使用 systemd 停止 fork 进程
我的理解是:直接将这个节点的组件停掉,这个pd步参与选举,所以不会出现3个都down掉的情况?还是说,另外两个pd组件也会down,只不过时间很短,没有2-3s。
我拖过 tiup 停止 tidb 的服务
[root@r20 topology]# tiup cluster stop tidb-c3-v409 -N192.168.12.23:34000
Found cluster newer version:
The latest version: v1.3.4
Local installed version: v1.3.2
Update current component: tiup update cluster
Update all components: tiup update --all
Starting component cluster
: /root/.tiup/components/cluster/v1.3.2/tiup-cluster stop tidb-c3-v409 -N192.168.12.23:34000
tidb-c3-v409
successfully可以从 syslog 里面捕捉到 systemd 的消息
Mar 11 01:03:43 r23 systemd[1]: Started User Manager for UID 4001.
Mar 11 01:03:43 r23 systemd[1]: Reloading.
Mar 11 01:03:43 r23 systemd[1]: Stopping tidb service…
Mar 11 01:03:44 r23 systemd[1]: tidb-34000.service: Succeeded.
Mar 11 01:03:44 r23 systemd[1]: Stopped tidb service.
Mar 11 01:03:44 r23 systemd[1]: session-1000.scope: Succeeded.
Mar 11 01:03:44 r23 systemd-logind[986]: Session 1000 logged out. Waiting for processes to exit.
Mar 11 01:03:44 r23 systemd-logind[986]: Removed session 1000.
Mar 11 01:03:44 r23 systemd[1]: Stopping User Manager for UID 4001…
哦,好的,其实这也就说tiup cluster stop pd -N 192.168.12.24:32379实际上内部还是调用的systemctl stop pd-32379来停止程序,上面的这个,是我这么理解的嘛?
·是这样的。
好的,先谢谢了
关于这个问题,你可以做一个这样的实验
中控机上 [root@r20 topology]# watch -n1 tiup cluster display tidb-c3-v409
一直观察集群的状态(这个窗口要一直打开)
主节点上 kill 掉进程然后马上停止 systemd 的服务。
你会发现,其实还是三个节点都是 down 的状态,大概两秒钟。
然后两个节点重新起来。
嗯,好的,主节点上 kill 掉进程然后马上停止 systemd 的服务,在这里面涉及到了pd的leader的重新选取,因此会出现2-3s集群的pd组件down状态,是吧
是这样的
嗯,好的,三克油啦