我们正在尝试为 Windows Azure 中的 LoadBalanced 集创建自定义探针。我们创建了一个 Windows Communication Foundation 服务探针,它正在监听端口 1001(在防火墙 - TCP 中为此端口添加了入站规则,允许每个人连接)。
如果满足某些条件,此服务将返回 200(OK),否则将返回 404(NotFound)。
端点已配置:
Protocol - TCP
Public Port - 50655
Private Port - 50655
我们在LoadBalanced Set属性中配置:
Probe Protocol - HTTP
Probe Path - probe
Probe Port - 1001
Probe interval - 15
Number of Probes - 2
问题是,即使探测服务为虚拟机返回 404,负载均衡器仍然选择该虚拟机来处理请求。
如果我们将端点配置为具有专用和公共(public)端口 1001(与探测端口相同),它就会按预期工作。但我们需要让端点监听端口 50655。我们如何实现这一点?
我注意到您将端点配置为 TCP 类型而不是 HTTP 类型。我认为这就是问题所在!
逻辑思考,你会发现结果是负载均衡器不能公平地假设它应该看到 HTTP 200 成功来验证端点是否已启动 - 因为它甚至不知道是否会收到 HTTP 响应!
因此,它会回退到执行 TCP 样式的“are you up”测试,即将 SYN 发送到您的端口,并检查它是否收到返回的 ACK。
我是一名优秀的程序员,十分优秀!