上一篇中其实有谈到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的

    1.png


    

    之后尝试创建LB规则,但是create implicit outbound rule选择NO

    Azure Standard Load Balancer 出站规则_第1张图片


    可以看到LB规则其实已经生效了

    Azure Standard Load Balancer 出站规则_第2张图片


    但是在VM内部,可以发现还是没办法访问internet

    4.png


    

    接下来我们删掉之前的规则,重新添加一次,这次create implicit outbound rule选择yes

    Azure Standard Load Balancer 出站规则_第3张图片



    可以看到这次终于能够访问了!Azure Standard Load Balancer 出站规则_第4张图片


    但是如果我们删掉LB的rule

    Azure Standard Load Balancer 出站规则_第5张图片


    马上就不能再访问了

    8.png


    以上是第一种方法,接下来我们来看还有第二种方法,即使我们没有任何LB或者NAT的规则,也可以通过直接指定outbound rule来让VM出站到Internet

    首先获取到LB

 9.png

  

    接下来就可以为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,

    10.png 

    配置完成后,我们就可以更新这个LB了

    11.png


    再次测试,可以发现又可以访问internet了,但是这时候我们并没有任何LB的ruleAzure Standard Load Balancer 出站规则_第6张图片


    以上就是在使用Standard Load Balancer时,如果后端的VM想要能够访问internet,我们需要注意的地方