【问题标题】:Azure External Load Balancer - Adding LB Rules with PowerShellAzure 外部负载均衡器 - 使用 PowerShell 添加 LB 规则
【发布时间】:2017-05-03 22:38:21
【问题描述】:

我已经用 Azure 负载均衡器解决这个问题好几天了,但我仍在努力解决这个问题...... :(

首先,我可以毫无问题地登录 Azure:

Login-AzureRmAccount

所以,情况如下:

外部负载均衡器 具有唯一公共 IP 地址的多个前端池 具有唯一私有 IP 地址的多个后端池(池中有 VM) 前端和后端池匹配 1:1 LBRule1 - FrontEndPool -> BackEndPool 前后端端口 80 LBRule1 - FrontEndPool -> BackEndPool 前后端端口 443

现在,当尝试使用 80/443 添加另一个 LBRule 时,我不能,因为它已被使用。与 Microsoft 支持人员交谈,只能通过 Powershell 完成(我也启用/禁用了浮动 IP)。

这是我的脚本:

# Variables
$rg='ResourceGroupName'
$location='west us'
$lb=Get-AzureRmLoadBalancer -Name LBName -ResourceGroupName $rg 
$FEConfig=get-AzureRmLoadBalancerFrontendIpConfig -Name FEPoolName -LoadBalancer $lb
$fec=Get-AzureRmLoadBalancerFrontendIpConfig -Name $FEConfig.Name -LoadBalancer $lb
$BEPool=Get-AzureRmLoadBalancerBackendAddressPoolConfig -Name BEPoolName -LoadBalancer $lb
$BEP=Get-AzureRmLoadBalancerBackendAddressPoolConfig -Name $BEPool.Name -LoadBalancer $lb
$Probe=Get-AzureRmLoadBalancerProbeConfig -Name HTTP-80 -LoadBalancer $lb
$Probe1=Get-AzureRmLoadBalancerProbeConfig -Name HTTPS-443 -LoadBalancer $lb
$LBRule1=New-AzureRmLoadBalancerRuleConfig -Name APP-HTTP80 -FrontendIpConfigurationId $fec.Id -BackendAddressPoolId $BEP.Id -ProbeId $Probe.Id -Protocol Tcp -FrontendPort 80 -BackendPort 80 -EnableFloatingIP 
$LBRule2=New-AzureRmLoadBalancerRuleConfig -Name APP-HTTP443 -FrontendIpConfigurationId $fec.Id -BackendAddressPoolId $BEP.Id -ProbeId $Probe.Id -Protocol Tcp -FrontendPort 443 -BackendPort 443 -EnableFloatingIP 

# Command
$lb.LoadBalancingRules.Add($LBRule1)
$lb.LoadBalancingRules.Add($LBRule2)

现在,当我运行它时,什么也没有发生。如果您使用 Powershell ISE 进行操作,您将看到变量将返回正确的信息,但在资源管理器中查看,没有创建新池。

所以,我做了一些研究,并使用上面设置的相同变量,我把它放在一起:

New-AzureRmLoadBalancerRuleConfig -Name $FEConfig.Name -FrontendIpConfigurationId $fec.Id -BackendAddressPoolId $BEP.Id -ProbeId $Probe.Id -Protocol Tcp -FrontendPort 80 -BackendPort 80 -EnableFloatingIP 

这做同样的事情,什么都没有。没有错误,什么都没有。

任何人都可以看到我错过了什么?

【问题讨论】:

    标签: powershell azure azure-powershell azure-virtual-network


    【解决方案1】:

    好的,不知道为什么这会有所不同,但我已修复它(我想我需要发泄并发布问题)。无论如何,我希望这可以帮助处于这种情况的其他人:

    将以下行添加到脚本的末尾:

    $Set=Set-AzureRmLoadBalancer -LoadBalancer $lb
    

    所以整个事情看起来像:

    # Variables
    $rg='ResourceGroupName'
    $location='west us'
    $lb=Get-AzureRmLoadBalancer -Name LBName -ResourceGroupName $rg 
    $FEConfig=get-AzureRmLoadBalancerFrontendIpConfig -Name FEPoolName -LoadBalancer $lb
    $fec=Get-AzureRmLoadBalancerFrontendIpConfig -Name $FEConfig.Name -LoadBalancer $lb
    $BEPool=Get-AzureRmLoadBalancerBackendAddressPoolConfig -Name BEPoolName -LoadBalancer $lb
    $BEP=Get-AzureRmLoadBalancerBackendAddressPoolConfig -Name $BEPool.Name -LoadBalancer $lb
    $Probe=Get-AzureRmLoadBalancerProbeConfig -Name HTTP-80 -LoadBalancer $lb
    $Probe1=Get-AzureRmLoadBalancerProbeConfig -Name HTTPS-443 -LoadBalancer $lb
    $LBRule1=New-AzureRmLoadBalancerRuleConfig -Name APP-HTTP80 -FrontendIpConfigurationId $fec.Id -BackendAddressPoolId $BEP.Id -ProbeId $Probe.Id -Protocol Tcp -FrontendPort 80 -BackendPort 80 -EnableFloatingIP 
    $LBRule2=New-AzureRmLoadBalancerRuleConfig -Name APP-HTTP443 -FrontendIpConfigurationId $fec.Id -BackendAddressPoolId $BEP.Id -ProbeId $Probe.Id -Protocol Tcp -FrontendPort 443 -BackendPort 443 -EnableFloatingIP 
    
    # Command
    $lb.LoadBalancingRules.Add($LBRule1)
    $lb.LoadBalancingRules.Add($LBRule2)
    $Set=Set-AzureRmLoadBalancer -LoadBalancer $lb
    

    嗯,我很高兴我能够解决这个问题,我希望这对其他人有所帮助。 :D

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-07-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-05-18
      • 1970-01-01
      相关资源
      最近更新 更多