你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
本文介绍如何使用 Azure CLI 部署具有基本负载均衡器的双堆栈(IPv4 + IPv6)应用程序,其中包括具有双堆栈子网的双堆栈虚拟网络、具有双(IPv4 + IPv6)前端配置的基本负载均衡器、具有具有双重 IP 配置的 NIC 的 VM、双网络安全组规则的 VM、 和双重公共 IP。
若要使用标准负载均衡器部署双堆栈(IPV4 + IPv6)应用程序,请参阅 使用 Azure CLI 部署具有标准负载均衡器的 IPv6 双堆栈应用程序。
如果没有 Azure 帐户,请在开始前创建一个免费帐户。
先决条件
在 Azure Cloud Shell 中使用 Bash 环境。 有关详细信息,请参阅 Azure Cloud Shell 入门。
如需在本地运行 CLI 参考命令,请安装 Azure CLI。 如果在 Windows 或 macOS 上运行,请考虑在 Docker 容器中运行 Azure CLI。 有关详细信息,请参阅如何在 Docker 容器中运行 Azure CLI。
如果使用的是本地安装,请使用 az login 命令登录到 Azure CLI。 若要完成身份验证过程,请遵循终端中显示的步骤。 有关其他登录选项,请参阅 使用 Azure CLI 向 Azure 进行身份验证。
出现提示时,请在首次使用时安装 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 地址
若要在 Internet 上访问 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 BASIC \
--allocation-method dynamic \
--version IPv4
# Create an IPV6 IP address
az network public-ip create \
--name dsPublicIP_v6 \
--resource-group DsResourceGroup01 \
--___location eastus \
--sku BASIC \
--allocation-method dynamic \
--version IPv6
为 VM 创建公共 IP 地址
若要在 Internet 上远程访问 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 BASIC \
--allocation-method dynamic \
--version IPv4
az network public-ip create \
--name dsVM1_remote_access \
--resource-group DsResourceGroup01 \
--___location eastus \
--sku BASIC \
--allocation-method dynamic \
--version IPv4
创建基本负载均衡器
在本部分,你将为负载均衡器配置双重前端 IP(IPv4 和 IPv6)与后端地址池,然后创建基本负载均衡器。
创建负载均衡器
使用 az network lb create named dsLB 创建基本负载均衡器,其中包括名为 dsLbFrontEnd_v4 的前端池,一个名为 dsLbBackEndPool_v4 的后端池,该池与你在上一步中创建的 IPv4 公共 IP 地址 dsPublicIP_v4 相关联。
az network lb create \
--name dsLB \
--resource-group DsResourceGroup01 \
--sku Basic \
--___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 的负载均衡器规则,并通过 IPv4 和 IPv6 前端 IP 配置均衡 TCP 端口 80 上的流量:
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
创建网络资源
在部署某些 VM 之前,必须创建支持性的网络资源 - 可用性集、网络安全组、虚拟网络和虚拟 NIC。
创建可用性集
若要提高应用的可用性,请将 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
针对入站和出站连接创建网络安全组规则
创建网络安全组规则,以允许通过端口 3389 建立 RDP 连接、通过端口 80 建立 Internet 连接,并使用 az network nsg rule create 进行出站连接。
# 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 的双堆栈虚拟网络的“概述”页。 该双堆栈虚拟网络显示了位于 dsSubnet 双堆栈子网中的两个 NIC,这些 NIC 采用 IPv4 和 IPv6 配置。
清理资源
不再需要时,可以使用 az group delete 命令删除资源组、VM 和所有相关资源。
az group delete --name DsResourceGroup01
后续步骤
在本文中,你已使用双重前端 IP 配置(IPv4 和 IPv6)创建了一个基本负载均衡器。 还创建了两台虚拟机,它们包含了采用双重 IP 配置 (IPV4 + IPv6) 的 NIC,并已将其添加到负载均衡器的后端池。 若要详细了解 Azure 虚拟网络中的 IPv6 支持,请参阅 Azure 虚拟网络 IPv6 是什么?