上一篇中其實有談到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,我們需要注意的地方