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

Bir iç yük dengeleyici ve iki sanal makine oluşturmak için Azure PowerShell'i kullanarak Azure Load Balancer'ı kullanmaya başlayın. Azure Bastion, NAT Ağ Geçidi, sanal ağ ve gerekli alt ağlar ek kaynaklardır.

İç 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.

New-AzResourceGroup -Name 'CreateIntLBQS-rg' -Location 'eastus'

Sanal ağ yapılandırma

İç yük dengeleyici oluşturduğunuzda, yük dengeleyici için ağ olarak bir sanal ağ yapılandırılır. VM'leri dağıtmadan ve yük dengeleyicinizi test etmeden önce destekleyici sanal ağ kaynaklarını oluşturun.

  • NAT ağ geçidi için genel IP oluşturma

  • Arka uç sanal makineleri için sanal ağ oluşturma

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

  • Arka uç havuzundaki sanal makineleri güvenli bir şekilde yönetmek için azure bastion konağı oluşturma

Genel IP adresi oluşturma

NAT ağ geçidi için bir genel IP adresi oluşturmak için New-AzPublicIpAddress kullanın.

## Create public IP address for NAT gateway and place IP in variable ##
$gwpublicip = @{
    Name = 'myNATgatewayIP'
    ResourceGroupName = 'CreateIntLBQS-rg'
    Location = 'eastus'
    Sku = 'Standard'
    AllocationMethod = 'static'
    Zone = 1,2,3
}
$gwpublicip = New-AzPublicIpAddress @gwpublicip

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

## Create a zonal public IP address for NAT gateway and place IP in variable ##
$gwpublicip = @{
    Name = 'myNATgatewayIP'
    ResourceGroupName = 'CreateIntLBQS-rg'
    Location = 'eastus'
    Sku = 'Standard'
    AllocationMethod = 'static'
    Zone = 1
}
$gwpublicip = New-AzPublicIpAddress @gwpublicip

Not

Genel IP adresi NAT ağ geçidi tarafından arka uç havuzundaki sanal makineler için giden bağlantı sağlamak için kullanılır. Bu, iç yük dengeleyici oluşturduğunuzda ve giden bağlantıya sahip olmak için arka uç havuzu kaynaklarına ihtiyaç duyduğunuzda önerilir. Daha fazla bilgi için bkz . NAT ağ geçidi.

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 NAT gateway resource ##
$nat = @{
    ResourceGroupName = 'CreateIntLBQS-rg'
    Name = 'myNATgateway'
    IdleTimeoutInMinutes = '10'
    Sku = 'Standard'
    Location = 'eastus'
    PublicIpAddress = $gwpublicip
}
$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 = 'CreateIntLBQS-rg'
    Location = 'eastus'
    AddressPrefix = '10.1.0.0/16'
    Subnet = $subnetConfig,$bastsubnetConfig
}
$vnet = New-AzVirtualNetwork @net

## Create public IP address for bastion host. ##
$bastionip = @{
    Name = 'myBastionIP'
    ResourceGroupName = 'CreateIntLBQS-rg'
    Location = 'eastus'
    Sku = 'Standard'
    AllocationMethod = 'Static'
}
$bastionip = New-AzPublicIpAddress @bastionip

## Create bastion host ##
$bastion = @{
    ResourceGroupName = 'CreateIntLBQS-rg'
    Name = 'myBastion'
    PublicIpAddress = $bastionip
    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 = 'CreateIntLBQS-rg'
    Location = 'eastus'
    SecurityRules = $rule1
}
New-AzNetworkSecurityGroup @nsg

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şturma

  • 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 virtual network created in previous step into a variable. ##
$net = @{
    Name = 'myVNet'
    ResourceGroupName = 'CreateIntLBQS-rg'
}
$vnet = Get-AzVirtualNetwork @net

## Create load balancer frontend configuration and place in variable. ##
$lbip = @{
    Name = 'myFrontEnd'
    PrivateIpAddress = '10.1.0.4'
    SubnetId = $vnet.subnets[0].Id
}
$feip = New-AzLoadBalancerFrontendIpConfig @lbip

## 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

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

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 virtual network created in previous step into a variable. ##
$net = @{
    Name = 'myVNet'
    ResourceGroupName = 'CreateIntLBQS-rg'
}
$vnet = Get-AzVirtualNetwork @net

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

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

## 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 = 'CreateIntLBQS-rg'
    Location = 'eastus'
    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 = 'CreateIntLBQS-rg'
        Location = 'eastus'
        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

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 = 'CreateIntLBQS-rg'
        VMName = "myVM$i"
        Location = 'eastus'
        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

Test sanal makinesini oluşturma

Sanal makineyi şu şekilde oluşturun:

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

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

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

## Command to create network interface for VM ##
$nic = @{
    Name = "myNicTestVM"
    ResourceGroupName = 'CreateIntLBQS-rg'
    Location = 'eastus'
    Subnet = $vnet.Subnets[0]
    NetworkSecurityGroup = $nsg
}
$nicVM = New-AzNetworkInterface @nic

## Create a virtual machine configuration for VMs ##
$vmsz = @{
    VMName = "myTestVM"
    VMSize = 'Standard_DS1_v2' 
}
$vmos = @{
    ComputerName = "myTestVM"
    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 = 'CreateIntLBQS-rg'
    Location = 'eastus'
    VM = $vmConfig
}
New-AzVM @vm

Yük dengeleyiciyi test etme

  1. Azure portalda oturum açın.

  2. Genel Bakış ekranında yük dengeleyicinin özel IP adresini bulun. Sol taraftaki menüden Tüm hizmetler'i seçin, Tüm kaynaklar'ı ve ardından myLoadBalancer öğesini seçin.

  3. myLoadBalancer'a Genel Bakış bölümünde Özel IP Adresi'nin yanındaki adresi not edin veya kopyalayın.

  4. Sol taraftaki menüden Tüm hizmetler'i seçin, Tüm kaynaklar'ı seçin ve ardından kaynaklar listesinden CreateIntLBQS-rg kaynak grubunda bulunan myTestVM öğesini seçin.

  5. Genel Bakış sayfasında Bağlan'ı ve ardından Bastion ögesini seçin.

  6. VM oluşturma sırasında girilen kullanıcı adını ve parolayı girin.

  7. MyTestVM'de Internet Explorer'ı açın.

  8. Önceki adımdaki IP adresini tarayıcının adres çubuğuna girin. Özel IIS Web sunucusu sayfası görüntülenir.

    Yük dengeli VM için varsayılan web sayfasını gösteren web tarayıcısının ekran görüntüsü

Yük dengeleyicinin trafiği üç VM'ye de dağıtabildiğini görmek için test makinesinden web tarayıcınızı yenilemeye zorlayabilirsiniz.

Kaynakları temizleme

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

Remove-AzResourceGroup -Name 'CreateIntLBQS-rg'

Sonraki adımlar

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

  • İç yük dengeleyici oluşturdunuz

  • Ekli sanal makineler

  • Yük dengeleyici trafik kuralı ve sistem durumu yoklaması yapılandırıldı

  • Yük dengeleyiciyi test etti

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