Aracılığıyla paylaş


Öğretici: Azure PowerShell ile Sanal Makine Ölçek Kümelerine uygulama yükleme

Uygulamaları bir ölçek kümesindeki sanal makine (VM) örneklerinde çalıştırmak için önce uygulama bileşenlerini ve gerekli dosyaları yüklemeniz gerekir. Önceki bir öğreticide, VM örneklerinizi dağıtmak için özel bir VM görüntüsü oluşturmayı ve kullanmayı öğrendinsiniz. Bu özel görüntü, el ile uygulama yüklemelerini ve yapılandırmalarını içeriyor. Ayrıca, her VM örneği dağıtıldıktan sonra uygulamaların bir ölçek kümesine yüklenmesini otomatikleştirebilir veya zaten bir ölçek kümesinde çalışan bir uygulamayı güncelleştirebilirsiniz. Bu öğreticide şunların nasıl yapılacağını öğreneceksiniz:

  • Uygulamaları ölçek kümenize otomatik olarak yükleme
  • Azure Özel Betik Uzantısı'nı kullanma
  • Ölçek kümesinde çalışan bir uygulamayı güncelleştirme

Eğer bir Azure aboneliğiniz yoksa, başlamadan önce ücretsiz bir hesap oluşturun.

Azure Cloud Shell

Azure, tarayıcınız aracılığıyla kullanabileceğiniz etkileşimli bir kabuk ortamı olan Azure Cloud Shell'i barındırıyor. Azure hizmetleriyle çalışmak için Cloud Shell ile Bash veya PowerShell kullanabilirsiniz. Yerel ortamınıza herhangi bir şey yüklemek zorunda kalmadan bu makaledeki kodu çalıştırmak için Cloud Shell önceden yüklenmiş komutlarını kullanabilirsiniz.

Azure Cloud Shell'i başlatmak için:

Seçenek Örnek/Bağlantı
Kodun veya komut bloğunun sağ üst köşesindeki Deneyin'i seçin. Deneyin seçildiğinde kod veya komut otomatik olarak Cloud Shell'e kopyalanmaz. Azure Cloud Shell için Deneyin örneğini gösteren ekran görüntüsü.
https://shell.azure.comadresine gidin veya Cloud Shell'i tarayıcınızda açmak için Cloud Shell'i Başlat düğmesini seçin. Azure Cloud Shell'i başlatma düğmesi.
Azure portalının sağ üst kısmındaki menü çubuğunda Cloud Shell düğmesini seçin. Azure portalında Cloud Shell düğmesini gösteren ekran görüntüsü

Azure Cloud Shell'i kullanmak için:

  1. Cloud Shell'i başlatın.

  2. Kodu veya komutu kopyalamak için kod bloğundaki (veya komut bloğundaki) Kopyala düğmesini seçin.

  3. Kodu veya komutu Cloud Shell oturumuna yapıştırmak için Windows ve Linux'ta Ctrl+Shift+V seçeneğini veya macOS'ta Cmd+Shift+V seçeneğini kullanın.

  4. Kodu veya komutu çalıştırmak için Enter'ı seçin.

Azure Özel Betik Uzantısı nedir?

Özel Betik Uzantısı, Azure VM'lerinde betikleri indirir ve yürütür. Bu uzantı dağıtım sonrası yapılandırma, yazılım yüklemesi veya diğer yapılandırma/yönetim görevleri için kullanışlıdır. Betikler Azure depolama veya GitHub'dan indirilebilir veya uzantı çalışma zamanında Azure portalına sağlanabilir.

Özel Betik uzantısı Azure Resource Manager şablonlarıyla entegrasyon sağlar. Azure CLI, Azure PowerShell, Azure portalı veya REST API ile de kullanılabilir. Daha fazla bilgi için Özel Betik Uzantısı genel görünümüne bakın.

Özelleştirilmiş Betik Uzantısını çalışırken görmek için IIS web sunucusunun kurulumunu gerçekleştiren ve ölçek kümesi VM örneğinin ana bilgisayar adını çıkaran bir ölçek kümesi oluşturun. Özel Betik Uzantısı tanımı GitHub'dan bir örnek betik indirir, gerekli paketleri yükler, ardından VM örneği ana bilgisayar adını temel bir HTML sayfasına yazar.

Ölçek kümesi oluşturma

New-AzResourceGroup ile bir kaynak grubu oluşturun. Aşağıdaki örnek, Doğu ABD konumunda myResourceGroup adlı bir kaynak grubu oluşturur:

New-AzResourceGroup -Name myResourceGroup -Location "East US"

Şimdi New-AzVmss ile bir Sanal Makine Ölçek Kümesi oluşturun. Trafiği tek tek VM örneklerine dağıtmak için bir yük dengeleyici de oluşturulur. Yük dengeleyici, trafiği TCP bağlantı noktası 80'e dağıtmak için kurallar içerir. Ayrıca TCP bağlantı noktası 3389 üzerinden uzak masaüstü trafiğine ve TCP bağlantı noktası 5985 üzerinde PowerShell uzak iletişimine izin verir. İstendiğinde, ölçek kümesindeki VM örnekleri için kendi yönetim kimlik bilgilerinizi ayarlayabilirsiniz:

New-AzVmss `
  -ResourceGroupName "myResourceGroup" `
  -VMScaleSetName "myScaleSet" `
  -OrchestrationMode "Flexible" `
  -Location "EastUS" `
  -UpgradePolicyMode "Manual" `
  -VirtualNetworkName "myVnet" `
  -SubnetName "mySubnet" `
  -PublicIpAddressName "myPublicIPAddress" `
  -LoadBalancerName "myLoadBalancer" 

Tüm ölçek kümesi kaynaklarının ve VM'lerin oluşturulup yapılandırılması birkaç dakika sürer.

Özel Script Uzantısı tanımı oluşturma

Azure PowerShell, indirilmesi gereken dosyayı ve yürütülecek komutu depolamak için bir karma tablo kullanır. Aşağıdaki örnekte GitHub'dan örnek bir komut dosyası kullanılmıştır. İlk olarak, bu yapılandırma nesnesini aşağıdaki gibi oluşturun:

$customConfig = @{
  "fileUris" = (,"https://raw.githubusercontent.com/Azure-Samples/compute-automation-configurations/master/automate-iis.ps1");
  "commandToExecute" = "powershell -ExecutionPolicy Unrestricted -File automate-iis.ps1"
}

Şimdi Add-AzVmssExtension ile Özel Betik Uzantısı'nı uygulayın. Daha önce tanımlanan yapılandırma nesnesi uzantıya geçirilir. Ölçek kümesi profil örneklerindeki uzantıyı Update-AzVmss ile güncelleştirin.

# Get information about the scale set
$vmss = Get-AzVmss `
  -ResourceGroupName "myResourceGroup" `
  -VMScaleSetName "myScaleSet"

# Add the Custom Script Extension to install IIS and configure basic website
$vmss = Add-AzVmssExtension `
  -VirtualMachineScaleSet $vmss `
  -Name "customScript" `
  -Publisher "Microsoft.Compute" `
  -Type "CustomScriptExtension" `
  -TypeHandlerVersion 1.9 `
  -Setting $customConfig

# Update the scale set
Update-AzVmss `
  -ResourceGroupName "myResourceGroup" `
  -Name "myScaleSet" `
  -VirtualMachineScaleSet $vmss

Uzantıyı mevcut ölçek kümesi örneklerine ekleme

Güncelleştirilmiş uzantıyı mevcut tüm ölçek kümesi örneklerine uygulamak için el ile yükseltme gerçekleştirin. Güncelleştirmenin tamamlanması birkaç dakika sürebilir.

Update-AzVmssInstance -ResourceGroupName "myResourceGroup" -VMScaleSetName "myScaleSet" -InstanceId "*"

Ölçek kümesindeki her VM örneği GitHub'dan betiği indirir ve çalıştırır. Daha karmaşık bir örnekte birden çok uygulama bileşeni ve dosyası yüklenebilir. Ölçek kümesi ölçeklendirilirse, yeni VM örnekleri otomatik olarak aynı Özel Betik Uzantısı tanımını uygular ve gerekli uygulamayı yükler.

Uygulamaya ağ trafiğine izin ver

Temel web uygulamasına erişime izin vermek için New-AzNetworkSecurityRuleConfig ve New-AzNetworkSecurityGroup ile bir ağ güvenlik grubu oluşturun. Daha fazla bilgi için Azure Sanal Makine Ölçek Kümeleri için Ağ Oluşturma bölümüne bakın.

#Create a rule to allow traffic over port 80
$nsgFrontendRule = New-AzNetworkSecurityRuleConfig `
  -Name myFrontendNSGRule `
  -Protocol Tcp `
  -Direction Inbound `
  -Priority 200 `
  -SourceAddressPrefix * `
  -SourcePortRange * `
  -DestinationAddressPrefix * `
  -DestinationPortRange 80 `
  -Access Allow

#Create a network security group and associate it with the rule
$nsgFrontend = New-AzNetworkSecurityGroup `
  -ResourceGroupName  "myResourceGroup" `
  -Location EastUS `
  -Name myFrontendNSG `
  -SecurityRules $nsgFrontendRule

$vnet = Get-AzVirtualNetwork `
  -ResourceGroupName  "myResourceGroup" `
  -Name myVnet

$frontendSubnet = $vnet.Subnets[0]

$frontendSubnetConfig = Set-AzVirtualNetworkSubnetConfig `
  -VirtualNetwork $vnet `
  -Name mySubnet `
  -AddressPrefix $frontendSubnet.AddressPrefix `
  -NetworkSecurityGroup $nsgFrontend

Set-AzVirtualNetwork -VirtualNetwork $vnet

Ölçek kümenizi test edin

Web sunucunuzu çalışırken görmek için Get-AzPublicIpAddress ile yük dengeleyicinizin genel IP adresini alın. Aşağıdaki örnek , myResourceGroup kaynak grubunda oluşturulan IP adresini görüntüler:

Get-AzPublicIpAddress -ResourceGroupName "myResourceGroup" | Select IpAddress

Yük dengeleyicinin genel IP adresini bir web tarayıcısına girin. Yük dengeleyici, aşağıdaki örnekte gösterildiği gibi trafiği VM örneklerinizden birine dağıtır:

IIS'de temel web sayfası

Sonraki adımda güncelleştirilmiş bir sürümü görebilmeniz için web tarayıcısını açık bırakın.

Yükseltme ilkesini değiştirme

Önceki bölümde, güncelleştirilmiş uygulamayı tüm ölçek kümesi örneklerine uygulamak için el ile yükseltme gerekiyordu. Güncelleştirmelerin tüm mevcut ölçek kümesi örneklerine otomatik olarak uygulanmasını etkinleştirmek için yükseltme ilkesini el ile otomatik olarak güncelleştirin. Yükseltme ilkeleri hakkında daha fazla bilgi için bkz . Sanal Makine Ölçek Kümeleri için yükseltme ilkeleri.

$vmss = Get-AzVmss -ResourceGroupName "myResourceGroup" -VMScaleSetName "myScaleSet"

Update-Azvmss `
    -ResourceGroupName "myResourceGroup" `
    -Name "myScaleSet" `
    -UpgradePolicyMode "Automatic" `
    -VirtualMachineScaleSet $vmss

Uygulama dağıtımlarını güncelleştirme

Ölçek kümesinin yaşam döngüsü boyunca uygulamanızın güncelleştirilmiş bir sürümünü dağıtmanız gerekebilir. Özel Betik Uzantısı ile güncelleştirilmiş bir dağıtım betiğine başvurabilir ve ardından uzantıyı ölçek kümenize yeniden uygulayın.

customConfigv2 adlı yeni bir yapılandırma tanımı oluşturun. Bu tanım, uygulama yükleme betiğinin güncelleştirilmiş v2 sürümünü çalıştırır:

$customConfigv2 = @{
  "fileUris" = (,"https://raw.githubusercontent.com/Azure-Samples/compute-automation-configurations/master/automate-iis-v2.ps1");
  "commandToExecute" = "powershell -ExecutionPolicy Unrestricted -File automate-iis-v2.ps1"
}

Özel Betik Uzantısı yapılandırmasını ölçek kümenizdeki VM örneklerine güncelleştirin. customConfigv2 tanımı, uygulamanın güncelleştirilmiş sürümünü ölçek kümesine uygulamak için kullanılır:

$vmss = Get-AzVmss `
  -ResourceGroupName "myResourceGroup" `
  -VMScaleSetName "myScaleSet"
 
$vmss.VirtualMachineProfile.ExtensionProfile[0].Extensions[0].Settings = $customConfigv2
 
Update-AzVmss `
  -ResourceGroupName "myResourceGroup" `
  -Name "myScaleSet" `
  -VirtualMachineScaleSet $vmss

Ölçek kümesi artık otomatik yükseltme ilkesi kullandığından, güncelleştirilmiş uygulama mevcut ölçek kümesi örneklerine otomatik olarak uygulanır. Güncelleştirilmiş uygulamayı görmek için web tarayıcınızı yenileyin. Güncelleştirilmiş sürümü görmek için tarayıcınızda web sitesini yenileyin:

IIS'de güncelleştirilmiş web sayfası

Kaynakları temizle

Ölçek kümenizi ve ek kaynakları kaldırmak için Remove-AzResourceGroup ile kaynak grubunu ve tüm kaynaklarını silin. parametresi, -Force ek bir istem olmadan kaynakları silmek istediğinizi onaylar. -AsJob parametresi işlemin tamamlanmasını beklemeden denetimi komut istemine döndürür.

Remove-AzResourceGroup -Name "myResourceGroup" -Force -AsJob

Sonraki Adımlar

Bu öğreticide, Azure PowerShell ile ölçek kümenize uygulamaları otomatik olarak yüklemeyi ve güncelleştirmeyi öğrendiniz:

  • Uygulamaları ölçek kümenize otomatik olarak yükleme
  • Azure Özel Betik Uzantısı'nı kullanma
  • Ölçek kümesinde çalışan bir uygulamayı güncelleştirme

Ölçek kümenizi otomatik olarak ölçeklendirmeyi öğrenmek için sonraki öğreticiye geçin.