البدء السريع: إنشاء موازن تحميل عام لتحميل موازنة الأجهزة الظاهرية باستخدام Azure PowerShell
ابدأ مع Azure Load Balancer باستخدام Azure PowerShell لإنشاء موازن تحميل عام وجهازين ظاهريين. أيضا، يمكنك نشر موارد أخرى بما في ذلك Azure Bastion وبوابة NAT وشبكة ظاهرية والشبكات الفرعية المطلوبة.
المتطلبات الأساسية
حساب Azure مع اشتراك نشط. إنشاء حساب مجانًا
Azure PowerShell مثبت محليًا أو Azure Cloud Shell.
إذا اخترت تثبيت PowerShell واستخدمته محليًا، فستتطلب هذه المقالة إصدار الوحدة Azure PowerShell 5.4.1 أو إصدارًا أحدث. بادر بتشغيل Get-Module -ListAvailable Az
للعثور على الإصدار المثبت. إذا كنت بحاجة إلى الترقية، فراجع تثبيت الوحدة النمطية Azure PowerShell. في حالة تشغيل PowerShell محليًا، فأنت بحاجة أيضًا إلى تشغيل Connect-AzAccount
لإنشاء اتصال مع Azure.
إنشاء مجموعة موارد
مجموعة موارد Azure هي حاوية منطقية يتم بها نشر موارد Azure وإدارتها.
إنشاء مجموعة موارد باستخدام New AzResourceGroup:
$rg = @{
Name = 'CreatePubLBQS-rg'
Location = 'westus2'
}
New-AzResourceGroup @rg
بإنشاء عنوان IP عام
استخدم New-AzPublicIpAddress لإنشاء عنوان IP عام.
$publicip = @{
Name = 'myPublicIP'
ResourceGroupName = $rg.name
Location = 'westus2'
Sku = 'Standard'
AllocationMethod = 'static'
Zone = 1,2,3
}
New-AzPublicIpAddress @publicip
لإنشاء عنوان IP عام في المنطقة 1، استخدم الأمر التالي:
$publicip = @{
Name = 'myPublicIP'
ResourceGroupName = $rg.name
Location = 'westus2'
Sku = 'Standard'
AllocationMethod = 'static'
Zone = 1
}
New-AzPublicIpAddress @publicip
إنشاء موازنة التحميل
يوضح هذا القسم بالتفصيل كيفية إنشاء المكونات التالية من موازن التحميل وتكوينها:
إنشاء عنوان IP للواجهة الأمامية باستخدام New-AzLoadBalancerFrontendIpConfig لتجمع IP للواجهة الأمامية. يتلقى عنوان IP هذا حركة المرور الواردة على موازن التحميل
إنشاء تجمع عناوين الخلفية مع New-AzLoadBalancerBackendAddressPoolConfig لحركة المرور المرسلة من الواجهة الأمامية لموازن التحميل. هذا التجمع، حيث يتم توزيع الأجهزة الظاهرية الخلفية
إنشاء فحص حالة باستخدام Add-AzLoadBalancerProbeConfig الذي يحدد حالة مثيلات الجهاز الظاهري الخلفية
إنشاء قاعدة موازن تحميل باستخدام Add-AzLoadBalancerRuleConfig التي تحدد كيفية توزيع نسبة استخدام الشبكة على الأجهزة الظاهرية
إنشاء موازنة تحميل عامة باستخدام New-AzLoadBalancer
## Place public IP created in previous steps into variable. ##
$pip = @{
Name = 'myPublicIP'
ResourceGroupName = $rg.name
}
$publicIp = Get-AzPublicIpAddress @pip
## Create load balancer frontend configuration and place in variable. ##
$fip = @{
Name = 'myFrontEnd'
PublicIpAddress = $publicIp
}
$feip = New-AzLoadBalancerFrontendIpConfig @fip
## 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 -DisableOutboundSNAT
## Create the load balancer resource. ##
$loadbalancer = @{
ResourceGroupName = $rg.name
Name = 'myLoadBalancer'
Location = 'westus2'
Sku = 'Standard'
FrontendIpConfiguration = $feip
BackendAddressPool = $bePool
LoadBalancingRule = $rule
Probe = $healthprobe
}
New-AzLoadBalancer @loadbalancer
تكوين شبكة اتصال ظاهرية
قبل نشر الأجهزة الظاهرية واختبار موازن التحميل الخاص بك إنشاء موارد شبكة الاتصال الظاهرية المعتمدة.
إنشاء شبكة ظاهرية للأجهزة الظاهرية الخلفية.
إنشاء مجموعة أمان شبكة اتصال لتعريف الاتصالات الواردة إلى شبكة الاتصال الظاهرية.
إنشاء مضيف Azure Bastion لإدارة الأجهزة الظاهرية بأمان في التجمع الخلفي.
استخدم بوابة NAT لتوفير الوصول إلى الإنترنت الصادر إلى الموارد الموجودة في تجمع الواجهة الخلفية لموازن التحميل.
إنشاء شبكة ظاهرية ومجموعة أمان شبكة ومضيف bastion وبوابة ترجمة عناوين الشبكة (NAT)
إنشاء شبكة ظاهرية باستخدام New-AzVirtualNetwork
إنشاء قاعدة مجموعة أمان الشبكة باستخدام New-AzNetworkSecurityRuleConfig
إنشاء مضيف Azure Bastion باستخدام New-AzBastion
إنشاء مجموعة أمان شبكة باستخدام New-AzNetworkSecurityGroup
إنشاء مورد بوابة ترجمة عناوين الشبكة (NAT) باستخدام New-AzNatGateway
استخدام New-AzVirtualNetworkSubnetConfig لإقران بوابة NAT بالشبكة الفرعية للشبكة الظاهرية
هام
يبدأ التسعير بالساعة من اللحظة التي يتم فيها نشر Bastion، بغض النظر عن استخدام البيانات الصادرة. لمزيد من المعلومات، راجع التسعير ووحدات SKU. إذا كنت تقوم بنشر Bastion كجزء من برنامج تعليمي أو اختبار، نوصي بحذف هذا المورد بعد الانتهاء من استخدامه.
## Create public IP address for NAT gateway ##
$ip = @{
Name = 'myNATgatewayIP'
ResourceGroupName = $rg.name
Location = 'westus2'
Sku = 'Standard'
AllocationMethod = 'Static'
}
$publicIP = New-AzPublicIpAddress @ip
## Create NAT gateway resource ##
$nat = @{
ResourceGroupName = $rg.name
Name = 'myNATgateway'
IdleTimeoutInMinutes = '10'
Sku = 'Standard'
Location = 'westus2'
PublicIpAddress = $publicIP
}
$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 = $rg.name
Location = 'westus2'
AddressPrefix = '10.1.0.0/16'
Subnet = $subnetConfig,$bastsubnetConfig
}
$vnet = New-AzVirtualNetwork @net
## Create public IP address for bastion host. ##
$ip = @{
Name = 'myBastionIP'
ResourceGroupName = $rg.name
Location = 'westus2'
Sku = 'Standard'
AllocationMethod = 'Static'
}
$publicip = New-AzPublicIpAddress @ip
## Create bastion host ##
$bastion = @{
ResourceGroupName = $rg.name
Name = 'myBastion'
PublicIpAddress = $publicip
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 = $rg.name
Location = 'westus2'
SecurityRules = $rule1
}
New-AzNetworkSecurityGroup @nsg
أنشئ الأجهزة الظاهرية
في هذا القسم، يمكنك إنشاء الجهازين الظاهريين لتجمع الواجهة الخلفية لموازن التحميل.
إنشاء واجهتين للشبكة باستخدام New-AzNetworkInterface
قم بتعيين اسم المستخدم وكلمة مرور المسؤول للجهاز الظاهري باستخدام Get-Credential
أنشئ الأجهزة الظاهرية باستخدام:
# Set the administrator and password for the VMs. ##
$cred = Get-Credential
## Place the virtual network into a variable. ##
$net = @{
Name = 'myVNet'
ResourceGroupName = $rg.name
}
$vnet = Get-AzVirtualNetwork @net
## Place the load balancer into a variable. ##
$lb = @{
Name = 'myLoadBalancer'
ResourceGroupName = $rg.name
}
$bepool = Get-AzLoadBalancer @lb | Get-AzLoadBalancerBackendAddressPoolConfig
## Place the network security group into a variable. ##
$ns = @{
Name = 'myNSG'
ResourceGroupName = $rg.name
}
$nsg = Get-AzNetworkSecurityGroup @ns
## 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 = $rg.name
Location = 'westus2'
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 = $rg.name
Location = 'westus2'
VM = $vmConfig
Zone = "$i"
}
New-AzVM @vm -AsJob
}
يتم إرسال عمليات نشر الأجهزة الظاهرية ومضيف bastion كمناقل وظائف PowerShell. لعرض حالة المهام، استخدم Get-Job:
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
تأكد من أن حالة إنشاء الجهاز الظاهري بالقيمة مكتمل قبل الانتقال إلى الخطوات التالية.
إشعار
يوفر Azure عنوان IP افتراضيا للوصول الصادر للأجهزة الظاهرية التي لم يتم تعيين عنوان IP عام لها أو الموجودة في تجمع الواجهة الخلفية لموازن تحميل Azure الأساسي الداخلي. توفر آلية IP للوصول الصادر الافتراضي عنوان IP صادر غير قابل للتكوين.
يتم تعطيل عنوان IP الافتراضي للوصول الصادر عند حدوث أحد الأحداث التالية:
- يتم تعيين عنوان IP عام إلى الجهاز الظاهري.
- يتم وضع الجهاز الظاهري في تجمع الواجهة الخلفية لموازن التحميل القياسي، مع قواعد صادرة أو بدونها.
- يتم تعيين مورد Azure NAT Gateway إلى الشبكة الفرعية للجهاز الظاهري.
لا تتمتع الأجهزة الظاهرية التي تقوم بإنشائها باستخدام مجموعات مقياس الجهاز الظاهري في وضع التنسيق المرن بالوصول الصادر الافتراضي.
لمزيد من المعلومات حول الاتصالات الصادرة في Azure، راجع الوصول الصادر الافتراضي في Azure واستخدام ترجمة عنوان الشبكة المصدر (SNAT) للاتصالات الصادرة.
تثبيت IIS
استخدم Set-AzVMExtension لتثبيت ملحق البرنامج النصي المخصص.
يتم تشغيل PowerShell Add-WindowsFeature Web-Server
الملحق لتثبيت خادم ويب IIS ثم تحديث صفحة Default.htm لإظهار اسم مضيف الجهاز الظاهري:
هام
تأكد من اكتمال عمليات نشر الجهاز الظاهري من الخطوات السابقة قبل المتابعة. استخدم 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 = $rg.name
VMName = "myVM$i"
Location = 'westus2'
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
}
يتم نشر الملحقات كمهمات PowerShell. لعرض حالة مهام التثبيت، استخدم Get-Job:
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
تأكد من أن حالة المهام بالقيمة مكتمل قبل الانتقال إلى الخطوات التالية.
اختبار موازن التحميل
استخدم Get-AzPublicIpAddress للحصول على عنوان IP العام لموازن التحميل:
$ip = @{
ResourceGroupName = $rg.name
Name = 'myPublicIP'
}
Get-AzPublicIPAddress @ip | select IpAddress
نسخ عنوان IP العام، ثم ألصقه في شريط العنوان في متصفحك. يتم عرض الصفحة الافتراضية لخادم ويب IIS على المستعرض.
تنظيف الموارد
عند انتهاء الحاجة إليها، يمكنك استخدام الأمر Remove-AzResourceGroupلإزالة مجموعة الموارد، وموازن التحميل، وجميع الموارد ذات الصلة:
Remove-AzResourceGroup -Name $rg.name
الخطوات التالية
في هذه البداية السريعة، قمت بـ:
إنشاء موازن تحميل Azure
إرفاق جهازين ظاهريين إلى موازن التحميل
اختبار موازن التحميل
لمعرفة المزيد حول موازن تحميل Azure، تابع: