Öğretici: Azure PowerShell ile yüksek oranda kullanılabilir bir uygulama oluşturmak için Azure’da Windows sanal makinelerinde yük dengeleme

Şunlar için geçerlidir: ✔️ Windows VM'leri ✔️ Tekdüzen ölçek kümeleri

Yük dengeleme, gelen istekleri birden çok sanal makineye dağıtarak yüksek düzeyde kullanılabilirlik sunar. Bu öğreticide, Azure yük dengeleyicisinin trafiği dağıtan ve yüksek kullanılabilirlik sağlayan farklı bileşenleri hakkında bilgi edinebilirsiniz. Aşağıdakileri nasıl yapacağınızı öğrenirsiniz:

  • Azure yük dengeleyici oluşturma
  • Yük dengeleyici durum yoklaması oluşturma
  • Yük dengeleyici trafik kuralları oluşturma
  • Temel bir IIS sitesi oluşturmak için Özel Betik Uzantısı kullanma
  • Sanal makineler oluşturma ve yük dengeleyici oluşturma
  • Çalışan yük dengeleyiciyi görüntüleme
  • VM’leri yük dengeleyiciye ekleme ve kaldırma

Azure yük dengeleyiciye genel bakışı

Azure yük dengeleyici, gelen trafiği iyi durumdaki VM'ler arasında dağıtmak için yüksek kullanılabilirlik sağlayan bir 4. Katman (TCP, UDP) yük dengeleyicidir. Yük dengeleyici durum araştırması, her VM'deki belirli bir bağlantı noktasını izler ve trafiği yalnızca çalışır durumdaki VM'lere yönlendirir.

Bir veya daha fazla genel IP adresi içeren bir ön uç IP yapılandırması tanımlayın. Bu ön uç IP yapılandırması yük dengeleyicinize ve uygulamalarınıza İnternet üzerinden erişilmesine izin verir.

Sanal makineler, sanal ağ arabirim kartını (NIC) kullanarak bir yük dengeleyiciye bağlanır. Trafiği VM’lere dağıtmak için, bir arka uç adres havuzunda yük dengeleyiciye bağlı sanal NIC’lerin IP adresleri barındırılır.

Trafiğin akışını denetlemek için VM’lerinizle eşlenen belirli bağlantı noktaları ve protokoller için yük dengeleyici kuralları tanımlayın.

Azure Cloud Shell’i başlatma

Azure Cloud Shell, bu makaledeki adımları çalıştırmak için kullanabileceğiniz ücretsiz bir etkileşimli kabuktur. Yaygın Azure araçları, kabuğa önceden yüklenmiştir ve kabuk, hesabınızla birlikte kullanılacak şekilde yapılandırılmıştır.

Cloud Shell'i açmak için kod bloğunun sağ üst köşesinden Deneyin'i seçmeniz yeterlidir. İsterseniz https://shell.azure.com/powershell adresine giderek Cloud Shell'i ayrı bir tarayıcı sekmesinde de başlatabilirsiniz. Kopyala’yı seçerek kod bloğunu kopyalayın, Cloud Shell’e yapıştırın ve Enter tuşuna basarak çalıştırın.

Azure yük dengeleyici oluşturma

Bu bölümde yük dengeleyicinin her bir bileşenini nasıl oluşturacağınız ve yapılandıracağınız açıklanmaktadır. Yük dengeleyicinizi oluşturabilmeniz için önce New-AzResourceGroup ile bir kaynak grubu oluşturun. Aşağıdaki örnek EastUS konumunda myResourceGroupLoadBalancer adlı bir kaynak grubu oluşturur:

New-AzResourceGroup `
  -ResourceGroupName "myResourceGroupLoadBalancer" `
  -Location "EastUS"

Genel IP adresi oluşturma

Uygulamanıza İnternet’ten erişmek için yük dengeleyicinin genel IP adresi gereklidir. New-AzPublicIpAddress ile bir genel IP adresi oluşturun. Aşağıdaki örnek, myResourceGroupLoadBalancer kaynak grubunda myPublicIP adlı bir genel IP adresi oluşturur:

$publicIP = New-AzPublicIpAddress `
  -ResourceGroupName "myResourceGroupLoadBalancer" `
  -Location "EastUS" `
  -AllocationMethod "Static" `
  -Name "myPublicIP"

Yük dengeleyici oluşturma

New-AzLoadBalancerFrontendIpConfig ile bir ön uç IP havuzu oluşturun. Aşağıdaki örnek, myFrontEndPool adlı bir ön uç IP havuzu oluşturur ve myPublicIP adresini ekler:

$frontendIP = New-AzLoadBalancerFrontendIpConfig `
  -Name "myFrontEndPool" `
  -PublicIpAddress $publicIP

New-AzLoadBalancerBackendAddressPoolConfig ile bir arka uç adres havuzu oluşturun. Kalan adımlarda VM’ler bu arka uç havuzuna eklenir. Aşağıdaki örnek myBackEndPool adlı bir arka uç adres havuzu oluşturur:

$backendPool = New-AzLoadBalancerBackendAddressPoolConfig `
  -Name "myBackEndPool"

Şimdi New-AzLoadBalancer ile yük dengeleyiciyi oluşturun. Aşağıdaki örnek, önceki adımlarda oluşturulan ön uç ve arka uç IP havuzlarını kullanarak myLoadBalancer adlı bir yük dengeleyici oluşturur:

$lb = New-AzLoadBalancer `
  -ResourceGroupName "myResourceGroupLoadBalancer" `
  -Name "myLoadBalancer" `
  -Location "EastUS" `
  -FrontendIpConfiguration $frontendIP `
  -BackendAddressPool $backendPool

Durum araştırması oluşturma

Yük dengeleyicinin uygulamanızın durumunu izlemesine izin vermek için durum araştırması kullanabilirsiniz. Durum yoklaması, durum denetimlerine verdikleri yanıtlara göre VM’leri dinamik olarak yük dengeleyici rotasyonuna ekler ve kaldırır. VM, 15 saniyelik aralıklarda art arda iki kez başarısız olursa varsayılan olarak yük dengeleyici dağıtımından kaldırılır. Bir protokolü temel alan bir durum araştırması veya uygulamanız için belirli bir sistem durumu denetim sayfası oluşturun.

Aşağıdaki örnek bir TCP araştırması oluşturur. Ayrıca daha ayrıntılı sistem durumu denetimleri için özel HTTP araştırmaları oluşturabilirsiniz. Özel bir HTTP yoklaması kullanırken healthcheck.aspx gibi bir durum denetimi sayfası oluşturmanız gerekir. Yük dengeleyicinin konağı rotasyonda tutması için yoklamanın HTTP 200 OK yanıtını döndürmesi gerekir.

TCP sistem durumu araştırması oluşturmak için Add-AzLoadBalancerProbeConfig kullanırsınız. Aşağıdaki örnek her VM’yi 80 numaralı TCP bağlantı noktasında izleyen myHealthProbe adında bir durum yoklaması oluşturur:

Add-AzLoadBalancerProbeConfig `
  -Name "myHealthProbe" `
  -LoadBalancer $lb `
  -Protocol tcp `
  -Port 80 `
  -IntervalInSeconds 15 `
  -ProbeCount 2

Sistem durumu araştırmasını uygulamak için yük dengeleyiciyi Set-AzLoadBalancer ile güncelleştirin:

Set-AzLoadBalancer -LoadBalancer $lb

Yük dengeleyici kuralı oluşturma

Trafiğin VM’lere dağıtımını tanımlamak için bir yük dengeleyici kuralı kullanılır. Gerekli kaynak ve hedef bağlantı noktalarının yanı sıra gelen trafik için ön uç IP yapılandırması ve trafiği almak için arka uç IP havuzu tanımlamanız gerekir. Yalnızca durumu iyi olan VM’lerin trafik almasını sağlamak için kullanılacak durum araştırmasını da tanımlamanız gerekir.

Add-AzLoadBalancerRuleConfig ile bir yük dengeleyici kuralı oluşturun. Aşağıdaki örnek, myLoadBalancerRule adlı bir yük dengeleyici kuralı oluşturur ve 80 numaralı TCP bağlantı noktasında trafiği dengeler:

$probe = Get-AzLoadBalancerProbeConfig -LoadBalancer $lb -Name "myHealthProbe"

Add-AzLoadBalancerRuleConfig `
  -Name "myLoadBalancerRule" `
  -LoadBalancer $lb `
  -FrontendIpConfiguration $lb.FrontendIpConfigurations[0] `
  -BackendAddressPool $lb.BackendAddressPools[0] `
  -Protocol Tcp `
  -FrontendPort 80 `
  -BackendPort 80 `
  -Probe $probe

Yük dengeleyiciyi Set-AzLoadBalancer ile güncelleştirin:

Set-AzLoadBalancer -LoadBalancer $lb

Sanal ağ yapılandırma

VM’leri dağıtmadan ve dengeleyicinizi sınamadan önce yardımcı sanal ağ kaynaklarını oluşturun. Sanal ağlar hakkında daha fazla bilgi edinmek için Azure Sanal Ağlarını Yönetme öğreticisine gözatın.

Ağ kaynakları oluşturma

New-AzVirtualNetwork ile bir sanal ağ oluşturun. Aşağıdaki örnek mySubnet alt ağına sahip myVnet adında bir sanal ağ oluşturur:

# Create subnet config
$subnetConfig = New-AzVirtualNetworkSubnetConfig `
  -Name "mySubnet" `
  -AddressPrefix 192.168.1.0/24

# Create the virtual network
$vnet = New-AzVirtualNetwork `
  -ResourceGroupName "myResourceGroupLoadBalancer" `
  -Location "EastUS" `
  -Name "myVnet" `
  -AddressPrefix 192.168.0.0/16 `
  -Subnet $subnetConfig

Sanal NIC'ler New-AzNetworkInterface ile oluşturulur. Aşağıdaki örnek üç sanal NIC oluşturur. (Sonraki adımlarda uygulamanız için oluşturduğunuz her bir VM için bir sanal NIC). İstediğiniz zaman ek sanal NIC’ler ve VM’ler oluşturabilir ve bunları yük dengeleyiciye ekleyebilirsiniz:

for ($i=1; $i -le 3; $i++)
{
   New-AzNetworkInterface `
     -ResourceGroupName "myResourceGroupLoadBalancer" `
     -Name myVM$i `
     -Location "EastUS" `
     -Subnet $vnet.Subnets[0] `
     -LoadBalancerBackendAddressPool $lb.BackendAddressPools[0]
}

Sanal makineler oluşturma

Uygulamanızın yüksek oranda kullanılabilir olmasını sağlamak için VM’lerinizi bir kullanılabilirlik kümesine yerleştirin.

New-AzAvailabilitySet ile bir kullanılabilirlik kümesi oluşturun. Aşağıdaki örnek myAvailabilitySet adında bir kullanılabilirlik kümesi oluşturur:

$availabilitySet = New-AzAvailabilitySet `
  -ResourceGroupName "myResourceGroupLoadBalancer" `
  -Name "myAvailabilitySet" `
  -Location "EastUS" `
  -Sku aligned `
  -PlatformFaultDomainCount 2 `
  -PlatformUpdateDomainCount 2

VM’ler için Get-Credential ile bir yönetici kullanıcı adı ve parola ayarlayın:

$cred = Get-Credential

Artık New-AzVM ile VM'leri oluşturabilirsiniz. Aşağıdaki örnek, üç VM ve mevcut değilse gerekli olan sanal ağ bileşenlerini oluşturur:

for ($i=1; $i -le 3; $i++)
{
    New-AzVm `
        -ResourceGroupName "myResourceGroupLoadBalancer" `
        -Name "myVM$i" `
        -Location "East US" `
        -VirtualNetworkName "myVnet" `
        -SubnetName "mySubnet" `
        -SecurityGroupName "myNetworkSecurityGroup" `
        -OpenPorts 80 `
        -AvailabilitySetName "myAvailabilitySet" `
        -Credential $cred `
        -AsJob
}

PowerShell komut istemlerinin size döndürülmesi için -AsJob parametresi VM’yi arka plan görevi olarak oluşturur. Arka plan işlerinin ayrıntılarını Job cmdlet'i ile görüntüleyebilirsiniz. Üç VM’nin tümünü oluşturup yapılandırmak birkaç dakika sürer.

Özel Betik Uzantısı ile IIS yükleme

Windows sanal makinesini özelleştirme konulu önceki bir öğreticide, Windows için Özel Betik Uzantısı ile VM özelleştirmeyi nasıl otomatikleştirebileceğinizi öğrendiniz. Aynı yaklaşımı, VM'lerinizde IIS yüklemek ve yapılandırmak için kullanabilirsiniz.

Set-AzVMExtension komutunu kullanarak Özel Betik Uzantısı'nı yükleyin. Uzantı, IIS web sunucusunu yüklemek için powershell Add-WindowsFeature Web-Server komutunu çalıştırır ve ardından VM’nin ana bilgisayar adını göstermek için Default.htm sayfasını güncelleştirir:

for ($i=1; $i -le 3; $i++)
{
   Set-AzVMExtension `
     -ResourceGroupName "myResourceGroupLoadBalancer" `
     -ExtensionName "IIS" `
     -VMName myVM$i `
     -Publisher Microsoft.Compute `
     -ExtensionType CustomScriptExtension `
     -TypeHandlerVersion 1.8 `
     -SettingString '{"commandToExecute":"powershell Add-WindowsFeature Web-Server; powershell Add-Content -Path \"C:\\inetpub\\wwwroot\\Default.htm\" -Value $($env:computername)"}' `
     -Location EastUS
}

Yük dengeleyiciyi sınama

Get-AzPublicIPAddress ile yük dengeleyicinizin genel IP adresini alın. Aşağıdaki örnek, daha önce oluşturulan myPublicIP için IP adresini alır:

Get-AzPublicIPAddress `
  -ResourceGroupName "myResourceGroupLoadBalancer" `
  -Name "myPublicIP" | select IpAddress

Daha sonra genel IP adresini bir web tarayıcısına girebilirsiniz. Aşağıdaki örnekteki gibi yük dengeleyicinin trafiği dağıttığı VM’nin ana bilgisayar adının dahil olduğu web sitesi görüntülenir:

Çalışan IIS web sitesi

Yük dengeleyicinin trafiği, uygulamanızı çalıştıran üç VM’ye dağıtma işlemini görmek için web tarayıcınızı yenilemeye zorlayabilirsiniz.

VM’leri ekleme ve kaldırma

Uygulamanızı çalıştıran VM’lerde işletim sistemi güncelleştirmelerini yükleme gibi bakım işlemleri gerçekleştirmeniz gerekebilir. Uygulamanıza gelen trafiği fazla trafiği yönetmek için ek VM’lere ihtiyaç duyabilirsiniz. Bu bölümde VM’yi yük dengeleyiciden nasıl kaldırabileceğiniz veya ekleyebileceğiniz gösterilmektedir.

VM’yi yük dengeleyiciden kaldırma

Get-AzNetworkInterface ile ağ arabirimi kartını alın, ardından sanal NIC'nin LoadBalancerBackendAddressPools özelliğini $null olarak ayarlayın. Son olarak, sanal NIC’yi güncelleştirin:

$nic = Get-AzNetworkInterface `
    -ResourceGroupName "myResourceGroupLoadBalancer" `
    -Name "myVM2"
$nic.Ipconfigurations[0].LoadBalancerBackendAddressPools=$null
Set-AzNetworkInterface -NetworkInterface $nic

Yük dengeleyicinin trafiği, uygulamanızı çalıştıran kalan iki VM’ye dağıtma işlemini görmek için web tarayıcınızı yenilemeye zorlayabilirsiniz. Artık işletim sistemi güncelleştirmelerini yükleme veya VM’yi yeniden başlatma gibi bakım işlemlerini VM üzerinde gerçekleştirebilirsiniz.

Yük dengeleyiciye VM ekleme

VM bakımını gerçekleştirdikten sonra veya kapasiteyi genişletmeniz gerekiyorsa, sanal NIC'nin LoadBalancerBackendAddressPools özelliğini Get-AzLoadBalancer'danBackendAddressPool olarak ayarlayın:

Yük dengeleyiciyi alın:

$lb = Get-AzLoadBalancer `
    -ResourceGroupName myResourceGroupLoadBalancer `
    -Name myLoadBalancer 
$nic.IpConfigurations[0].LoadBalancerBackendAddressPools=$lb.BackendAddressPools[0]
Set-AzNetworkInterface -NetworkInterface $nic

Sonraki adımlar

Bu öğreticide, bir yük dengeleyici oluşturdunuz ve buna sanal makineler eklediniz. Şunları öğrendiniz:

  • Azure yük dengeleyici oluşturma
  • Yük dengeleyici durum yoklaması oluşturma
  • Yük dengeleyici trafik kuralları oluşturma
  • Temel bir IIS sitesi oluşturmak için Özel Betik Uzantısı kullanma
  • Sanal makineler oluşturma ve yük dengeleyici oluşturma
  • Çalışan yük dengeleyiciyi görüntüleme
  • VM’leri yük dengeleyiciye ekleme ve kaldırma

VM ağının nasıl yönetileceğini öğrenmek için sonraki öğreticiye geçin.