Uygulamaları Azure Virtual Machine Scale Set’e Azure PowerShell ile Yükleme
Azure virtual machine scale set (VM) örneklerinde uygulamaları çalıştırmak için önce uygulama bileşenlerini ve gerekli dosyaları yüklemeniz gerekmektedir. Önceki bir makalelerde, VM örneklerinizi dağıtmak için özel bir VM image oluşturmayı ve kullanmayı göstermiştik. Ayrıca, her VM örneğinin konuşlandırılmasından sonra uygulamaların yüklenmesini ayarlanan bir ölçekle otomatikleştirebilir veya zaten bir ölçek kümesi üzerinde çalışan bir uygulamayı güncelleyebilirsiniz.
Öncelikle New-AzureRMVmss ile ayarlanmış bir sanal makine ölçeği oluşturacağız. Trafiği bireysel VM örneklerine dağıtmak için bir yük dengeleyici de yaratılacaktır. Yük dengeleyici, TCP bağlantı noktası 80’de trafiği dağıtmak için kurallar içerir. Ayrıca, TCP bağlantı noktası 3389’daki uzak masaüstü trafiğine ve 5985 numaralı TCP bağlantı noktasında uzak masaüstü trafiğine de izin verir. İstendiğinde, ölçek kümesindeki VM örnekleri için kendi yönetici kimlik bilgilerinizi ayarlayabilirsiniz:
New-AzureRmVmss `
-ResourceGroupName "OnderRG" `
-VMScaleSetName "OnderScaleSet" `
-Location "NorthEurope" `
-VirtualNetworkName "OnderVnet" `
-SubnetName "OnderSubnet" `
-PublicIpAddressName "OnderPublicIPAddress" `
-LoadBalancerName "OnderLoadBalancer" `
-UpgradePolicyMode "Automatic"
Azure PowerShell, indirilecek dosyayı ve çalıştırılacak komutu saklamak için bir karma tablo kullanır. Aşağıdaki örnekte GitHub’dan bir örnek komut dosyası kullanılmıştır. İlk önce, 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-AzureRMVmssExtension ile özel komut dosyası uzantısını uygulayabilirsiniz. Önceden tanımlanmış olan yapılandırma nesnesi uzantıya geçirilir. VM örneklerinde uzantıyı Update-AzureRMVmss ile güncelleyip ve çalıştırabilirsiniz.
$vmss = Get-AzureRMVmss `
-ResourceGroupName "OnderRG" `
-VMScaleSetName "OnderScaleSet"
$vmss = Add-AzureRMVmssExtension `
-VirtualMachineScaleSet $vmss `
-Name "customScript" `
-Publisher "Microsoft.Compute" `
-Type "CustomScriptExtension" `
-TypeHandlerVersion 1.9 `
-Setting $customConfig
Update-AzureRMVmss `
-ResourceGroupName "OnderRG" `
-Name "OnderScaleSet" `
-VirtualMachineScaleSet $vmss
Ölçek kümesindeki her VM örneği komut dosyasını GitHub’dan indirir ve çalıştırır. Daha karmaşık bir örnekte, birden fazla uygulama bileşeni ve dosya yüklenebilir. Ölçek kümesi ölçeklenirse, yeni VM örnekleri aynı Özel Komut Dosyası Uzantısı tanımını otomatik olarak uygular ve gerekli uygulamayı yükler.
Temel web uygulamasına erişime izin vermek için, New-AzureRMNetworkSecurityRuleConfig ve New-AzureRMNetworkSecurityGroup ile bir ağ güvenlik grubu oluşturabilirsiniz.
$vmss = Get-AzureRMVmss `
-ResourceGroupName "OnderRG" `
-VMScaleSetName "OnderScaleSet"
$nsgFrontendRule = New-AzureRMNetworkSecurityRuleConfig `
-Name OnderFrontendNSGRule `
-Protocol Tcp `
-Direction Inbound `
-Priority 200 `
-SourceAddressPrefix * `
-SourcePortRange * `
-DestinationAddressPrefix * `
-DestinationPortRange 80 `
-Access Allow
$nsgFrontend = New-AzureRMNetworkSecurityGroup `
-ResourceGroupName "OnderRG" `
-Location NorthEurope `
-Name OnderFrontendNSG `
-SecurityRules $nsgFrontendRule
$vnet = Get-AzureRMVirtualNetwork `
-ResourceGroupName "OnderRG" `
-Name OnderVnet
$frontendSubnet = $vnet.Subnets[0]
$frontendSubnetConfig = Set-AzureRMVirtualNetworkSubnetConfig `
-VirtualNetwork $vnet `
-Name OnderSubnet `
-AddressPrefix $frontendSubnet.AddressPrefix `
-NetworkSecurityGroup $nsgFrontend
Set-AzureRMVirtualNetwork -VirtualNetwork $vnet
Update-AzureRMVmss `
-ResourceGroupName "OnderRG" `
-Name "OnderScaleSet" `
-VirtualMachineScaleSet $vmss