Использование PowerShell для добавления набора доступности в бэкэнд-пул для Azure Load Balancer - PullRequest
0 голосов
/ 03 мая 2018

Несмотря на использование официальной документации, я изо всех сил пытаюсь найти подходящий PowerShell, чтобы связать набор доступности (из 2 ВМ) с их первым IP-адресом с конфигурацией внутреннего пула для балансировщика нагрузки Azure.

Кто-нибудь может помочь?

Ответы [ 2 ]

0 голосов
/ 17 октября 2018

Я столкнулся с той же проблемой, где моей целью было обновление backendPool балансировщика нагрузки на основе машин в наборе доступности.

Я создал скрипт:

<#
.SYNOPSIS
    Updates the Azure Load Balancer backend Pool
.DESCRIPTION
    Add's vm's to the backend pool of the specified Azure Load Balancer.
.OUTPUTS
    Progress messages
#>
[CmdletBinding()]
Param(
    [Parameter(Mandatory = $True)]
    [string]$loadBalancerName,
    [Parameter(Mandatory = $True)]
    [string]$resourceGroupName,
    [Parameter(Mandatory = $True)]
    [string]$debugDeploymentDebugLevel,
    [Parameter(Mandatory = $True)]
    [string]$availabilitySetName,
    [Parameter(Mandatory = $True)]
    [string]$backendPoolName
)

$ErrorActionPreference = "Stop"

Try {
    $loadBalancer = Get-AzureRmLoadBalancer `
        -Name $loadBalancerName `
        -ResourceGroupName $resourceGroupName `
        -ErrorAction Stop
}
Catch {
    Write-Warning "No Load Balancer found with name $loadBalancerName in resource group $resourceGroupName"
    Return
}

try {
    $backendPool = Get-AzureRmLoadBalancerBackendAddressPoolConfig `
        -Name $backendPoolName `
        -LoadBalancer $loadBalancer
}
catch {
    #Write-Warning "no Backend Pool found with the name $backendPoolName in the load balancer with the name $loadBalancerName"
    Return
}

try {
    $AvSet = Get-AzureRmAvailabilitySet `
        -Name $availabilitySetName `
        -ResourceGroupName (Get-AzureRmResource | Where-Object {
            ($_.Name -eq $availabilitySetName) -and `
            ($_.ResourceType -eq "Microsoft.Compute/AvailabilitySets")}).ResourceGroupName
}
catch {
    Write-Warning "no AvailabilitySet found with the name $availabilitySetName in resource group $availabilitySetResourceGroup"
    Return
}

ForEach ($id in $avSet.VirtualMachinesReferences.id) {

    $nic = Get-AzureRmNetworkInterface | Where-Object {($_.VirtualMachine.id).ToLower() -eq ($id).ToLower()}
    $nic.IpConfigurations[0].LoadBalancerBackendAddressPools = $backendPool

    Set-AzureRmNetworkInterface -NetworkInterface $nic -AsJob    
}    

If ($ErrorMessages) {
    Write-Error "Deployment returned the following errors: $ErrorMessages";
    Return
}

Вы также можете найти на моем github: https://github.com/azurekid/blog/blob/master/Update-BackendPool.ps1

Надеюсь, это поможет; -)

0 голосов
/ 03 мая 2018

Вы можете использовать Get-AzureRmAvailabilitySet, чтобы получить, а затем перечислить виртуальные машины в наборе доступности. Затем используйте Set-AzureRmNetworkInterface для установки LoadBalancerBackendAddressPool на каждом из сетевых адаптеров виртуальных машин?

Эта ссылка содержит хороший код https://docs.microsoft.com/en-us/azure/networking/scripts/load-balancer-windows-powershell-sample-nlb

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...