使用 Azure CLI 在 Azure 虛擬網路中部署 IPv6 雙重堆疊應用程式

本文說明如何在 Azure 中使用 Standard Load Balancer 部署雙重堆疊 (IPv4 + IPv6) 應用程式,而此應用程式包含具有雙重堆疊子網路的雙重堆疊虛擬網路、具有雙重 (IPv4 + IPv6) 前端設定的 Standard Load Balancer、NIC 具有雙重 IP 設定的 VM、雙重網路安全性群組規則,以及雙重公用 IP。

如果您沒有 Azure 訂閱,請在開始之前,先建立 Azure 免費帳戶

必要條件

  • 本文需要 2.0.49 版或更新版本的 Azure CLI。 如果您是使用 Azure Cloud Shell,就已安裝最新版本。

建立資源群組

您必須使用 az group create 建立資源群組,才能建立雙重堆疊虛擬網路。 下列範例會在 eastus 位置建立名為 DsResourceGroup01 的資源群組:

az group create \
--name DsResourceGroup01 \
--location eastus

建立負載平衡器的 IPv4 和 IPv6 公用 IP 位址

若要在網際網路上存取您的 IPv4 和 IPv6 端點,您需要負載平衡器的 IPv4 和 IPv6 公用 IP 位址。 使用 az network public-ip create 建立公用 IP 位址。 下列範例會在 DsResourceGroup01 資源群組中建立名為 dsPublicIP_v4dsPublicIP_v6 的 IPv4 和 IPv6 公用 IP 位址:

# Create an IPV4 IP address
az network public-ip create \
--name dsPublicIP_v4  \
--resource-group DsResourceGroup01  \
--location eastus  \
--sku STANDARD  \
--allocation-method static  \
--version IPv4

# Create an IPV6 IP address
az network public-ip create \
--name dsPublicIP_v6  \
--resource-group DsResourceGroup01  \
--location eastus \
--sku STANDARD  \
--allocation-method static  \
--version IPv6

建立 VM 的公用 IP 位址

若要在網際網路上遠端存取您的 VM,您需要 VM 的 IPv4 公用 IP 位址。 使用 az network public-ip create 建立公用 IP 位址。

az network public-ip create \
--name dsVM0_remote_access  \
--resource-group DsResourceGroup01 \
--location eastus  \
--sku Standard  \
--allocation-method static  \
--version IPv4

az network public-ip create \
--name dsVM1_remote_access  \
--resource-group DsResourceGroup01  \
--location eastus  \
--sku Standard  \
--allocation-method static  \
--version IPv4

建立標準負載平衡器

在本節中,您會設定負載平衡器的雙重前端 IP (IPv4 和 IPv6) 和後端位址集區,然後建立 Standard Load Balancer。

建立負載平衡器

使用 az network lb create 建立名為 dsLB 的 Standard Load Balancer,其中包含名為 dsLbFrontEnd_v4 的前端集區,以及名為 dsLbBackEndPool_v4 的後端集區,其與您在上一個步驟中建立的 IPv4 公用 IP 位址 dsPublicIP_v4 相關聯。

az network lb create \
--name dsLB  \
--resource-group DsResourceGroup01 \
--sku Standard \
--location eastus \
--frontend-ip-name dsLbFrontEnd_v4  \
--public-ip-address dsPublicIP_v4  \
--backend-pool-name dsLbBackEndPool_v4

建立 IPv6 前端

使用 az network lb frontend-ip create 建立 IPV6 前端 IP。 下列範例會建立名為 dsLbFrontEnd_v6 的前端 IP 設定,並連結 dsPublicIP_v6 位址:

az network lb frontend-ip create \
--lb-name dsLB  \
--name dsLbFrontEnd_v6  \
--resource-group DsResourceGroup01  \
--public-ip-address dsPublicIP_v6

設定 IPv6 後端位址集區

使用 az network lb address-pool create 建立 IPv6 後端位址集區。 下列範例會建立名為 dsLbBackEndPool_v6 的後端位址集區,以包含具有 IPv6 NIC 設定的 VM:

az network lb address-pool create \
--lb-name dsLB  \
--name dsLbBackEndPool_v6  \
--resource-group DsResourceGroup01

建立健康狀態探查

使用 az network lb probe create 建立健康狀態探查,以檢視虛擬機器的健康狀態。

az network lb probe create -g DsResourceGroup01  --lb-name dsLB -n dsProbe --protocol tcp --port 3389

建立負載平衡器規則

負載平衡器規則會用來定義如何將流量分散至 VM。 您要定義連入流量的前端 IP 設定和接收流量的後端 IP 集區,以及所需的來源和目的地連接埠。

使用 az network lb rule create 建立負載平衡器規則。 下列範例會建立名為 dsLBrule_v4dsLBrule_v6 的負載平衡器規則,並將 TCP 連接埠 80 上的流量均分至 IPv4 和 IPv6 前端 IP 設定:

az network lb rule create \
--lb-name dsLB  \
--name dsLBrule_v4  \
--resource-group DsResourceGroup01  \
--frontend-ip-name dsLbFrontEnd_v4  \
--protocol Tcp  \
--frontend-port 80  \
--backend-port 80  \
--probe-name dsProbe \
--backend-pool-name dsLbBackEndPool_v4


az network lb rule create \
--lb-name dsLB  \
--name dsLBrule_v6  \
--resource-group DsResourceGroup01 \
--frontend-ip-name dsLbFrontEnd_v6  \
--protocol Tcp  \
--frontend-port 80 \
--backend-port 80  \
--probe-name dsProbe \
--backend-pool-name dsLbBackEndPool_v6

建立網路資源

您必須先建立支援網路資源 (可用性設定組、網路安全性群組、虛擬網路和虛擬 NIC),然後才能部署一些 VM。

建立可用性設定組

若要改善您應用程式的可用性,請將 VM 放在可用性設定組中。

使用 az vm availability-set create 建立可用性設定組。 下列範例會建立名為 dsAVset 的可用性設定組:

az vm availability-set create \
--name dsAVset  \
--resource-group DsResourceGroup01  \
--location eastus \
--platform-fault-domain-count 2  \
--platform-update-domain-count 2  

建立網路安全性群組

針對將在 VNet 中治理輸入和輸出通訊的規則,建立網路安全性群組。

建立網路安全性群組

使用 az network nsg create 建立網路安全性群組

az network nsg create \
--name dsNSG1  \
--resource-group DsResourceGroup01  \
--location eastus

建立輸入和輸出連線的網路安全性群組規則

使用 az network nsg rule create 建立網路安全性群組規則,以允許通過連接埠 3389 的 RDP 連線、通過連接埠 80 的網際網路連線,以及輸出連線。

# Create inbound rule for port 3389
az network nsg rule create \
--name allowRdpIn  \
--nsg-name dsNSG1  \
--resource-group DsResourceGroup01  \
--priority 100  \
--description "Allow Remote Desktop In"  \
--access Allow  \
--protocol "*"  \
--direction Inbound  \
--source-address-prefixes "*"  \
--source-port-ranges "*"  \
--destination-address-prefixes "*"  \
--destination-port-ranges 3389

# Create inbound rule for port 80
az network nsg rule create \
--name allowHTTPIn  \
--nsg-name dsNSG1  \
--resource-group DsResourceGroup01  \
--priority 200  \
--description "Allow HTTP In"  \
--access Allow  \
--protocol "*"  \
--direction Inbound  \
--source-address-prefixes "*"  \
--source-port-ranges 80  \
--destination-address-prefixes "*"  \
--destination-port-ranges 80

# Create outbound rule

az network nsg rule create \
--name allowAllOut  \
--nsg-name dsNSG1  \
--resource-group DsResourceGroup01  \
--priority 300  \
--description "Allow All Out"  \
--access Allow  \
--protocol "*"  \
--direction Outbound  \
--source-address-prefixes "*"  \
--source-port-ranges "*"  \
--destination-address-prefixes "*"  \
--destination-port-ranges "*"

建立虛擬網路

使用 az network vnet create 建立虛擬網路。 下列範例會建立一個名為 dsVNET 的虛擬網路,其中包含子網路 dsSubNET_v4dsSubNET_v6

# Create the virtual network
az network vnet create \
--name dsVNET \
--resource-group DsResourceGroup01 \
--location eastus  \
--address-prefixes "10.0.0.0/16" "fd00:db8:deca::/48"

# Create a single dual stack subnet

az network vnet subnet create \
--name dsSubNET \
--resource-group DsResourceGroup01 \
--vnet-name dsVNET \
--address-prefixes "10.0.0.0/24" "fd00:db8:deca:deed::/64" \
--network-security-group dsNSG1

建立 NIC

使用 az network nic create,為每個 VM 建立虛擬 NIC。 下列範例會為每個 VM 建立虛擬 NIC。 每個 NIC 都有兩個 IP 設定 (1 個 IPv4 設定,1個 IPv6 設定)。 您可以使用 az network nic ip-config create 來建立 IPv6 設定。

# Create NICs
az network nic create \
--name dsNIC0  \
--resource-group DsResourceGroup01 \
--network-security-group dsNSG1  \
--vnet-name dsVNET  \
--subnet dsSubNet  \
--private-ip-address-version IPv4 \
--lb-address-pools dsLbBackEndPool_v4  \
--lb-name dsLB  \
--public-ip-address dsVM0_remote_access

az network nic create \
--name dsNIC1 \
--resource-group DsResourceGroup01 \
--network-security-group dsNSG1 \
--vnet-name dsVNET \
--subnet dsSubNet \
--private-ip-address-version IPv4 \
--lb-address-pools dsLbBackEndPool_v4 \
--lb-name dsLB \
--public-ip-address dsVM1_remote_access

# Create IPV6 configurations for each NIC

az network nic ip-config create \
--name dsIp6Config_NIC0  \
--nic-name dsNIC0  \
--resource-group DsResourceGroup01 \
--vnet-name dsVNET \
--subnet dsSubNet \
--private-ip-address-version IPv6 \
--lb-address-pools dsLbBackEndPool_v6 \
--lb-name dsLB

az network nic ip-config create \
--name dsIp6Config_NIC1 \
--nic-name dsNIC1 \
--resource-group DsResourceGroup01 \
--vnet-name dsVNET \
--subnet dsSubNet \
--private-ip-address-version IPv6 \
--lb-address-pools dsLbBackEndPool_v6 \
--lb-name dsLB

建立虛擬機器

使用 az vm create 建立 VM。 下列範例會建立兩個 VM 及必要的虛擬網路元件 (如果尚未存在)。

建立虛擬機器 dsVM0,如下所示:

 az vm create \
--name dsVM0 \
--resource-group DsResourceGroup01 \
--nics dsNIC0 \
--size Standard_A2 \
--availability-set dsAVset \
--image MicrosoftWindowsServer:WindowsServer:2019-Datacenter:latest  

建立虛擬機器 dsVM1,如下所示:

az vm create \
--name dsVM1 \
--resource-group DsResourceGroup01 \
--nics dsNIC1 \
--size Standard_A2 \
--availability-set dsAVset \
--image MicrosoftWindowsServer:WindowsServer:2019-Datacenter:latest 

在 Azure 入口網站中檢視 IPv6 雙重堆疊虛擬網路

您可以依循下列步驟,在 Azure 入口網站中檢視 IPv6 雙重堆疊虛擬網路:

  1. 在入口網站的搜尋列中,輸入 dsVnet
  2. 當搜尋結果中出現 myVirtualNetwork 時加以選取。 這會啟動名為 dsVnet 的雙重堆疊虛擬網路 [概觀] 頁面。 雙重堆疊虛擬網路顯示兩個 NIC,而其 IPv4 和 IPv6 設定都位於名為 dsSubnet 的雙重堆疊子網路中。

IPv6 dual stack virtual network in Azure

清除資源

若不再需要,您可以使用 az group delete 命令來移除資源群組、VM 和所有相關資源。

 az group delete --name DsResourceGroup01

下一步

在本文中,您已建立具有雙重前端 IP 設定 (IPv4 和 IPv6) 的 Standard Load Balancer。 您也建立了兩個包含 NIC 的虛擬機器,而 NIC 具有已新增至負載平衡器後端集區的雙重 IP 設定 (IPv4 + IPv6)。 若要深入瞭解 Azure 虛擬網路中的 IPv6 支援,請參閱什麼是 Azure 虛擬網路的 IPv6?