0

背景:如果我理解正确,InboundNATPools 用于将一系列外部端口映射到 LB 后面的 VMSS 上的特定 VM。例如{LB_IP:p1,LB_IP:p2, ...} => {VM1:p0,VM2:p0, ...}

问题:VM(即应用程序)如何发现分配给它的外部端口?例如,在上面的示例中,正确的端口来自{p1,p2,..}

一种可能的方法:我正在考虑使用外部服务,该服务将侦听知名端口上的连接,并在建立连接时响应源端口。我不愿意使用它,因为它意味着维护另一个服务。

额外细节:我在 Service Fabric 上运行,端口协议是 TCP。

相同的未回答问题Retrieve Azure load balancer NAT port for Azure VM in C# 没有得到有效的答案,我希望重新提出这个问题。

4

1 回答 1

1

假设您的规模集 ID 是连续的,您可以使用

curl -H Metadata:true "http://169.254.169.254/metadata/instance?api-version=2017-12-01"

这将为您提供格式为的节点名nodename_0

将 _ 后面的数字添加到负载均衡器的起始端口应该会给你端口

它非常hacky,我真的希望有更好的解决方案!

我个人更喜欢提供 VPN 访问,以便可以直接从内部 VNET 访问这些端口

于 2018-06-11T20:49:45.460 回答