背景:如果我理解正确的话,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# 没有得到有效答案,我希望重新解决这个问题。
答案 0 :(得分:1)
假设您的scaleset ID是连续的,您可以使用
curl -H Metadata:true "http://169.254.169.254/metadata/instance?api-version=2017-12-01"
将以nodename_0
将_之后的数字添加到负载均衡器的起始端口应该为您提供端口
非常hacky,我真的希望有更好的解决方案!
我个人更喜欢提供VPN访问,以便可以直接从内部VNET访问这些端口