上一篇中其实有谈到Azure Standard Load Balancer 有一个优势也是劣势的地方是他的出站连接,默认情况下,当VM被挂载到Standard Public Load Balancer的backend pool中时,这台VM会失去outbound到internet的能力,这可能会导致有些用户搞不清楚是为什么,而且如果是Standard Internal Load Balancer,其实是不提供outbound到internet的方案的,除非附加一个公网IP给到这台VM,所以这可以算是Standard Load Balancer的一个缺点
但是另一方面,Standard Load Balancer其实是可以让用户自己去控制outbound的规则的,如果你比较了解Azure VM的出入站规则的话,你会知道Azure其实是有SNAT端口耗尽的问题的,Standard Load Balancer可以让用户自己去配置SNAT时候的协议,端口数量,使用的IP等等,这会比之前要灵活一些
这次我们来普及下如果在Standard Public Load Balancer backend pool中的VM,想要出站到internet,要怎么配置
总体上来说,有两类办法
1.配置Load Balancer rule或者NAT rule
2.手动为Load Balancer 配置outbound rule
首先我们来看第一种
我们现在有一台VM,这台VM是在Standard Public Load Balancer 的 Backend Pool中的,可以看到它是没办法访问internet的
之后尝试创建LB规则,但是create implicit outbound rule选择NO
可以看到LB规则其实已经生效了
但是在VM内部,可以发现还是没办法访问internet
接下来我们删掉之前的规则,重新添加一次,这次create implicit outbound rule选择yes
可以看到这次终于能够访问了!
但是如果我们删掉LB的rule
马上就不能再访问了
以上是第一种方法,接下来我们来看还有第二种方法,即使我们没有任何LB或者NAT的规则,也可以通过直接指定outbound rule来让VM出站到Internet
首先获取到LB
接下来就可以为LB添加规则了
这里要注意,LB的出站规则其实是有很多参数可以配置的,总体来说可以分为以下这些
"frontendIPConfigurations": [ list_of_frontend_ip_configuations ],
"allocatedOutboundPorts": number_of_SNAT_ports, 需要是8的倍数,上限64000
"idleTimeoutInMinutes": 4 through 66,
"enableTcpReset": true | false,
"protocol": "Tcp" | "Udp" | "All",
"backendAddressPool": backend_pool_reference,
配置完成后,我们就可以更新这个LB了
再次测试,可以发现又可以访问internet了,但是这时候我们并没有任何LB的rule
以上就是在使用Standard Load Balancer时,如果后端的VM能够访问internet,我们需要注意的地方