你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

将跨订阅前端附加到 Azure 负载均衡器

本文介绍如何在一个 Azure 订阅中创建负载均衡器,并从另一个订阅附加前端 IP 地址。 你将为负载均衡器创建一个资源组,然后创建一个具有前端 IP 地址的负载均衡器。 还可以创建后端地址池、运行状况探测和负载均衡器规则。

跨订阅负载均衡器可以引用位于负载均衡器以外的其他订阅中的虚拟网络。 此功能允许在一个订阅中部署负载均衡器,并在另一个订阅中引用虚拟网络。

先决条件

  • 两个 Azure 订阅。 一个订阅用于虚拟网络,另一个订阅用于负载均衡器。
  • 具有有效订阅的 Azure 帐户。 免费创建帐户
  • 部署在其中一个订阅中的公共 IP 地址。 在此示例中,公共 IP 地址位于 Azure 订阅 A 中
  • 现有的虚拟网络。 部署在其中一个订阅中。 在此示例中,虚拟网络位于 Azure 订阅 B 中

如果选择在本地安装并使用 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-AzPublicIpAddress 获取公共 IP 地址信息。 需要环境中的 Azure 订阅 ID、资源组名称和虚拟网络名称。


# Sign in to Azure
Connect-AzAccount

# Set the subscription context to Azure Subscription A
Set-AzContext -Subscription '<Azure Subscription A>'     

# Get the Public IP address information with Get-AzPublicIpAddress
$publicIp = Get-AzPublicIpAddress @pip

创建资源组

在本部分中,你将在 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 中创建负载均衡器。你将创建具有前端 IP 地址的负载均衡器。

使用 New-AzLoadBalancer 创建负载均衡器,使用 Add-AzLoadBalancerFrontendIpConfig 添加前端 IP 配置,然后使用 New-AzLoadBalancerBackendAddressPool 创建后端地址池。

# Create a load balancer

$tags = @{
'IsRemoteFrontend'= 'true'
}

$loadbalancer = @{
    ResourceGroupName = 'myResourceGroupLB'
    Name = 'myLoadBalancer'
    Location = 'westus'
    Sku = 'Standard'
    Tag = $tags
}


$LB = New-AzLoadBalancer @loadbalancer
 
$LBinfo = @{
    ResourceGroupName = 'myResourceGroupLB'
    Name = 'myLoadBalancer'
}


$fip = @{
    Name = 'Frontend Name'
    PublicIpAddress = $publicip
}
$LB = $LB | Add-AzLoadBalancerFrontendIpConfig @fip
$LB = $LB | Set-AzLoadBalancer

## Create backend address pool configuration and place in variable. 
$net = @{
    Name = 'vnet name'
    ResourceGroupName = 'myResourceGroupLB'
}
$vnet = Get-AzVirtualNetwork @net

$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

清理资源

不再需要时,可以使用 Remove-AzResourceGroup 命令移除创建的资源组以及负载均衡器和剩余资源。

Remove-AzResourceGroup -Name 'myResourceGroupLB'

后续步骤