البدء السريع: إنشاء موازن تحميل عام لتحميل موازنة الأجهزة الظاهرية باستخدام Azure PowerShell

ابدأ مع Azure Load Balancer باستخدام Azure PowerShell لإنشاء موازن تحميل عام وجهازين ظاهريين. أيضا، يمكنك نشر موارد أخرى بما في ذلك Azure Bastion وبوابة NAT وشبكة ظاهرية والشبكات الفرعية المطلوبة.

رسم تخطيطي للموارد المنشورة لموازن تحميل عام قياسي.

المتطلبات الأساسية

إذا اخترت تثبيت 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)

هام

يبدأ التسعير بالساعة من اللحظة التي يتم فيها نشر 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

أنشئ الأجهزة الظاهرية

في هذا القسم، يمكنك إنشاء الجهازين الظاهريين لتجمع الواجهة الخلفية لموازن التحميل.

# 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، تابع: