使用 Powershell AZ 更改 Azure 负载均衡器规则上的 BackendAppressPool
Change BackendAppressPool on Azure Load Balancer Rule using Powershell AZ
我正在尝试根据预先存在的负载均衡器规则更改后端地址池。
我研究过使用 Set-AzLoadBalancerRuleConfig,但看来我需要提供所有信息才能重建规则...即:FrontendIpConfiguration、协议、 FrontendPort、BackendPort 和 Probe,以及要使用的新 BackendAddressPool:
ForEach($Rule in $BAPFrom.LoadBalancingRules){
$LbRule = $slb.LoadBalancingRules | Where-Object {$_.Id -eq $Rule.Id}
$slb | Set-AzLoadBalancerRuleConfig -Name $LbRule.Name `
-FrontendIPConfiguration $slb.FrontendIpConfigurations[0] `
-Protocol $LbRule.Protocol `
-FrontendPort $LbRule.FrontendPort `
-BackendPort $LbRule.BackendPort `
-BackendAddressPool $BAP #`
#-Probe $LbRule.Probe}
有没有办法只根据预先存在的规则更改 BackendAddressPool,而无需再次传入这些参数中的每一个?
如评论中所述,您尝试实施的过程是不可能的。
我在我的环境中进行了同样的测试:
场景: 1 个负载均衡器,1 个负载均衡规则和 2 个后端池。
我在规则中的默认池是 loadbalancerbackendpool
,如下所示:
我尝试将其更改为第二个池,即 Loadbalancerbackenpooloutbound
。它成功了,但如果您看到输出,只有后端池 ID 是正确的,其他已更改为默认值,与我之前的不同规则如下所示。
解决方案:唯一可用的解决方案是获取要更新的规则配置,并在更新规则时提供从获取规则操作中收集的参数,例如下面:
$slb = Get-AzLoadBalancer -Name "ansumantest-lb" -ResourceGroupName "resourcegroup"
$MyBackendPool2 = $slb | Get-AzLoadBalancerBackendAddressPool -Name 'LoadBalancerBackEndPoolOutbound'
$rule=Get-AzLoadBalancerRuleConfig -LoadBalancer $slb -Name 'myHTTPRule'
$slb|Set-AzLoadBalancerRuleConfig -Name $rule.Name -BackendAddressPool $MyBackendPool2 -Protocol $rule.Protocol -FrontendPort $rule.FrontendPort -BackendPort $rule.BackendPort
我正在尝试根据预先存在的负载均衡器规则更改后端地址池。
我研究过使用 Set-AzLoadBalancerRuleConfig,但看来我需要提供所有信息才能重建规则...即:FrontendIpConfiguration、协议、 FrontendPort、BackendPort 和 Probe,以及要使用的新 BackendAddressPool:
ForEach($Rule in $BAPFrom.LoadBalancingRules){
$LbRule = $slb.LoadBalancingRules | Where-Object {$_.Id -eq $Rule.Id}
$slb | Set-AzLoadBalancerRuleConfig -Name $LbRule.Name `
-FrontendIPConfiguration $slb.FrontendIpConfigurations[0] `
-Protocol $LbRule.Protocol `
-FrontendPort $LbRule.FrontendPort `
-BackendPort $LbRule.BackendPort `
-BackendAddressPool $BAP #`
#-Probe $LbRule.Probe}
有没有办法只根据预先存在的规则更改 BackendAddressPool,而无需再次传入这些参数中的每一个?
如评论中所述,您尝试实施的过程是不可能的。
我在我的环境中进行了同样的测试:
场景: 1 个负载均衡器,1 个负载均衡规则和 2 个后端池。
我在规则中的默认池是 loadbalancerbackendpool
,如下所示:
我尝试将其更改为第二个池,即 Loadbalancerbackenpooloutbound
。它成功了,但如果您看到输出,只有后端池 ID 是正确的,其他已更改为默认值,与我之前的不同规则如下所示。
解决方案:唯一可用的解决方案是获取要更新的规则配置,并在更新规则时提供从获取规则操作中收集的参数,例如下面:
$slb = Get-AzLoadBalancer -Name "ansumantest-lb" -ResourceGroupName "resourcegroup"
$MyBackendPool2 = $slb | Get-AzLoadBalancerBackendAddressPool -Name 'LoadBalancerBackEndPoolOutbound'
$rule=Get-AzLoadBalancerRuleConfig -LoadBalancer $slb -Name 'myHTTPRule'
$slb|Set-AzLoadBalancerRuleConfig -Name $rule.Name -BackendAddressPool $MyBackendPool2 -Protocol $rule.Protocol -FrontendPort $rule.FrontendPort -BackendPort $rule.BackendPort