Hızlı Başlangıç: Azure PowerShell kullanarak VM'leri yük dengelemek için iç yük dengeleyici oluşturma
Bir iç yük dengeleyici ve iki sanal makine oluşturmak için Azure PowerShell'i kullanarak Azure Load Balancer'ı kullanmaya başlayın. Azure Bastion, NAT Ağ Geçidi, sanal ağ ve gerekli alt ağlar ek kaynaklardır.
Önkoşullar
Etkin aboneliği olan bir Azure hesabı. Ücretsiz hesap oluşturma
Yerel olarak yüklenen Azure PowerShell veya Azure Cloud Shell
PowerShell'i yerel olarak yükleyip kullanmayı tercih ederseniz bu makale, Azure PowerShell modülü 5.4.1 veya sonraki bir sürümünü gerektirir. Yüklü sürümü bulmak için Get-Module -ListAvailable Az
komutunu çalıştırın. Yükseltmeniz gerekirse, bkz. Azure PowerShell modülünü yükleme. PowerShell'i yerel olarak çalıştırıyorsanız Azure ile bağlantı oluşturmak için de komutunu çalıştırmanız Connect-AzAccount
gerekir.
Kaynak grubu oluşturma
Azure kaynak grubu, Azure kaynaklarının dağıtıldığı ve yönetildiği bir mantıksal kapsayıcıdır.
New-AzResourceGroup ile bir kaynak grubu oluşturun.
New-AzResourceGroup -Name 'CreateIntLBQS-rg' -Location 'eastus'
Sanal ağ yapılandırma
İç yük dengeleyici oluşturduğunuzda, yük dengeleyici için ağ olarak bir sanal ağ yapılandırılır. VM'leri dağıtmadan ve yük dengeleyicinizi test etmeden önce destekleyici sanal ağ kaynaklarını oluşturun.
NAT ağ geçidi için genel IP oluşturma
Arka uç sanal makineleri için sanal ağ oluşturma
Sanal ağınıza gelen bağlantıları tanımlamak için bir ağ güvenlik grubu oluşturma
Arka uç havuzundaki sanal makineleri güvenli bir şekilde yönetmek için azure bastion konağı oluşturma
Genel IP adresi oluşturma
NAT ağ geçidi için bir genel IP adresi oluşturmak için New-AzPublicIpAddress kullanın.
## Create public IP address for NAT gateway and place IP in variable ##
$gwpublicip = @{
Name = 'myNATgatewayIP'
ResourceGroupName = 'CreateIntLBQS-rg'
Location = 'eastus'
Sku = 'Standard'
AllocationMethod = 'static'
Zone = 1,2,3
}
$gwpublicip = New-AzPublicIpAddress @gwpublicip
Bölge 1'de bölgesel genel IP adresi oluşturmak için aşağıdaki komutu kullanın:
## Create a zonal public IP address for NAT gateway and place IP in variable ##
$gwpublicip = @{
Name = 'myNATgatewayIP'
ResourceGroupName = 'CreateIntLBQS-rg'
Location = 'eastus'
Sku = 'Standard'
AllocationMethod = 'static'
Zone = 1
}
$gwpublicip = New-AzPublicIpAddress @gwpublicip
Not
Genel IP adresi NAT ağ geçidi tarafından arka uç havuzundaki sanal makineler için giden bağlantı sağlamak için kullanılır. Bu, iç yük dengeleyici oluşturduğunuzda ve giden bağlantıya sahip olmak için arka uç havuzu kaynaklarına ihtiyaç duyduğunuzda önerilir. Daha fazla bilgi için bkz . NAT ağ geçidi.
Sanal ağ, ağ güvenlik grubu, savunma konağı ve NAT ağ geçidi oluşturma
New-AzVirtualNetwork ile sanal ağ oluşturma
New-AzNetworkSecurityRuleConfig ile ağ güvenlik grubu kuralı oluşturma
New-AzBastion ile Azure Bastion konağı oluşturma
New-AzNatGateway ile NAT ağ geçidi kaynağı oluşturma
NAT ağ geçidini sanal ağın alt ağıyla ilişkilendirmek için New-AzVirtualNetworkSubnetConfig kullanın
Önemli
Saatlik fiyatlandırma, giden veri kullanımına bakılmaksızın Bastion dağıtıldığından itibaren başlar. Daha fazla bilgi için bkz . Fiyatlandırma ve SKU'lar. Bastion'ı bir öğretici veya test kapsamında dağıtıyorsanız, kullanmayı bitirdikten sonra bu kaynağı silmenizi öneririz.
## Create NAT gateway resource ##
$nat = @{
ResourceGroupName = 'CreateIntLBQS-rg'
Name = 'myNATgateway'
IdleTimeoutInMinutes = '10'
Sku = 'Standard'
Location = 'eastus'
PublicIpAddress = $gwpublicip
}
$natGateway = New-AzNatGateway @nat
## Create backend subnet config ##
$subnet = @{
Name = 'myBackendSubnet'
AddressPrefix = '10.1.0.0/24'
NatGateway = $natGateway
}
$subnetConfig = New-AzVirtualNetworkSubnetConfig @subnet
## Create Azure Bastion subnet. ##
$bastsubnet = @{
Name = 'AzureBastionSubnet'
AddressPrefix = '10.1.1.0/24'
}
$bastsubnetConfig = New-AzVirtualNetworkSubnetConfig @bastsubnet
## Create the virtual network ##
$net = @{
Name = 'myVNet'
ResourceGroupName = 'CreateIntLBQS-rg'
Location = 'eastus'
AddressPrefix = '10.1.0.0/16'
Subnet = $subnetConfig,$bastsubnetConfig
}
$vnet = New-AzVirtualNetwork @net
## Create public IP address for bastion host. ##
$bastionip = @{
Name = 'myBastionIP'
ResourceGroupName = 'CreateIntLBQS-rg'
Location = 'eastus'
Sku = 'Standard'
AllocationMethod = 'Static'
}
$bastionip = New-AzPublicIpAddress @bastionip
## Create bastion host ##
$bastion = @{
ResourceGroupName = 'CreateIntLBQS-rg'
Name = 'myBastion'
PublicIpAddress = $bastionip
VirtualNetwork = $vnet
}
New-AzBastion @bastion -AsJob
## Create rule for network security group and place in variable. ##
$nsgrule = @{
Name = 'myNSGRuleHTTP'
Description = 'Allow HTTP'
Protocol = '*'
SourcePortRange = '*'
DestinationPortRange = '80'
SourceAddressPrefix = 'Internet'
DestinationAddressPrefix = '*'
Access = 'Allow'
Priority = '2000'
Direction = 'Inbound'
}
$rule1 = New-AzNetworkSecurityRuleConfig @nsgrule
## Create network security group ##
$nsg = @{
Name = 'myNSG'
ResourceGroupName = 'CreateIntLBQS-rg'
Location = 'eastus'
SecurityRules = $rule1
}
New-AzNetworkSecurityGroup @nsg
Yük dengeleyici oluşturma
Bu bölümde yük dengeleyicinin aşağıdaki bileşenlerini nasıl oluşturabileceğiniz ve yapılandırabileceğiniz açıklanmaktadır:
Ön uç IP havuzu için New-AzLoadBalancerFrontendIpConfig ile bir ön uç IP oluşturun. Bu IP, yük dengeleyicide gelen trafiği alır
Yük dengeleyicinin ön tarafından gönderilen trafik için New-AzLoadBalancerBackendAddressPoolConfig ile bir arka uç adres havuzu oluşturma
Add-AzLoadBalancerProbeConfig ile arka uç VM örneklerinin durumunu belirleyen bir sistem durumu araştırması oluşturma
Trafiğin VM'lere nasıl dağıtıldığını tanımlayan Add-AzLoadBalancerRuleConfig ile yük dengeleyici kuralı oluşturma
New-AzLoadBalancer ile genel yük dengeleyici oluşturma
## Place virtual network created in previous step into a variable. ##
$net = @{
Name = 'myVNet'
ResourceGroupName = 'CreateIntLBQS-rg'
}
$vnet = Get-AzVirtualNetwork @net
## Create load balancer frontend configuration and place in variable. ##
$lbip = @{
Name = 'myFrontEnd'
PrivateIpAddress = '10.1.0.4'
SubnetId = $vnet.subnets[0].Id
}
$feip = New-AzLoadBalancerFrontendIpConfig @lbip
## Create backend address pool configuration and place in variable. ##
$bepool = New-AzLoadBalancerBackendAddressPoolConfig -Name 'myBackEndPool'
## Create the health probe and place in variable. ##
$probe = @{
Name = 'myHealthProbe'
Protocol = 'tcp'
Port = '80'
IntervalInSeconds = '360'
ProbeCount = '5'
}
$healthprobe = New-AzLoadBalancerProbeConfig @probe
## Create the load balancer rule and place in variable. ##
$lbrule = @{
Name = 'myHTTPRule'
Protocol = 'tcp'
FrontendPort = '80'
BackendPort = '80'
IdleTimeoutInMinutes = '15'
FrontendIpConfiguration = $feip
BackendAddressPool = $bePool
}
$rule = New-AzLoadBalancerRuleConfig @lbrule -EnableTcpReset
## Create the load balancer resource. ##
$loadbalancer = @{
ResourceGroupName = 'CreateIntLBQS-rg'
Name = 'myLoadBalancer'
Location = 'eastus'
Sku = 'Standard'
FrontendIpConfiguration = $feip
BackendAddressPool = $bePool
LoadBalancingRule = $rule
Probe = $healthprobe
}
New-AzLoadBalancer @loadbalancer
Sanal makineleri oluşturma
Bu bölümde yük dengeleyicinin arka uç havuzu için iki sanal makine oluşturacaksınız.
New-AzNetworkInterface ile üç ağ arabirimi oluşturma
Get-Credential ile VM'ler için yönetici kullanıcı adı ve parolası ayarlama
Aşağıdakilerle sanal makineleri oluşturun:
# Set the administrator and password for the VMs. ##
$cred = Get-Credential
## Place virtual network created in previous step into a variable. ##
$net = @{
Name = 'myVNet'
ResourceGroupName = 'CreateIntLBQS-rg'
}
$vnet = Get-AzVirtualNetwork @net
## Place the load balancer into a variable. ##
$lb = @{
Name = 'myLoadBalancer'
ResourceGroupName = 'CreateIntLBQS-rg'
}
$bepool = Get-AzLoadBalancer @lb | Get-AzLoadBalancerBackendAddressPoolConfig
## Place the network security group into a variable. ##
$sg = {
Name = 'myNSG'
ResourceGroupName = 'CreateIntLBQS-rg' @sg
}
$nsg = Get-AzNetworkSecurityGroup
## For loop with variable to create virtual machines for load balancer backend pool. ##
for ($i=1; $i -le 2; $i++)
{
## Command to create network interface for VMs ##
$nic = @{
Name = "myNicVM$i"
ResourceGroupName = 'CreateIntLBQS-rg'
Location = 'eastus'
Subnet = $vnet.Subnets[0]
NetworkSecurityGroup = $nsg
LoadBalancerBackendAddressPool = $bepool
}
$nicVM = New-AzNetworkInterface @nic
## Create a virtual machine configuration for VMs ##
$vmsz = @{
VMName = "myVM$i"
VMSize = 'Standard_DS1_v2'
}
$vmos = @{
ComputerName = "myVM$i"
Credential = $cred
}
$vmimage = @{
PublisherName = 'MicrosoftWindowsServer'
Offer = 'WindowsServer'
Skus = '2019-Datacenter'
Version = 'latest'
}
$vmConfig = New-AzVMConfig @vmsz `
| Set-AzVMOperatingSystem @vmos -Windows `
| Set-AzVMSourceImage @vmimage `
| Add-AzVMNetworkInterface -Id $nicVM.Id
## Create the virtual machine for VMs ##
$vm = @{
ResourceGroupName = 'CreateIntLBQS-rg'
Location = 'eastus'
VM = $vmConfig
Zone = "$i"
}
}
New-AzVM @vm -asjob
Sanal makinelerin ve savunma konağı dağıtımları PowerShell işleri olarak gönderilir. İşlerin durumunu görüntülemek için Get-Job kullanın:
Get-Job
Id Name PSJobTypeName State HasMoreData Location Command
-- ---- ------------- ----- ----------- -------- -------
1 Long Running O… AzureLongRunni… Completed True localhost New-AzBastion
2 Long Running O… AzureLongRunni… Completed True localhost New-AzVM
3 Long Running O… AzureLongRunni… Completed True localhost New-AzVM
Not
Azure, genel IP adresi atanmamış veya bir iç temel Azure yük dengeleyicinin arka uç havuzunda yer alan VM'ler için varsayılan bir giden erişim IP'si sağlar. Varsayılan giden erişim IP mekanizması, yapılandırılamayan bir giden IP adresi sağlar.
Aşağıdaki olaylardan biri gerçekleştiğinde varsayılan giden erişim IP'si devre dışı bırakılır:
- VM'ye bir genel IP adresi atanır.
- VM, giden kuralları olan veya olmayan standart bir yük dengeleyicinin arka uç havuzuna yerleştirilir.
- VM'nin alt a bilgisayarına bir Azure NAT Gateway kaynağı atanır.
Sanal makine ölçek kümelerini esnek düzenleme modunda kullanarak oluşturduğunuz VM'lerin varsayılan giden erişimi yoktur.
Azure'daki giden bağlantılar hakkında daha fazla bilgi için bkz . Azure'da varsayılan giden erişim ve giden bağlantılar için Kaynak Ağ Adresi Çevirisi'ni (SNAT) kullanma.
IIS yükleme
Özel Betik Uzantısını yüklemek için Set-AzVMExtension komutunu kullanın.
Uzantı, IIS web sunucusunu yüklemek için çalışır PowerShell Add-WindowsFeature Web-Server
ve ardından Default.htm sayfasını VM'nin ana bilgisayar adını gösterecek şekilde güncelleştirir:
Önemli
Devam etmeden önce sanal makine dağıtımlarının önceki adımlardan tamamlandığından emin olun. Sanal makine dağıtım işlerinin durumunu denetlemek için kullanın Get-Job
.
## For loop with variable to install custom script extension on virtual machines. ##
for ($i=1; $i -le 2; $i++)
{
$ext = @{
Publisher = 'Microsoft.Compute'
ExtensionType = 'CustomScriptExtension'
ExtensionName = 'IIS'
ResourceGroupName = 'CreateIntLBQS-rg'
VMName = "myVM$i"
Location = 'eastus'
TypeHandlerVersion = '1.8'
SettingString = '{"commandToExecute":"powershell Add-WindowsFeature Web-Server; powershell Add-Content -Path \"C:\\inetpub\\wwwroot\\Default.htm\" -Value $($env:computername)"}'
}
Set-AzVMExtension @ext -AsJob
}
Uzantılar PowerShell işleri olarak dağıtılır. Yükleme işlerinin durumunu görüntülemek için Get-Job kullanın:
Get-Job
Id Name PSJobTypeName State HasMoreData Location Command
-- ---- ------------- ----- ----------- -------- -------
8 Long Running O… AzureLongRunni… Running True localhost Set-AzVMExtension
9 Long Running O… AzureLongRunni… Running True localhost Set-AzVMExtension
Test sanal makinesini oluşturma
Sanal makineyi şu şekilde oluşturun:
# Set the administrator and password for the VM. ##
$cred = Get-Credential
## Place the virtual network into a variable. ##
$net = @{
Name = 'myVNet'
ResourceGroupName = 'CreateIntLBQS-rg'
}
$vnet = Get-AzVirtualNetwork @net
## Place the network security group into a variable. ##
$sg = {
Name = 'myNSG'
ResourceGroupName = 'CreateIntLBQS-rg' @sg
}
$nsg = Get-AzNetworkSecurityGroup
## Command to create network interface for VM ##
$nic = @{
Name = "myNicTestVM"
ResourceGroupName = 'CreateIntLBQS-rg'
Location = 'eastus'
Subnet = $vnet.Subnets[0]
NetworkSecurityGroup = $nsg
}
$nicVM = New-AzNetworkInterface @nic
## Create a virtual machine configuration for VMs ##
$vmsz = @{
VMName = "myTestVM"
VMSize = 'Standard_DS1_v2'
}
$vmos = @{
ComputerName = "myTestVM"
Credential = $cred
}
$vmimage = @{
PublisherName = 'MicrosoftWindowsServer'
Offer = 'WindowsServer'
Skus = '2019-Datacenter'
Version = 'latest'
}
$vmConfig = New-AzVMConfig @vmsz `
| Set-AzVMOperatingSystem @vmos -Windows `
| Set-AzVMSourceImage @vmimage `
| Add-AzVMNetworkInterface -Id $nicVM.Id
## Create the virtual machine for VMs ##
$vm = @{
ResourceGroupName = 'CreateIntLBQS-rg'
Location = 'eastus'
VM = $vmConfig
}
New-AzVM @vm
Yük dengeleyiciyi test etme
Genel Bakış ekranında yük dengeleyicinin özel IP adresini bulun. Sol taraftaki menüden Tüm hizmetler'i seçin, Tüm kaynaklar'ı ve ardından myLoadBalancer öğesini seçin.
myLoadBalancer'a Genel Bakış bölümünde Özel IP Adresi'nin yanındaki adresi not edin veya kopyalayın.
Sol taraftaki menüden Tüm hizmetler'i seçin, Tüm kaynaklar'ı seçin ve ardından kaynaklar listesinden CreateIntLBQS-rg kaynak grubunda bulunan myTestVM öğesini seçin.
Genel Bakış sayfasında Bağlan'ı ve ardından Bastion ögesini seçin.
VM oluşturma sırasında girilen kullanıcı adını ve parolayı girin.
MyTestVM'de Internet Explorer'ı açın.
Önceki adımdaki IP adresini tarayıcının adres çubuğuna girin. Özel IIS Web sunucusu sayfası görüntülenir.
Yük dengeleyicinin trafiği üç VM'ye de dağıtabildiğini görmek için test makinesinden web tarayıcınızı yenilemeye zorlayabilirsiniz.
Kaynakları temizleme
Artık gerekli olmadığında Remove-AzResourceGroup komutunu kullanarak kaynak grubunu, yük dengeleyiciyi ve kalan kaynakları kaldırabilirsiniz.
Remove-AzResourceGroup -Name 'CreateIntLBQS-rg'
Sonraki adımlar
Bu hızlı başlangıçta:
İç yük dengeleyici oluşturdunuz
Ekli sanal makineler
Yük dengeleyici trafik kuralı ve sistem durumu yoklaması yapılandırıldı
Yük dengeleyiciyi test etti
Azure Load Balancer hakkında daha fazla bilgi edinmek için devam edin: