powershell - Azure 外部负载均衡器 - 使用 PowerShell 添加 LB 规则

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

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

首先,我可以使用以下方法毫无问题地登录 Azure:

Login-AzureRmAccount

所以,情况是这样的:

外部负载均衡器 具有唯一公共(public) IP 地址的多个前端池 具有唯一私有(private) IP 地址的多个后端池(池中包含虚拟机) 前后端池比赛1:1 LBRule1 - FrontEndPool -> BackEndPool 前端和后端端口 80 LBRule1 - FrontEndPool -> BackEndPool 前端和后端端口 443

现在,当尝试添加另一个带有 80/443 的 LBRule 时,我不能,因为它已被使用。与 Microsoft 支持人员交谈,这只能通过 Powershell 完成(我也启用/禁用了 float 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 

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

有人能看到我缺少什么吗?

最佳答案

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

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

$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

关于powershell - Azure 外部负载均衡器 - 使用 PowerShell 添加 LB 规则,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41213077/

相关文章:

python - 我应该如何使用 pyodbc 配置与 MS Azure 云数据库的连接?

azure - 在部署期间使用 PowerShell 清除 Azure Redis 缓存

xml - 通过 PowerShell 保存 XML 总是插入行结尾不一致的注释

powershell - 将字符串转换为具有几天可变数字的日期时间对象

azure - 如何从Azure移动/应用服务检索用户的附加信息?

powershell - 添加-AzureRmAccount : Sequence contains no element (Not working for Gmail accounts too)

azure - 获取当前订阅 ID

powershell - 如何匹配 powershell 中的 wsl 输出?

powershell - 使用 PowerShell 远程复制文件

Azure AKS 错误 : Kubernetes cluster unreachable dial tcp no such host 443