使用 Azure CLI 在 Azure 虛擬網路中部署 IPv6 雙重堆疊應用程式
本文說明如何在 Azure 中使用 Standard Load Balancer 部署雙重堆疊 (IPv4 + IPv6) 應用程式,而此應用程式包含具有雙重堆疊子網路的雙重堆疊虛擬網路、具有雙重 (IPv4 + IPv6) 前端設定的 Standard Load Balancer、NIC 具有雙重 IP 設定的 VM、雙重網路安全性群組規則,以及雙重公用 IP。
如果您沒有 Azure 訂閱,請在開始之前,先建立 Azure 免費帳戶。
必要條件
在 Azure Cloud Shell 中使用 Bash 環境。 如需詳細資訊,請參閱 Azure Cloud Shell 中的 Bash 快速入門。
若要在本地執行 CLI 參考命令,請安裝 Azure CLI。 若您在 Windows 或 macOS 上執行,請考慮在 Docker 容器中執行 Azure CLI。 如需詳細資訊,請參閱〈如何在 Docker 容器中執行 Azure CLI〉。
如果您使用的是本機安裝,請使用 az login 命令,透過 Azure CLI 來登入。 請遵循您終端機上顯示的步驟,完成驗證程序。 如需其他登入選項,請參閱使用 Azure CLI 登入。
出現提示時,請在第一次使用時安裝 Azure CLI 延伸模組。 如需擴充功能詳細資訊,請參閱使用 Azure CLI 擴充功能。
執行 az version 以尋找已安裝的版本和相依程式庫。 若要升級至最新版本,請執行 az upgrade。
- 本文需要 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_v4 和 dsPublicIP_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_v4 和 dsLBrule_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_v4 和 dsSubNET_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 雙重堆疊虛擬網路:
- 在入口網站的搜尋列中,輸入 dsVnet。
- 當搜尋結果中出現 myVirtualNetwork 時加以選取。 這會啟動名為 dsVnet 的雙重堆疊虛擬網路 [概觀] 頁面。 雙重堆疊虛擬網路顯示兩個 NIC,而其 IPv4 和 IPv6 設定都位於名為 dsSubnet 的雙重堆疊子網路中。
清除資源
若不再需要,您可以使用 az group delete 命令來移除資源群組、VM 和所有相關資源。
az group delete --name DsResourceGroup01
下一步
在本文中,您已建立具有雙重前端 IP 設定 (IPv4 和 IPv6) 的 Standard Load Balancer。 您也建立了兩個包含 NIC 的虛擬機器,而 NIC 具有已新增至負載平衡器後端集區的雙重 IP 設定 (IPv4 + IPv6)。 若要深入瞭解 Azure 虛擬網路中的 IPv6 支援,請參閱什麼是 Azure 虛擬網路的 IPv6?