你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
创建跨订阅内部负载均衡器
本操作指南介绍如何通过将订阅中的虚拟网络连接到不同订阅中的负载均衡器来创建跨订阅内部负载均衡器。
跨订阅内部负载均衡器 (ILB) 可以引用位于负载均衡器以外的其他订阅中的虚拟网络。 此功能允许在一个订阅中部署负载均衡器,并在另一个订阅中引用虚拟网络。
先决条件
- 两个 Azure 订阅。
- 具有有效订阅的 Azure 帐户。 免费创建帐户
- 现有的虚拟网络。 部署在其中一个订阅中。 在此示例中,虚拟网络位于 Azure 订阅 A 中。
- Azure PowerShell(本地安装)或 Azure Cloud Shell。
如果选择在本地安装并使用 PowerShell,则本文需要 Azure PowerShell 模块 5.4.1 或更高版本。 运行 Get-Module -ListAvailable Az
查找已安装的版本。 如果需要进行升级,请参阅 Install Azure PowerShell module(安装 Azure PowerShell 模块)。 如果在本地运行 PowerShell,则还需运行 Connect-AzAccount
以创建与 Azure 的连接。
重要
所有代码示例都将使用示例名称和占位符。 请务必将这些值替换为你的环境中的值。
需替换的值括在尖括号中,如下所示:<example value>
。
登录 Azure
你将在 Azure PowerShell 中使用 Connect-AzAccount
登录到 Azure,然后使用 Set-AzContext
将订阅上下文更改为 Azure 订阅 A。然后,使用 Get-AzVirtualNetwork
获取虚拟网络信息。 需要环境中的 Azure 订阅 ID、资源组名称和虚拟网络名称。
# Sign in to Azure
Connect-AzAccount
# Set the subscription context to Azure Subscription A
Set-AzContext -Subscription '<Azure Subscription A>'
# Get the Virtual Network information with Get-AzVirtualNetwork
$net = @{
Name = '<vnet name>'
ResourceGroupName = '<Resource Group Subscription A>'
}
$vnet = Get-AzVirtualNetwork @net
创建资源组
在本部分中,你将在 Azure 订阅 B 中创建一个资源组。此资源组用于与负载均衡器关联的所有资源。
你将在 Azure PowerShell 中使用 Set-AzContext
切换订阅上下文,并使用 New-AzResourceGroup
创建资源组。
# Set the subscription context to Azure Subscription B
Set-AzContext -Subscription '<Azure Subscription B>'
# Create a resource group
$rg = @{
Name = 'myResourceGroupLB'
Location = 'westus'
}
New-AzResourceGroup @rg
注意
为负载均衡器创建资源组时,请使用与 Azure 订阅 A 中的虚拟网络相同的 Azure 区域。
创建负载均衡器
在本部分中,将在 Azure 订阅 B 中创建一个负载均衡器,该负载均衡器已连接到 Azure 订阅 A 中的虚拟网络。你将创建一个具有前端 IP 地址的负载均衡器。
使用 Azure PowerShell,你将:
- 使用
New-AzLoadBalancer
创建负载均衡器 - 使用
New-AzPublicIpAddress
创建公共 IP 地址 - 使用
Add-AzLoadBalancerFrontendIpConfig
添加前端 IP 配置 - 使用
New-AzLoadBalancerBackendAddressPool
创建后端地址池。
# Create a load balancer
$tags = @{
'IsRemoteFrontend'= 'true'
}
$loadbalancer = @{
ResourceGroupName = 'myResourceGroupLB'
Name = 'myLoadBalancer'
Location = 'westus'
Sku = 'Standard'
Tags = $tags
}
$LB = New-AzLoadBalancer @loadbalancer
$LBinfo = @{
ResourceGroupName = 'myResourceGroupLB'
Name = 'myLoadBalancer'
}
## Add load balancer frontend configuration and apply to load balancer.
$fip = @{
Name = 'myFrontEnd'
SubnetId = $vnet.subnets[0].Id
}
$LB = $LB | Add-AzLoadBalancerFrontendIpConfig @fip
$LB = $LB | Set-AzLoadBalancer
## Create backend address pool configuration and place in variable.
$be = @{
ResourceGroupName= "myResourceGroupLB"
Name= "myBackEndPool"
LoadBalancerName= "myLoadBalancer"
VirtualNetwork=$vnet.id
SyncMode= "Automatic"
}
# Create the backend pool
$backend = New-AzLoadBalancerBackendAddressPool @be
$LB = Get-AzLoadBalancer @LBinfo
创建运行状况探测和负载均衡器规则
创建运行状况探测来确定后端 VM 实例的运行状况,并创建一个负载均衡器规则,用于定义传入流量的前端 IP 配置、接收流量的后端 IP 池以及所需的源端口和目标端口。
在 Azure PowerShell 中使用 Add-AzLoadBalancerProbeConfig
创建运行状况探测,以确定后端 VM 实例的运行状况。 然后使用 Add-AzLoadBalancerRuleConfig
创建负载均衡器规则,用于定义传入流量的前端 IP 配置、接收流量的后端 IP 池以及所需的源端口和目标端口。
## Create the health probe and place in variable. ##
$probe = @{
Name = 'myHealthProbe2'
Protocol = 'tcp'
Port = '80'
IntervalInSeconds = '360'
ProbeCount = '5'
}
## Create the load balancer rule and place in variable. ##
$lbrule = @{
Name = 'myHTTPRule2'
Protocol = 'tcp'
FrontendPort = '80'
BackendPort = '80'
IdleTimeoutInMinutes = '15'
FrontendIpConfiguration = $LB.FrontendIpConfigurations[0]
BackendAddressPool = $backend
}
## Set the load balancer resource. ##
$LB | Add-AzLoadBalancerProbeConfig @probe
$LB | Add-AzLoadBalancerRuleConfig @lbrule
$LB | Set-AzLoadBalancer
将网络适配卡附加到负载均衡器
在本部分中,将 Azure 订阅 A 中的网络适配卡 (NIC) 附加到 Azure 订阅 B 中的负载均衡器。使用 New-AzNetworkInterface
创建网络接口,然后使用 New-AzNetworkInterfaceIpConfig
创建网络适配卡的 IP 配置。
注意
网络适配卡 (NIC) 必须与负载均衡器的后端池位于同一 VNet 中。
# Set the subscription context to **Azure Subscription A**
Set-AzContext -Subscription 'Sub A'
# Create a network interface card
$IP1 = @{
Name = 'MyIpConfig'
subnetID= $vnet.subnets[0].Id
PrivateIpAddressVersion = 'IPv4'
-LoadBalancerBackendAddressPool $lb-be-info
}
$IP1Config = New-AzNetworkInterfaceIpConfig @IP1 -Primary
$nic = @{
Name = 'MyNic'
ResourceGroupName = '<Resoure Group Subscription A>'
Location = 'eastus'
IpConfiguration = $IP1Config
}
New-AzNetworkInterface @nic
清理资源
不再需要时,可以使用 Remove-AzResourceGroup 命令移除创建的资源组以及负载均衡器和剩余资源。
Remove-AzResourceGroup -Name 'myResourceGroupLB'