UDP 健康检查

问题描述 投票:0回答:3

所以我们有一个进行udp调用和发送数据包的应用程序。然而,由于响应是针对 UDP 调用给出的,我们如何确保服务已启动、端口已打开以及数据已存储?

我们现在唯一的想法是发送测试数据包并确保它们被保存到数据库中。

所以我的总体问题是,是否有更好、更简单的方法来确保我们的 udp 调用成功?

udp
3个回答
3
投票

在侦听主机上,您可以使用 netstat 验证端口是否打开。例如,如果您的应用程序使用 UDP 端口 68,您可以运行:

# Grep for :<port> from netstat output.
$ netstat -lnu | grep :68
udp        0      0 0.0.0.0:68              0.0.0.0:*

您还可以将一些测试数据发送到您的应用程序,然后检查您的数据库以验证夹具数据是否已进入您的数据库。这并不意味着它总是会,只是它在测试时起作用。

最终,问题是 UDP 数据包是尽力而为的,并且不能保证。因此,除非您可以将您的日志平台配置为在接收和/或写入数据后发送某种确认,否则您无法保证任何事情。 UDP 的本质是它将确认(如果有)留给应用层。


0
投票

我们采用了不同的方法,我们正在检查以确保调用已到达数据库。查询表并确保记录在其中非常容易。如果最近没有,我们知道出了点问题。 CodeGnome 有一个好主意,只是不是我们走的路。谢谢!


0
投票

选项 1

  • 健康检查节点根据健康检查配置向后端服务器发送ICMP请求。
    • 健康检查节点如果收到后端服务器的ICMP回复,则认为后端服务器是健康的,继续进行健康检查。
    • 如果健康检查节点没有收到后端服务器的ICMP回复,则认为后端服务器不健康。
  • 健康检查节点收到ICMP回复后,向后端服务器发送UDP探测包。
    • 如果健康检查节点在超时时间内收到后端服务器的ICMP Port Unreachable报文,则认为后端服务器不健康。
    • 如果健康检查节点在超时时间内没有收到后端服务器的ICMP Port Unreachable消息,则认为后端服务器是健康的。

参考https://support.huaweicloud.com/intl/zh-cn/elb_faq/elb_faq_0024.html


选项2

我们需要在服务器端对相同的端口启用 TCP 和 UDP

  • UDP 流量
  • TCP 健康检查
© www.soinside.com 2019 - 2024. All rights reserved.