PD端口无法起来

新搭建的TiDB测试集群,版本v3.0.2,TiDB和PD共用一台,TiKV三台。 在启动集群的时候,碰到PD端口总是起不来。 查看PD日志:

[INFO] [systime_mon.go:25] [“start system time monitor”] [INFO] [etcd.go:117] [“configuring peer listeners”] [listen-peer-urls="[http://192.168.73.101:2380]"] [INFO] [etcd.go:358] [“closing etcd server”] [name=pd_tidb] [data-dir=/data/tidb/deploy/data.pd] [advertise-peer-urls="[http://192.168.73.101:2380]"] [advertise-client-urls="[http://192.168.73.101:2379]"] [INFO] [etcd.go:362] [“closed etcd server”] [name=pd_tidb] [data-dir=/data/tidb/deploy/data.pd] [advertise-peer-urls="[http://192.168.73.101:2380]"] [advertise-client-urls="[http://192.168.73.101:2379]"] [FATAL] [main.go:111] [“run server failed”] [error=“listen tcp 192.168.73.101:2380: bind: cannot assign requested address”] [stack=“github.com/pingcap/log.Fatal /home/jenkins/workspace/release_tidb_3.0/go/pkg/mod/github.com/pingcap/log@v0.0.0-20190715063458-479153f07ebd/global.go:59 main.main /home/jenkins/workspace/release_tidb_3.0/go/src/github.com/pingcap/pd/cmd/pd-server/main.go:111 runtime.main /usr/local/go/src/runtime/proc.go:200”]

其中192.168.73.101为PD和TiDB所在的服务器。其它服务比如prometheus等在192.168.73.101上是能正常启动的。

另外,前段时间部署过一个TiDB v3.0.1集群,也碰到过TiKV端口无法起来的问题 ,但是重试几次后又好了。

麻烦帮忙定位下PD端口无法起来的问题,谢谢!

看起来是 IP 配置问题,检查下是否有端口冲突或者服务冲突的情况。

不存在端口冲突或者服务冲突的情况,集群第一次启动端口就起不来,机器都是新部署的。

刚又特意重启了机器,同时确认是否有相同的服务或者端口被占的情况,都不存在。

在 PD 服务器上执行 start_pd.sh 手动启动试一下,如果启动失败,看下日志中什么报错信息。

也是报一样的错误,和我之前贴的日志错误一样。

检查下是否是因为 NAT 原因导致无法分配请求的地址。

我觉得咱俩的问题比较像,你看一下是不是这个问题

重新部署容器后异常 这个问题是 pump 没启动 就设置了 开启binlog导致的
[tidb@test1 tidb-ansible]$ ansible-playbook start.yml
fatal: [192.168.180.46]: FAILED! => {"changed": false, "elapsed": 300, "msg": "the TiDB port 4000 is not up"}
PLAY [grafana_servers] **************************************************************************************************************************************************************************
        to retry, use: --limit @/home/tidb/tidb-ansible/retry_files/start.retry

PLAY RECAP **************************************************************************************************************************************************************************************
192.168.180.46             : ok=27   changed=0    unreachable=0    failed=1
192.168.180.47             : ok=10   changed=0    unreachable=0    failed=1
192.168.180.48             : ok=13   changed=0    unreachable=0    failed=1
localhost                  : ok=7    changed=4    unreachable=0    failed=0


ERROR MESSAGE SUMMARY ***************************************************************************************************************************************************************************
[192.168.180.47]: Ansible FAILED! => playbook: start.yml; TASK: wait until the PD port is up; message: {"changed": false, "elapsed": 300, "msg": "the PD port 2379 is not up"}

[192.168.180.48]: Ansible FAILED! => playbook: start.yml; TASK: wait until the TiKV port is up; message: {"changed": false, "elapsed": 300, "msg": "the TiKV port 20160 is not up"}

[192.168.180.46]: Ansible FAILED! => playbook: start.yml; TASK: wait until the TiDB port is up; message: {"changed": false, "elapsed": 300, "msg": "the TiDB port 4000 is not up"}
解决办法:
  1. 先启动 pump
  2. 开启binlog
  3. 启动drainer

我这测试网络是有点复杂,但是看启动过程,前置的同机器上的prometheus服务能正常启动,为何到PD就不行了?

我这边没有开启binlog,所以我俩情况应该不太一样。。。

哦,那忽略吧

原因找到了,应该就是网络的问题。把IP全换成内网的,就能正常解析启动了。这个问题也很诡异,prometheus服务能正常启动,不知道为何到PD就卡了。