首页
首页
文章目录
  1. 简介
  2. 解决思路
    1. 1、怀疑脑裂
    2. 2、尝试删除节点在增加节点
    3. 3、检查网络
  3. nc的用法
    1. TCP检测
    2. UDP检测
  4. 最后

使用 Netcat(nc) 测试服务器 TCP/UDP 端口连通性

简介

公司在江阴有个项目,我们使用的是pcaemarker+corosync+PostgreSQL做的三节点高可用,昨天中午发现集群异常,分别在每台主机执行pcs status 发现 都只有自己主机在线,其它俩个节点均offline。
请看下图
pcaemarker故障
其它俩个节点均一致

解决思路

1、怀疑脑裂

解决方法:
删除其它节点,只留正常提供服务的节点,执行:

1
property no-quorum-policy=ignore

在加入其它节点。 发现问题依旧

2、尝试删除节点在增加节点

1
pcs cluster remove node pgsql3

在增加回来

发现新的问题

在执行删除节点的机器上发现被删除的节点已经移除,但是另一个未被删除的节点还是显示被删除的节点存在。
pcaemarker故障节点1

未被删除的节点状态
pcaemarker故障节点4

增加回来的节点状态
pcaemarker故障节点3

而且我发现 corosync的配置文件已经更新过来了,但是就是集群显示offline
pcaemarker故障节点5

3、检查网络

到此时距离故障已经8个小时了,google了许久,发现这篇文章Pacemaker No communication between nodes (setup problem),之后我开始怀疑是网络

nc的用法

TCP检测

服务端执行:

1
nc -l <端口号> -v

描述:-l:指明 Netcat 处于 TCP 监听模式;-v:用于显示详细信息。 如果想要退出监听模式,可以使用 Ctrl + C 。 必须要先在服务器端监听端口,然后在客户端访问该端口,才能建立连接。

客户端执行:

1
nc <服务器端 IP 地址> <端口号>

在客户端输入如上命令后,可以在客户端输入任意字符,我们可以看到,客户端输入的字符均会在服务器端打印出来。测试结果如下图:
nc_tcp效果

UDP检测

服务端执行:

1
nc -lu <端口号> -v

描述:-lu:指明 Netcat 处于 UDP 监听模式;-v:用于显示详细信息。 如果想要退出监听模式,可以使用 Ctrl + C 。 必须要先在服务器端监听端口,然后在客户端访问该端口,才能建立连接。

客户端执行:

1
nc -u <服务器端 IP 地址> <端口号>

在客户端输入如上命令后,可以在客户端输入任意字符,我们可以看到,客户端输入的字符均会在服务器端打印出来。测试结果如下:
nc_udp效果

最后

经过nc的排查 我们的服务器由于信息科给安装了杀毒软件默认屏蔽掉所有udp端口,在禁用udp屏蔽规则后,服务自动回复正常了。

ps:
任何的故障,我们都应该先从网络联通性入手开始排查,网络的可用性是所以一切的基础。

以上,End!

支持一下
扫一扫,我会更有动力更新
  • 微信扫一扫
  • 支付宝扫一扫