2016-12-18 20 views
0

我一直在爭取與Azure的負載平衡器這個問題了幾天,現在還在拉我的頭髮... :(Azure的外部負載平衡器 - 添加LB規則使用PowerShell

首先,我能夠使用登錄到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 

這做同樣的事,什麼都沒有。沒有錯誤,沒有。

任何人都能看到我失蹤的東西?

回答

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