在Global Azure上用Azure CLI建立ARM的VM和麵向公網的負載均衡

衡子發表於2016-02-21

在Global的Azure上,新的Portal和ARM已經正式釋出。將來傳統的portal和ASM將逐漸淡出。

China Azure將在今年下半年推出新的Portal管理介面和ARM功能(即IaaS v2)。本文將通過Azure CLI命令列的方式在ARM模式下,建立VM和負載均衡。

在ASM模式下,我們經常使用Endpoint和負載均衡SLB的功能。同樣在ARM模式下,SLB也是一個非常重要的功能。但在ARM下和ASM的最重要的不同是:LoadBalancer不再是關聯到VM上的屬性了。就是說,VM可以沒有公網IP,可以沒有負載均衡對外提供服務。

這種部署模式更加符合企業應用的部署模式。在企業應用中,只有前端的展現層才會有與外部網路的連線,而其他應用層、資料庫層等都不允許與外界溝通。

通過ARM部署的VM,就具有這種特性。

如圖中所示:

負載均衡把Web請求分發到加入了負載均衡的VM上。

下面將一步一步的建立負載均衡的各個元件和VM。

1.建立Resource Group:

azure group create hwlb eastasia

2.在Resource Group中建立儲存賬戶

azure storage account create -g hwlb -l eastasia --type LRS hweastasia

3.在Resource Group中建立Vnet

azure network vnet create hwlb hwlbvnet eastasia -a 10.0.0.0/16

4.在Vnet中建立Subnet

azure network vnet subnet create hwlb hwlbvnet hwlbsubnet-1 -a 10.0.0.0/24

5.建立Public-IP

azure network public-ip create -g hwlb -n hwlbpip -l eastasia -d hwlbpip -a static -i 4

6.建立LoadBalancer

azure network lb create hwlb hwlb eastasia

7.定義LoadBalancer的前端IP和剛剛定義的Public-IP繫結

azure network lb frontend-ip create hwlb hwlb hwlbfndip -i hwlbpip

8.建立後端IP地址池(此時沒有VM加入)

azure network lb address-pool create hwlb hwlb hwlbbndip

9.定義這個LoadBalancer的NAT規則

azure network lb inbound-nat-rule create -g hwlb -l hwlb -n ssh1 -p tcp -f 22122 -b 22

azure network lb inbound-nat-rule create -g hwlb -l hwlb -n ssh2 -p tcp -f 22322 -b 22

10.建立LoadBalancer的負載均衡規則

azure network lb rule create hwlb hwlb lbrule -p tcp -f 80 -b 80 -t hwlbfndip -o hwlbbndip

11.建立LoadBalancer的健康檢查規則

azure network lb probe create -g hwlb -l hwlb -n healthprobe -p "tcp" -o 80 -i 15 -c 4

12.檢查建立的負載均衡

azure network lb show hwlb hwlb

至此,負載均衡已經建立完畢。下面將建立VM。

13.建立兩個NIC,將NAT規則應用到兩個網路卡上

azure network nic create -g hwlb -n hwlbnic1-be --subnet-name hwlbsubnet-1 --subnet-vnet-name hwlbvnet -d "/subscriptions/xxxx/resourceGroups/hwlb/providers/Microsoft.Network/loadBalancers/hwlb/backendAddressPools/hwlbbndip" -e "/subscriptions/xxxx/resourceGroups/hwlb/providers/Microsoft.Network/loadBalancers/hwlb/inboundNatRules/ssh1" eastasia    

azure network nic create -g hwlb -n hwlbnic2-be --subnet-name hwlbsubnet-1 --subnet-vnet-name hwlbvnet -d "/subscriptions/xxxx/resourceGroups/hwlb/providers/Microsoft.Network/loadBalancers/hwlb/backendAddressPools/hwlbbndip" -e "/subscriptions/xxxx/resourceGroups/hwlb/providers/Microsoft.Network/loadBalancers/hwlb/inboundNatRules/ssh2" eastasia

14.建立兩臺VM

azure vm create --resource-group hwlb --name hwlbweb1 --location eastasia --vnet-name hwlbvnet --vnet-subnet-name hwlbsubnet-1 --nic-name hwlbnic1-be --availset-name hwlb-avset --storage-account-name hweastasia -u hengwei -p xxxx -z Standard_A1 --os-type Linux --image-urn openlogic:CentOS:6.5:6.5.20150904

azure vm create --resource-group hwlb --name hwlbweb2 --location eastasia --vnet-name hwlbvnet --vnet-subnet-name hwlbsubnet-1 --nic-name hwlbnic2-be --availset-name hwlb-avset --storage-account-name hweastasia -u hengwei -p xxxx -z Standard_A1 --os-type Linux --image-urn openlogic:CentOS:6.5:6.5.20150904

15.定義LoadBalancer的Distribution模式

在ASM中的SLB有3中Distribution Mode,分別是Default(5-tuple)、sourceIP(2-tuple)、sourceIP Protocol(3-tuple)。為實現Session Sticky,我們會選擇sourceIP的分佈模式。具體命令如下:

azure network lb rule set -d sourceIP hwlb hwlb lbrule

此命令需要最新版的Azure CLI-0.9.15。如果版本不夠,請升級。

 

在ARM的環境下,LoadBalancer的實現方式與ASM的有類似,但要比ASM好。

相關文章