Öğretici: Azure PowerShell ile sanal makine ölçek kümeleri için özel görüntü oluşturma ve kullanma
Uygulama: ✔️ Linux VM'leri ✔️ Windows VM'ler ✔️ Tekdüz ölçek kümeleri
Ölçek kümesi oluşturduğunuzda, sanal makine örnekleri dağıtılırken kullanılacak bir görüntü belirtirsiniz. Sanal makine örnekleri dağıtıldıktan sonraki görev sayısını azaltmak için özel bir sanal makine görüntüsünü kullanabilirsiniz. Bu özel sanal makine görüntüsü, gerekli uygulama yüklemelerini veya yapılandırmalarını içerir. Ölçek kümesinde oluşturulan tüm sanal makine örnekleri, özel sanal makine görüntüsünü kullanır ve uygulama trafiğinizi sunmaya hazır olur. Bu öğreticide şunların nasıl yapıldığını öğrenirsiniz:
- Azure İşlem Galerisi oluşturma
- Görüntü tanımı oluşturma
- Görüntü sürümü oluşturma
- Görüntüden ölçek kümesi oluşturma
- Görüntü galerisi paylaşma
Azure aboneliğiniz yoksa başlamadan önce ücretsiz bir hesap oluşturun.
Başlamadan önce
Aşağıdaki adımlarda, mevcut bir VM'yi alıp ölçek kümesi oluşturmak için kullanabileceğiniz yeniden kullanılabilir bir özel görüntüye nasıl dönüştürebilirsiniz?
Bu öğreticideki örneği tamamlamak için, mevcut bir sanal makinenizin olması gerekir. Gerekirse, bu öğreticide kullanmak üzere bir VM oluşturmak için PowerShell hızlı başlangıç adımlarını bulabilirsiniz. Öğreticide çalışırken, gerektiğinde kaynak adlarını değiştirin.
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. Ayrıca, komutuna Cloud Shell ayrı bir tarayıcı sekmesinde de https://shell.azure.com/powershell 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.
VM'yi al
Get-AzVMkullanarak bir kaynak grubunda bulunan VM'lerin listesini görüntülenir. VM adını ve hangi kaynak grubunu biliyor olduktan sonra, VM nesnesini almak ve daha sonra kullanmak üzere Get-AzVM bir değişkende depolamak için yeniden kullanabilirsiniz. Bu örnek, "myResourceGroup" kaynak grubundan sourceVM adlı bir VM alır ve bunu $vm.
$sourceVM = Get-AzVM `
-Name sourceVM `
-ResourceGroupName myResourceGroup
Kaynak grubu oluşturma
New-AzResourceGroup komutuyla bir kaynak grubu oluşturun.
Azure kaynak grubu, Azure kaynaklarının dağıtıldığı ve yönetildiği bir mantıksal kapsayıcıdır. Aşağıdaki örnekte, EastUS bölgesinde myGalleryRG adlı bir kaynak grubu oluşturulur:
$resourceGroup = New-AzResourceGroup `
-Name 'myGalleryRG' `
-Location 'EastUS'
Görüntü galerisi oluşturma
Görüntü galerisi, görüntü paylaşımını etkinleştirmek için kullanılan birincil kaynaktır. Galeri adı için izin verilen karakterler büyük veya küçük harfler, rakamlar, noktalar ve noktalardan oluşur. Galeri adı tire içeramaz. Galeri adları aboneliğiniz içinde benzersiz olmalıdır.
New-AzGallery kullanarak bir görüntü galerisi oluşturun. Aşağıdaki örnek, myGalleryRG kaynak grubunda myGallery adlı bir galeri oluşturur.
$gallery = New-AzGallery `
-GalleryName 'myGallery' `
-ResourceGroupName $resourceGroup.ResourceGroupName `
-Location $resourceGroup.Location `
-Description 'Azure Compute Gallery for my organization'
Görüntü tanımı oluşturma
Görüntü tanımları, görüntüler için mantıksal bir gruplama sağlar. Bunlar, içinde oluşturulan görüntü sürümleriyle ilgili bilgileri yönetmek için kullanılır. Görüntü tanımı adları büyük veya küçük harflerden, rakamlardan, noktalardan, kısa çizgilerden ve noktalardan oluşur. Bir görüntü tanımı için belirtebilirsiniz değerler hakkında daha fazla bilgi için bkz. Görüntü tanımları.
New-AzGalleryImageDefinition kullanarak görüntü tanımını oluşturun. Bu örnekte galeri görüntüsü myGalleryImage olarak adlandırılmıştır ve özelleştirilmiş bir görüntü için oluşturulmuştır.
$galleryImage = New-AzGalleryImageDefinition `
-GalleryName $gallery.Name `
-ResourceGroupName $resourceGroup.ResourceGroupName `
-Location $gallery.Location `
-Name 'myImageDefinition' `
-OsState specialized `
-OsType Windows `
-Publisher 'myPublisher' `
-Offer 'myOffer' `
-Sku 'mySKU'
Görüntü sürümü oluşturma
New-AzGalleryImageVersionkullanarak bir VM'den görüntü sürümü oluşturun.
Görüntü sürümü için izin verilen karakterler sayı ve noktalardandır. Sayılar 32 bit tamsayı aralığında olmalıdır. Biçim: MajorVersion. MinorVersion. Düzeltme eki uygulama.
Bu örnekte görüntü sürümü 1.0.0'dır ve hem Doğu ABD hem de Orta Güney ABD çoğaltılır. Çoğaltma için hedef bölgeleri seçerken, kaynak bölgeyi çoğaltma hedefi olarak dahil etmek gerekir.
VM'den görüntü sürümü oluşturmak için için $vm.Id.ToString() -Source kullanın.
$region1 = @{Name='South Central US';ReplicaCount=1}
$region2 = @{Name='East US';ReplicaCount=2}
$targetRegions = @($region1,$region2)
New-AzGalleryImageVersion `
-GalleryImageDefinitionName $galleryImage.Name`
-GalleryImageVersionName '1.0.0' `
-GalleryName $gallery.Name `
-ResourceGroupName $resourceGroup.ResourceGroupName `
-Location $resourceGroup.Location `
-TargetRegion $targetRegions `
-Source $sourceVM.Id.ToString() `
-PublishingProfileEndOfLifeDate '2020-12-01'
Görüntünün tüm hedef bölgelere çoğaltılması biraz zaman alır.
Görüntüden ölçek kümesi oluşturma
Şimdi New-AzVmss ile, önceki adımda oluşturulan özel VM görüntüsünü tanımlamak -ImageName için parametresini kullanan bir ölçek kümesi oluşturun. Her bir sanal makine örneklerine trafiği dağıtmak için bir yük dengeleyici de oluşturulur. Yük dengeleyici hem 80 numaralı TCP bağlantı noktasında trafiği dağıtmak hem de 3389 numaralı TCP bağlantı noktasında uzak masaüstü trafiğine ve 5985 numaralı TCP bağlantı noktasında PowerShell uzaktan iletişimine olanak tanımak için kurallar içerir. İstendiğinde, ölçek kümesindeki sanal makine örnekleri için kendi istediğiniz yönetici kimlik bilgilerini sağlayın:
# Define variables for the scale set
$resourceGroupName = "myVMSSRG3"
$scaleSetName = "myScaleSet3"
$location = "East US"
# Create a resource group
New-AzResourceGroup -ResourceGroupName $resourceGroupName -Location $location
# Create a networking pieces
$subnet = New-AzVirtualNetworkSubnetConfig `
-Name "mySubnet" `
-AddressPrefix 10.0.0.0/24
$vnet = New-AzVirtualNetwork `
-ResourceGroupName $resourceGroupName `
-Name "myVnet" `
-Location $location `
-AddressPrefix 10.0.0.0/16 `
-Subnet $subnet
$publicIP = New-AzPublicIpAddress `
-ResourceGroupName $resourceGroupName `
-Location $location `
-AllocationMethod Static `
-Name "myPublicIP"
$frontendIP = New-AzLoadBalancerFrontendIpConfig `
-Name "myFrontEndPool" `
-PublicIpAddress $publicIP
$backendPool = New-AzLoadBalancerBackendAddressPoolConfig -Name "myBackEndPool"
$inboundNATPool = New-AzLoadBalancerInboundNatPoolConfig `
-Name "myRDPRule" `
-FrontendIpConfigurationId $frontendIP.Id `
-Protocol TCP `
-FrontendPortRangeStart 50001 `
-FrontendPortRangeEnd 50010 `
-BackendPort 3389
# Create the load balancer and health probe
$lb = New-AzLoadBalancer `
-ResourceGroupName $resourceGroupName `
-Name "myLoadBalancer" `
-Location $location `
-FrontendIpConfiguration $frontendIP `
-BackendAddressPool $backendPool `
-InboundNatPool $inboundNATPool
Add-AzLoadBalancerProbeConfig -Name "myHealthProbe" `
-LoadBalancer $lb `
-Protocol TCP `
-Port 80 `
-IntervalInSeconds 15 `
-ProbeCount 2
Add-AzLoadBalancerRuleConfig `
-Name "myLoadBalancerRule" `
-LoadBalancer $lb `
-FrontendIpConfiguration $lb.FrontendIpConfigurations[0] `
-BackendAddressPool $lb.BackendAddressPools[0] `
-Protocol TCP `
-FrontendPort 80 `
-BackendPort 80 `
-Probe (Get-AzLoadBalancerProbeConfig -Name "myHealthProbe" -LoadBalancer $lb)
Set-AzLoadBalancer -LoadBalancer $lb
# Create IP address configurations
$ipConfig = New-AzVmssIpConfig `
-Name "myIPConfig" `
-LoadBalancerBackendAddressPoolsId $lb.BackendAddressPools[0].Id `
-LoadBalancerInboundNatPoolsId $inboundNATPool.Id `
-SubnetId $vnet.Subnets[0].Id
# Create a configuration
$vmssConfig = New-AzVmssConfig `
-Location $location `
-SkuCapacity 2 `
-SkuName "Standard_DS2" `
-UpgradePolicyMode "Automatic"
# Reference the image version
Set-AzVmssStorageProfile $vmssConfig `
-OsDiskCreateOption "FromImage" `
-ImageReferenceId $galleryImage.Id
# Complete the configuration
Add-AzVmssNetworkInterfaceConfiguration `
-VirtualMachineScaleSet $vmssConfig `
-Name "network-config" `
-Primary $true `
-IPConfiguration $ipConfig
# Create the scale set
New-AzVmss `
-ResourceGroupName $resourceGroupName `
-Name $scaleSetName `
-VirtualMachineScaleSet $vmssConfig
Tüm ölçek kümesi kaynaklarının ve VM'lerin oluşturulup yapılandırılması birkaç dakika sürer.
Galeriyi paylaşma
Görüntü galerisi düzeyinde erişim paylaşmayı öneririz. Kullanıcının nesne kimliğini almak için bir e-posta adresi ve Get-AzADUser cmdlet'ini kullanın, ardından New-AzRoleAssignment kullanarak galeriye erişim izni veresiniz. Bu örnekteki örnek alinne_montes@contoso.com e-postayı kendi bilgileriyle değiştirin.
# Get the object ID for the user
$user = Get-AzADUser -StartsWith alinne_montes@contoso.com
# Grant access to the user for our gallery
New-AzRoleAssignment `
-ObjectId $user.Id `
-RoleDefinitionName Reader `
-ResourceName $gallery.Name `
-ResourceType Microsoft.Compute/galleries `
-ResourceGroupName $resourceGroup.ResourceGroupName
Kaynakları temizleme
Artık gerekli değilken Remove-AzResourceGroup cmdlet'ini kullanarak kaynak grubunu ve tüm ilgili kaynakları kaldırabilirsiniz:
# Delete the gallery
Remove-AzResourceGroup -Name myGalleryRG
# Delete the scale set resource group
Remove-AzResourceGroup -Name myResoureceGroup
Azure Görüntü Oluşturucusu
Azure ayrıca Packer ve üzerinde yerleşik bir hizmet Azure Sanal Makine Görüntüsü Oluşturucu. Özelleştirmelerinizi şablonda açıklamanız ve görüntü oluşturma işlemiyle ilgili bir işlem yapmanız gerekir.
Sonraki adımlar
Bu öğreticide, Azure PowerShell ile ölçek kümeleriniz için özel sanal makine görüntüsü oluşturma ve kullanma işleminin nasıl yapılacağını öğrendiniz:
- Azure İşlem Galerisi oluşturma
- Görüntü tanımı oluşturma
- Görüntü sürümü oluşturma
- Görüntüden ölçek kümesi oluşturma
- Görüntü galerisi paylaşma
Uygulamaların ölçek kümenize nasıl dağıtılacağını öğrenmek için sonraki öğreticiye ilerleyin.