一、问题背景
pinpointServer: 192.168.1.110
环境应用节点,分布在两个网段:192.168.1.x 192.168.2.x
环境中应用节点的pinpoint agent通过向服务端 9999/tcp 上报节点信息,通过 向服务端 9995/udp 9996/udp 上报其他监控数据。
192.168.1.x 网段的应用节点,pinpoint节点、监控数据上报正常;
192.168.2.x 网段应用节点,pinpoint节点数据上报正常,但是没有监控数据的上报。
192.168.2.x 网段应用节点任选一些微服务,查看pinpointAgent 启动日志,都没有报错。
初步判断是 192.168.2.x 网段的 pinpoint agent 跟pinpoint server udp 端口通讯有问题。
二、测试验证
pinpointServer 192.168.1.110
任选一个pinpointAgent 192.168.2.11
在192.168.1.110 上
# tcpdump -i eth0 -nn -vv -X udp port 9995 and src host 192.168
# tcpdump -i eth0 -nn -vv -X udp port 9995 and src host 192.168.2.11
同时,在192.168.2.11上
$ sudo yum -y install nc
$ echo "Hello World\!" | nc -4u 192.168.1.110 9995
$ echo "Hello World\!" | nc -4u 192.168.1.110 9996
多次发送udp报文,并在192.168.1.110 上观察tcpdump的输出。
在192.168.1.110 上, 没有收到来自192.168.2.11 的任何upd数据报。
正常来自 192.168.1.x 网段udp数据报
# tcpdump -i eth0 -nn -vv -X udp port 9995
# tcpdump -i eth0 -nn -vv -X udp port 9995 and src host 192.168.1.115
至此,基本可以判断是192.168.2.x 网段的 pinpoint agent 跟pinpointServer udp 端口通讯有问题。
因udp是面向无连接的,没有确认机制,对发送端而言,发送成功与否并不能直接知晓,我们没法用 telnet 或者 echo 测探,那么只能使用一方发,一方收的方式验证了。
跟网络的同事反馈,得知问题出在路由器交换机上,放开对udp限制,就ok了!
三、参考
How to check if UDP port on IP is open/avaible ?
https://www.jianshu.com/p/cdf7074be6f6
怎么使用 tcpdump 抓包分析
https://www.jianshu.com/p/fbed5f5046fe
关于 /dev/tcp/${HOST}/${PORT}
https://www.jianshu.com/p/f10736931b93
Linux上使用telnet测试目标端口连通性
https://www.jianshu.com/p/bd256a213227
网友评论