Hızlı Başlangıç: Azure PowerShell kullanarak VM'leri yük dengelemek için genel yük dengeleyici oluşturma

Genel yük dengeleyici ve iki sanal makine oluşturmak için Azure PowerShell kullanarak Azure Load Balancer'ı kullanmaya başlayın. Ayrıca Azure Bastion, NAT Gateway, bir sanal ağ ve gerekli alt ağlar gibi diğer kaynakları dağıtabilirsiniz.

Standart genel yük dengeleyici için dağıtılan kaynakların diyagramı.

Önkoşullar

  • Etkin aboneliği olan bir Azure hesabı. Ücretsiz hesap oluşturma

  • Yerel olarak yüklenen Azure PowerShell veya Azure Cloud Shell

PowerShell'i yerel olarak yükleyip kullanmayı tercih ederseniz bu makale, Azure PowerShell modülü 5.4.1 veya sonraki bir sürümünü gerektirir. Yüklü sürümü bulmak için Get-Module -ListAvailable Az komutunu çalıştırın. Yükseltmeniz gerekirse, bkz. Azure PowerShell modülünü yükleme. PowerShell'i yerel olarak çalıştırıyorsanız Azure ile bağlantı oluşturmak için de komutunu çalıştırmanız Connect-AzAccount gerekir.

Kaynak grubu oluşturma

Azure kaynak grubu, Azure kaynaklarının dağıtıldığı ve yönetildiği bir mantıksal kapsayıcıdır.

New-AzResourceGroup ile bir kaynak grubu oluşturun:

$rg = @{
    Name = 'CreatePubLBQS-rg'
    Location = 'westus2'
}
New-AzResourceGroup @rg

Genel IP adresi oluşturma

Bir genel IP adresi oluşturmak için New-AzPublicIpAddress kullanın.

$publicip = @{
    Name = 'myPublicIP'
    ResourceGroupName = $rg.name
    Location = 'westus2'
    Sku = 'Standard'
    AllocationMethod = 'static'
    Zone = 1,2,3
}
New-AzPublicIpAddress @publicip

Bölge 1'de bölgesel genel IP adresi oluşturmak için aşağıdaki komutu kullanın:

$publicip = @{
    Name = 'myPublicIP'
    ResourceGroupName = $rg.name
    Location = 'westus2'
    Sku = 'Standard'
    AllocationMethod = 'static'
    Zone = 1
}
New-AzPublicIpAddress @publicip

Yük dengeleyici oluşturma

Bu bölümde yük dengeleyicinin aşağıdaki bileşenlerini nasıl oluşturabileceğiniz ve yapılandırabileceğiniz açıklanmaktadır:

  • Ön uç IP havuzu için New-AzLoadBalancerFrontendIpConfig ile bir ön uç IP oluşturun. Bu IP, yük dengeleyicide gelen trafiği alır

  • Yük dengeleyicinin ön tarafından gönderilen trafik için New-AzLoadBalancerBackendAddressPoolConfig ile bir arka uç adres havuzu oluşturun. Bu havuz, arka uç sanal makinelerinizin dağıtıldığı yerdir

  • Add-AzLoadBalancerProbeConfig ile arka uç VM örneklerinin durumunu belirleyen bir sistem durumu araştırması oluşturma

  • Trafiğin VM'lere nasıl dağıtıldığını tanımlayan Add-AzLoadBalancerRuleConfig ile yük dengeleyici kuralı oluşturma

  • New-AzLoadBalancer ile genel yük dengeleyici oluşturma

## Place public IP created in previous steps into variable. ##
$pip = @{
    Name = 'myPublicIP'
    ResourceGroupName = $rg.name
}
$publicIp = Get-AzPublicIpAddress @pip

## Create load balancer frontend configuration and place in variable. ##
$fip = @{
    Name = 'myFrontEnd'
    PublicIpAddress = $publicIp 
}
$feip = New-AzLoadBalancerFrontendIpConfig @fip

## Create backend address pool configuration and place in variable. ##
$bepool = New-AzLoadBalancerBackendAddressPoolConfig -Name 'myBackEndPool'

## Create the health probe and place in variable. ##
$probe = @{
    Name = 'myHealthProbe'
    Protocol = 'tcp'
    Port = '80'
    IntervalInSeconds = '360'
    ProbeCount = '5'
}
$healthprobe = New-AzLoadBalancerProbeConfig @probe

## Create the load balancer rule and place in variable. ##
$lbrule = @{
    Name = 'myHTTPRule'
    Protocol = 'tcp'
    FrontendPort = '80'
    BackendPort = '80'
    IdleTimeoutInMinutes = '15'
    FrontendIpConfiguration = $feip
    BackendAddressPool = $bePool
}
$rule = New-AzLoadBalancerRuleConfig @lbrule -EnableTcpReset -DisableOutboundSNAT

## Create the load balancer resource. ##
$loadbalancer = @{
    ResourceGroupName = $rg.name
    Name = 'myLoadBalancer'
    Location = 'westus2'
    Sku = 'Standard'
    FrontendIpConfiguration = $feip
    BackendAddressPool = $bePool
    LoadBalancingRule = $rule
    Probe = $healthprobe
}
New-AzLoadBalancer @loadbalancer

Sanal ağ yapılandırma

VM'leri dağıtmadan ve yük dengeleyicinizi test etmeden önce destekleyici sanal ağ kaynaklarını oluşturun.

Arka uç sanal makineleri için bir sanal ağ oluşturun.

Sanal ağınıza gelen bağlantıları tanımlamak için bir ağ güvenlik grubu oluşturun.

Arka uç havuzundaki sanal makineleri güvenli bir şekilde yönetmek için bir Azure Bastion konağı oluşturun.

Yük dengeleyicinizin arka uç havuzundaki kaynaklara giden İnternet erişimi sağlamak için nat ağ geçidi kullanın.

Sanal ağ, ağ güvenlik grubu, savunma konağı ve NAT ağ geçidi oluşturma

Önemli

Saatlik fiyatlandırma, giden veri kullanımına bakılmaksızın Bastion dağıtıldığından itibaren başlar. Daha fazla bilgi için bkz . Fiyatlandırma ve SKU'lar. Bastion'ı bir öğretici veya test kapsamında dağıtıyorsanız, kullanmayı bitirdikten sonra bu kaynağı silmenizi öneririz.

## Create public IP address for NAT gateway ##
$ip = @{
    Name = 'myNATgatewayIP'
    ResourceGroupName = $rg.name
    Location = 'westus2'
    Sku = 'Standard'
    AllocationMethod = 'Static'
}
$publicIP = New-AzPublicIpAddress @ip

## Create NAT gateway resource ##
$nat = @{
    ResourceGroupName = $rg.name
    Name = 'myNATgateway'
    IdleTimeoutInMinutes = '10'
    Sku = 'Standard'
    Location = 'westus2'
    PublicIpAddress = $publicIP
}
$natGateway = New-AzNatGateway @nat

## Create backend subnet config ##
$subnet = @{
    Name = 'myBackendSubnet'
    AddressPrefix = '10.1.0.0/24'
    NatGateway = $natGateway
}
$subnetConfig = New-AzVirtualNetworkSubnetConfig @subnet 

## Create Azure Bastion subnet. ##
$bastsubnet = @{
    Name = 'AzureBastionSubnet' 
    AddressPrefix = '10.1.1.0/24'
}
$bastsubnetConfig = New-AzVirtualNetworkSubnetConfig @bastsubnet

## Create the virtual network ##
$net = @{
    Name = 'myVNet'
    ResourceGroupName = $rg.name
    Location = 'westus2'
    AddressPrefix = '10.1.0.0/16'
    Subnet = $subnetConfig,$bastsubnetConfig
}
$vnet = New-AzVirtualNetwork @net

## Create public IP address for bastion host. ##
$ip = @{
    Name = 'myBastionIP'
    ResourceGroupName = $rg.name
    Location = 'westus2'
    Sku = 'Standard'
    AllocationMethod = 'Static'
}
$publicip = New-AzPublicIpAddress @ip

## Create bastion host ##
$bastion = @{
    ResourceGroupName = $rg.name
    Name = 'myBastion'
    PublicIpAddress = $publicip
    VirtualNetwork = $vnet
}
New-AzBastion @bastion -AsJob

## Create rule for network security group and place in variable. ##
$nsgrule = @{
    Name = 'myNSGRuleHTTP'
    Description = 'Allow HTTP'
    Protocol = '*'
    SourcePortRange = '*'
    DestinationPortRange = '80'
    SourceAddressPrefix = 'Internet'
    DestinationAddressPrefix = '*'
    Access = 'Allow'
    Priority = '2000'
    Direction = 'Inbound'
}
$rule1 = New-AzNetworkSecurityRuleConfig @nsgrule

## Create network security group ##
$nsg = @{
    Name = 'myNSG'
    ResourceGroupName = $rg.name
    Location = 'westus2'
    SecurityRules = $rule1
}
New-AzNetworkSecurityGroup @nsg

Sanal makineleri oluşturma

Bu bölümde yük dengeleyicinin arka uç havuzu için iki sanal makine oluşturacaksınız.

# Set the administrator and password for the VMs. ##
$cred = Get-Credential

## Place the virtual network into a variable. ##
$net = @{
    Name = 'myVNet'
    ResourceGroupName = $rg.name
}
$vnet = Get-AzVirtualNetwork @net

## Place the load balancer into a variable. ##
$lb = @{
    Name = 'myLoadBalancer'
    ResourceGroupName = $rg.name
}
$bepool = Get-AzLoadBalancer @lb  | Get-AzLoadBalancerBackendAddressPoolConfig

## Place the network security group into a variable. ##
$ns = @{
    Name = 'myNSG'
    ResourceGroupName = $rg.name
}
$nsg = Get-AzNetworkSecurityGroup @ns

## For loop with variable to create virtual machines for load balancer backend pool. ##
for ($i=1; $i -le 2; $i++){

    ## Command to create network interface for VMs ##
    $nic = @{
        Name = "myNicVM$i"
        ResourceGroupName = $rg.name
        Location = 'westus2'
        Subnet = $vnet.Subnets[0]
        NetworkSecurityGroup = $nsg
        LoadBalancerBackendAddressPool = $bepool
    }
    $nicVM = New-AzNetworkInterface @nic

    ## Create a virtual machine configuration for VMs ##
    $vmsz = @{
        VMName = "myVM$i"
        VMSize = 'Standard_DS1_v2'  
    }
    $vmos = @{
        ComputerName = "myVM$i"
        Credential = $cred
    }
    $vmimage = @{
        PublisherName = 'MicrosoftWindowsServer'
        Offer = 'WindowsServer'
        Skus = '2019-Datacenter'
        Version = 'latest'    
    }
    $vmConfig = New-AzVMConfig @vmsz `
        | Set-AzVMOperatingSystem @vmos -Windows `
        | Set-AzVMSourceImage @vmimage `
        | Add-AzVMNetworkInterface -Id $nicVM.Id

    ## Create the virtual machine for VMs ##
    $vm = @{
        ResourceGroupName = $rg.name
        Location = 'westus2'
        VM = $vmConfig
        Zone = "$i"
    }
    New-AzVM @vm -AsJob
}

Sanal makinelerin ve savunma konağı dağıtımları PowerShell işleri olarak gönderilir. İşlerin durumunu görüntülemek için Get-Job kullanın:

Get-Job

Id     Name            PSJobTypeName   State         HasMoreData     Location             Command
--     ----            -------------   -----         -----------     --------             -------
1      Long Running O… AzureLongRunni… Completed     True            localhost            New-AzBastion
2      Long Running O… AzureLongRunni… Completed     True            localhost            New-AzVM
3      Long Running O… AzureLongRunni… Completed     True            localhost            New-AzVM

Sonraki adımlara geçmeden önce VM oluşturma durumunun Tamamlandı olduğundan emin olun.

Not

Azure, genel IP adresi atanmamış veya bir iç temel Azure yük dengeleyicinin arka uç havuzunda yer alan VM'ler için varsayılan bir giden erişim IP'si sağlar. Varsayılan giden erişim IP mekanizması, yapılandırılamayan bir giden IP adresi sağlar.

Aşağıdaki olaylardan biri gerçekleştiğinde varsayılan giden erişim IP'si devre dışı bırakılır:

Sanal makine ölçek kümelerini esnek düzenleme modunda kullanarak oluşturduğunuz VM'lerin varsayılan giden erişimi yoktur.

Azure'daki giden bağlantılar hakkında daha fazla bilgi için bkz . Azure'da varsayılan giden erişim ve giden bağlantılar için Kaynak Ağ Adresi Çevirisi'ni (SNAT) kullanma.

IIS yükleme

Özel Betik Uzantısını yüklemek için Set-AzVMExtension komutunu kullanın.

Uzantı, IIS web sunucusunu yüklemek için çalışır PowerShell Add-WindowsFeature Web-Server ve ardından Default.htm sayfasını VM'nin ana bilgisayar adını gösterecek şekilde güncelleştirir:

Önemli

Devam etmeden önce sanal makine dağıtımlarının önceki adımlardan tamamlandığından emin olun. Sanal makine dağıtım işlerinin durumunu denetlemek için kullanın Get-Job .

## For loop with variable to install custom script extension on virtual machines. ##
for ($i=1; $i -le 2; $i++)
{
$ext = @{
    Publisher = 'Microsoft.Compute'
    ExtensionType = 'CustomScriptExtension'
    ExtensionName = 'IIS'
    ResourceGroupName = $rg.name
    VMName = "myVM$i"
    Location = 'westus2'
    TypeHandlerVersion = '1.8'
    SettingString = '{"commandToExecute":"powershell Add-WindowsFeature Web-Server; powershell Add-Content -Path \"C:\\inetpub\\wwwroot\\Default.htm\" -Value $($env:computername)"}'
}
Set-AzVMExtension @ext -AsJob
}

Uzantılar PowerShell işleri olarak dağıtılır. Yükleme işlerinin durumunu görüntülemek için Get-Job kullanın:

Get-Job

Id     Name            PSJobTypeName   State         HasMoreData     Location             Command
--     ----            -------------   -----         -----------     --------             -------
8      Long Running O… AzureLongRunni… Running       True            localhost            Set-AzVMExtension
9      Long Running O… AzureLongRunni… Running       True            localhost            Set-AzVMExtension

Sonraki adımlara geçmeden önce işlerin Durumunun Tamamlandı olduğundan emin olun.

Yük dengeleyiciyi test etme

Yük dengeleyicinin genel IP adresini almak için Get-AzPublicIpAddress komutunu kullanın:

$ip = @{
    ResourceGroupName = $rg.name
    Name = 'myPublicIP'
}  
Get-AzPublicIPAddress @ip | select IpAddress

Genel IP adresini kopyalayıp tarayıcınızın adres çubuğuna yapıştırın. IIS Web sunucusunun varsayılan sayfası, tarayıcıda görüntülenir.

Yük dengeleyici testi web sayfasının ekran görüntüsü.

Kaynakları temizleme

Artık gerekli olmadığında Remove-AzResourceGroup komutunu kullanarak kaynak grubunu, yük dengeleyiciyi ve kalan kaynakları kaldırabilirsiniz.

Remove-AzResourceGroup -Name $rg.name

Sonraki adımlar

Bu hızlı başlangıçta:

  • Azure Load Balancer oluşturuldu

  • Yük dengeleyiciye 2 VM eklendi

  • Yük dengeleyiciyi test etti

Azure Load Balancer hakkında daha fazla bilgi edinmek için devam edin: