Muat lalu lintas seimbang ke komputer virtual untuk ketersediaan tinggi

Sampel skrip Azure PowerShell ini membuat semua yang diperlukan untuk menjalankan beberapa komputer virtual Windows yang dikonfigurasi dalam konfigurasi yang sangat tersedia dan memuat dengan seimbang. Setelah menjalankan skrip, Anda akan memiliki tiga komputer virtual, tergabung ke Ketersedian Azure Set, dan dapat diakses melalui Azure Load Balancer.

Jika diperlukan, pasang Azure PowerShell menggunakan instruksi yang ditemukan di panduan Azure PowerShell, lalu jalankan Connect-AzAccount untuk membuat koneksi dengan Azure.

Jika Anda tidak memiliki langganan Azure, buat akun gratis Azure sebelum memulai.

Skrip sampel

Catatan

Artikel ini menggunakan modul Azure Az PowerShell, yang merupakan modul PowerShell yang direkomendasikan untuk berinteraksi dengan Azure. Untuk mulai menggunakan modul Az PowerShell, lihat Menginstal Azure PowerShell. Untuk mempelajari cara bermigrasi ke modul Az PowerShell, lihat Memigrasikan Azure PowerShell dari AzureRM ke Az.

# Variables for common values
$rgName='MyResourceGroup'
$location='eastus'

# Create user object
$cred = Get-Credential -Message 'Enter a username and password for the virtual machine.'

# Create a resource group.
New-AzResourceGroup -Name $rgName -Location $location

# Create a virtual network.
$subnet = New-AzVirtualNetworkSubnetConfig -Name 'MySubnet' -AddressPrefix 192.168.1.0/24

$vnet = New-AzVirtualNetwork -ResourceGroupName $rgName -Name 'MyVnet' `
  -AddressPrefix 192.168.0.0/16 -Location $location -Subnet $subnet

# Create a public IP address.
$publicIp = New-AzPublicIpAddress -ResourceGroupName $rgName -Name 'myPublicIP' `
  -Location $location -AllocationMethod Dynamic

# Create a front-end IP configuration for the website.
$feip = New-AzLoadBalancerFrontendIpConfig -Name 'myFrontEndPool' -PublicIpAddress $publicIp

# Create the back-end address pool.
$bepool = New-AzLoadBalancerBackendAddressPoolConfig -Name 'myBackEndPool'

# Creates a load balancer probe on port 80.
$probe = New-AzLoadBalancerProbeConfig -Name 'myHealthProbe' -Protocol Http -Port 80 `
  -RequestPath / -IntervalInSeconds 360 -ProbeCount 5

# Creates a load balancer rule for port 80.
$rule = New-AzLoadBalancerRuleConfig -Name 'myLoadBalancerRuleWeb' -Protocol Tcp `
  -Probe $probe -FrontendPort 80 -BackendPort 80 `
  -FrontendIpConfiguration $feip -BackendAddressPool $bePool

# Create three NAT rules for port 3389.
$natrule1 = New-AzLoadBalancerInboundNatRuleConfig -Name 'myLoadBalancerRDP1' -FrontendIpConfiguration $feip `
  -Protocol tcp -FrontendPort 4221 -BackendPort 3389

$natrule2 = New-AzLoadBalancerInboundNatRuleConfig -Name 'myLoadBalancerRDP2' -FrontendIpConfiguration $feip `
  -Protocol tcp -FrontendPort 4222 -BackendPort 3389

$natrule3 = New-AzLoadBalancerInboundNatRuleConfig -Name 'myLoadBalancerRDP3' -FrontendIpConfiguration $feip `
  -Protocol tcp -FrontendPort 4223 -BackendPort 3389

# Create a load balancer.
$lb = New-AzLoadBalancer -ResourceGroupName $rgName -Name 'MyLoadBalancer' -Location $location `
  -FrontendIpConfiguration $feip -BackendAddressPool $bepool `
  -Probe $probe -LoadBalancingRule $rule -InboundNatRule $natrule1,$natrule2,$natrule3

# Create a network security group rule for port 3389.
$rule1 = New-AzNetworkSecurityRuleConfig -Name 'myNetworkSecurityGroupRuleRDP' -Description 'Allow RDP' `
  -Access Allow -Protocol Tcp -Direction Inbound -Priority 1000 `
  -SourceAddressPrefix Internet -SourcePortRange * `
  -DestinationAddressPrefix * -DestinationPortRange 3389

# Create a network security group rule for port 80.
$rule2 = New-AzNetworkSecurityRuleConfig -Name 'myNetworkSecurityGroupRuleHTTP' -Description 'Allow HTTP' `
  -Access Allow -Protocol Tcp -Direction Inbound -Priority 2000 `
  -SourceAddressPrefix Internet -SourcePortRange * `
  -DestinationAddressPrefix * -DestinationPortRange 80

# Create a network security group
$nsg = New-AzNetworkSecurityGroup -ResourceGroupName $RgName -Location $location `
-Name 'myNetworkSecurityGroup' -SecurityRules $rule1,$rule2

# Create three virtual network cards and associate with public IP address and NSG.
$nicVM1 = New-AzNetworkInterface -ResourceGroupName $rgName -Location $location `
  -Name 'MyNic1' -LoadBalancerBackendAddressPool $bepool -NetworkSecurityGroup $nsg `
  -LoadBalancerInboundNatRule $natrule1 -Subnet $vnet.Subnets[0]

$nicVM2 = New-AzNetworkInterface -ResourceGroupName $rgName -Location $location `
  -Name 'MyNic2' -LoadBalancerBackendAddressPool $bepool -NetworkSecurityGroup $nsg `
  -LoadBalancerInboundNatRule $natrule2 -Subnet $vnet.Subnets[0]

$nicVM3 = New-AzNetworkInterface -ResourceGroupName $rgName -Location $location `
  -Name 'MyNic3' -LoadBalancerBackendAddressPool $bepool -NetworkSecurityGroup $nsg `
  -LoadBalancerInboundNatRule $natrule3 -Subnet $vnet.Subnets[0]

# Create an availability set.
$as = New-AzAvailabilitySet -ResourceGroupName $rgName -Location $location `
  -Name 'MyAvailabilitySet' -Sku Aligned -PlatformFaultDomainCount 3 -PlatformUpdateDomainCount 3

# Create three virtual machines.

# ############## VM1 ###############

# Create a virtual machine configuration
$vmConfig = New-AzVMConfig -VMName 'myVM1' -VMSize Standard_DS2 -AvailabilitySetId $as.Id | `
  Set-AzVMOperatingSystem -Windows -ComputerName 'myVM1' -Credential $cred | `
  Set-AzVMSourceImage -PublisherName MicrosoftWindowsServer -Offer WindowsServer `
  -Skus 2016-Datacenter -Version latest | Add-AzVMNetworkInterface -Id $nicVM1.Id

# Create a virtual machine
$vm1 = New-AzVM -ResourceGroupName $rgName -Location $location -VM $vmConfig

# ############## VM2 ###############

# Create a virtual machine configuration
$vmConfig = New-AzVMConfig -VMName 'myVM2' -VMSize Standard_DS2 -AvailabilitySetId $as.Id | `
  Set-AzVMOperatingSystem -Windows -ComputerName 'myVM2' -Credential $cred | `
  Set-AzVMSourceImage -PublisherName MicrosoftWindowsServer -Offer WindowsServer `
  -Skus 2016-Datacenter -Version latest | Add-AzVMNetworkInterface -Id $nicVM2.Id

# Create a virtual machine
$vm2 = New-AzVM -ResourceGroupName $rgName -Location $location -VM $vmConfig

# ############## VM3 ###############

# Create a virtual machine configuration
$vmConfig = New-AzVMConfig -VMName 'myVM3' -VMSize Standard_DS2 -AvailabilitySetId $as.Id | `
  Set-AzVMOperatingSystem -Windows -ComputerName 'myVM3' -Credential $cred | `
  Set-AzVMSourceImage -PublisherName MicrosoftWindowsServer -Offer WindowsServer `
  -Skus 2016-Datacenter -Version latest | Add-AzVMNetworkInterface -Id $nicVM3.Id

# Create a virtual machine
$vm3 = New-AzVM -ResourceGroupName $rgName -Location $location -VM $vmConfig

Menghapus penyebaran

Jalankan perintah berikut untuk menghapus grup sumber daya, VM, dan semua sumber daya terkait.

Remove-AzResourceGroup -Name myResourceGroup

Penjelasan skrip

Skrip ini menggunakan perintah berikut untuk membuat grup sumber daya, komputer virtual, set ketersediaan, penyeimbang beban, dan semua sumber daya terkait. Setiap perintah dalam tabel ditautkan ke dokumentasi spesifik perintah.

Perintah Catatan
Baru-AzResourceGroup Membuat grup sumber daya tempat semua sumber daya disimpan.
New-AzVirtualNetworkSubnetConfig Membuat konfigurasi subnet. Konfigurasi ini digunakan dengan proses pembuatan jaringan virtual.
New-AzVirtualNetwork Membuat subnet dan jaringan virtual Azure.
New-AzPublicIpAddress Membuat alamat IP publik dengan alamat IP statik dan nama DNS terkait.
New-AzLoadBalancer Membuat penyeimbang beban Azure.
New-AzLoadBalancerProbeConfig Membuat probe penyeimbang beban. Probe penyeimbang beban digunakan untuk memantau setiap VM dalam set penyeimbang beban. Jika ada komputer virtual yang tidak dapat diakses, lalu lintas tidak dialihkan ke komputer virtual.
Baru-AzLoadBalancerRuleConfig Membuat aturan penyeimbang beban. Di sampel ini, aturan dibuat untuk port 80. Saat lalu lintas HTTP tiba di penyeimbang beban, lalu lintas dirutekan ke port 80 salah satu VM di set penyeimbang beban.
Baru-AzLoadBalancerInboundNatRuleConfig Membuat aturan Network Address Translation (NAT) penyeimbang beban. Aturan NAT memetakan port penyeimbang beban ke port pada komputer virtual. Dalam sampel ini, aturan NAT dibuat untuk lalu lintas SSH ke setiap komputer virtual dalam set penyeimbang beban.
Atur-AzNetworkSecurityGroup Membuat kelompok keamanan jaringan (Network Security Grup; NSG), yang merupakan batas keamanan antara internet dan komputer virtual.
New-AzNetworkSecurityRuleConfig Membuat aturan NSG untuk memungkinkan lalu lintas masuk. Dalam sampel ini, port 22 dibuka untuk lalu lintas SSH.
New-AzNetworkInterface Membuat kartu jaringan virtual dan melampirkannya ke jaringan virtual, subnet, dan NSG.
New-AzAvailabilitySet Membuat set ketersediaan. Set ketersediaan memastikan waktu aktif aplikasi dengan menyebarkan komputer virtual di seluruh sumber daya fisik sedemikian rupa sehingga jika kegagalan terjadi, seluruh set tidak terpengaruh.
Baru-AzVMConfig Membuat konfigurasi komputer virtual. Konfigurasi ini mencakup informasi seperti nama komputer virtual, sistem operasi, dan kredensial administratif. Konfigurasi digunakan selama pembuatan komputer virtual.
New-AzVM Membuat komputer virtual dan menyambungkannya ke kartu jaringan, jaringan virtual, subnet, dan NSG. Perintah ini juga menentukan gambar komputer virtual yang akan digunakan dan kredensial administratif.
Remove-AzResourceGroup Menghapus grup sumber daya termasuk semua sumber daya berlapis.

Langkah berikutnya

Untuk informasi selengkapnya tentang Azure PowerShell, lihat dokumentasi Azure PowerShell.

Contoh skrip PowerShell jaringan tambahan dapat ditemukan di dokumentasi Gambaran Umum Jaringan Azure.