قم بإنشاء موازن تحميل عام باستخدام IPv6 - Azure CLI

إشعار

توضح هذه المقالة ميزة IPv6 التمهيدية للسماح لموزنات التحميل الأساسي بتوفير اتصال IPv4 وIPv6. يتوفر اتصال IPv6 الشامل الآن مع IPv6 لـ Azure VNETs الذي يدمج اتصال IPv6 مع الشبكات الظاهرية الخاصة بك ويتضمن ميزات رئيسية مثل قواعد IPv6 Network Security Group والتوجيه الذي يحدده المستخدم IPv6 وموازنة التحميل IPv6 Basic وStandard وأكثر من ذلك. IPv6 لـ Azure VNETs هو المعيار الموصى به لتطبيقات IPv6 في Azure. راجع IPv6 لتوزيع Azure VNET Powershell

Azure load balancer هو موازن تحميل من الطبقة 4 (TCP وUDP). توفر موازنات التحميل توفراً عالياً من خلال توزيع حركة المرور الواردة بين مثيلات الخدمة السليمة في الخدمات السحابية أو الأجهزة الظاهرية في مجموعة موازن التحميل. يمكن موازنات التحميل أيضاً تقديم هذه الخدمات على منافذ متعددة أو عناوين IP متعددة أو كليهما.

مثال سيناريو النشر

يوضح الرسم التخطيطي التالي حل موازنة التحميل الذي تم نشره باستخدام نموذج القالب الموضح في هذه المقالة.

Load balancer scenario

في هذا السيناريو، يمكنك إنشاء موارد Azure التالية:

  • جهازي ظاهريين (VMs)
  • واجهة شبكة افتراضية لكل جهاز افتراضي مع تعيين كل من عناوين IPv4 و IPv6
  • موازن تحميل عام بعنوان IPv4 وعنوان IP عام IPv6
  • مجموعة توفر تحتوي على جهازي ظاهريين
  • قاعدتان لموازنة التحميل لتعيين كبار الشخصيات العامة إلى نقاط النهاية الخاصة

نشر الحل باستخدام Azure CLI

توضح الخطوات التالية كيفية إنشاء موازن تحميل عام باستخدام Azure CLI. باستخدام CLI، يمكنك إنشاء وتكوين كل كائن على حدة، ثم تجميعها معاً لإنشاء مورد.

لاستخدام موازن التحميل، قم بإنشاء وتكوين الكائنات التالية:

  • تكوين IP للواجهة الأمامية: يحتوي على عناوين IP عامة لحركة مرور الشبكة الواردة.
  • تجمع عناوين الواجهة الخلفية: يحتوي على واجهات شبكة (NICs) للأجهزة الظاهرية لتلقي حركة مرور الشبكة من موازن التحميل.
  • قواعد موازنة التحميل: تحتوي على القواعد التي تعين منفذا عاما على موازن التحميل إلى منفذ في تجمع عناوين الواجهة الخلفية.
  • قواعد NAT الواردة: تحتوي على قواعد ترجمة عناوين الشبكة (NAT) التي تعين منفذا عاما على موازن التحميل إلى منفذ لجهاز ظاهري معين في تجمع عناوين الواجهة الخلفية.
  • Probes: يحتوي على فحوصات السلامة المستخدمة للتحقق من توفر مثيلات الجهاز الظاهري في تجمع عناوين الواجهة الخلفية.

إعداد Azure CLI

في هذا المثال، يمكنك تشغيل أدوات Azure CLI في إطار أمر PowerShell. لتحسين إمكانية القراءة وإعادة الاستخدام، يمكنك استخدام قدرات البرمجة النصية لـ PowerShell، وليس أوامر cmdlets Azure PowerShell.

  1. تثبيت وتكوين Azure CLI باتباع الخطوات الواردة في المقالة المرتبطة وتسجيل الدخول إلى حساب Azure الخاص بك.

  2. قم بإعداد متغيرات PowerShell للاستخدام مع أوامر Azure CLI:

    $subscriptionid = "########-####-####-####-############"  # enter subscription id
    $location = "southcentralus"
    $rgName = "pscontosorg1southctrlus09152016"
    $vnetName = "contosoIPv4Vnet"
    $vnetPrefix = "10.0.0.0/16"
    $subnet1Name = "clicontosoIPv4Subnet1"
    $subnet1Prefix = "10.0.0.0/24"
    $subnet2Name = "clicontosoIPv4Subnet2"
    $subnet2Prefix = "10.0.1.0/24"
    $dnsLabel = "contoso09152016"
    $lbName = "myIPv4IPv6Lb"
    

قم بإنشاء مجموعة موارد وموازن تحميل وشبكة افتراضية وشبكات فرعية

  1. أنشئ مجموعة موارد:

    az group create --name $rgName --location $location
    
  2. قم بإنشاء موازن تحميل:

    $lb = az network lb create --resource-group $rgname --location $location --name $lbName
    
  3. إنشاء شبكة ظاهرية:

    $vnet = az network vnet create  --resource-group $rgname --name $vnetName --location $location --address-prefixes $vnetPrefix
    
  4. في هذه الشبكة الظاهرية، قم بإنشاء شبكتين فرعيتين:

    $subnet1 = az network vnet subnet create --resource-group $rgname --name $subnet1Name --address-prefix $subnet1Prefix --vnet-name $vnetName
    $subnet2 = az network vnet subnet create --resource-group $rgname --name $subnet2Name --address-prefix $subnet2Prefix --vnet-name $vnetName
    

إنشاء عناوين IP عامة لتجمع الواجهة الأمامية

  1. قم بإعداد متغيرات PowerShell:

    $publicIpv4Name = "myIPv4Vip"
    $publicIpv6Name = "myIPv6Vip"
    
  2. إنشاء عنوان IP عام لتجمع IP للواجهة الأمامية:

    $publicipV4 = az network public-ip create --resource-group $rgname --name $publicIpv4Name --location $location --version IPv4 --allocation-method Dynamic --dns-name $dnsLabel
    $publicipV6 = az network public-ip create --resource-group $rgname --name $publicIpv6Name --location $location --version IPv6 --allocation-method Dynamic --dns-name $dnsLabel
    

    هام

    يستخدم موازن التحميل تسمية المجال الخاصة بـ IP العام كاسم مجال مؤهل بالكامل (FQDN). هذا تغيير عن النشر الكلاسيكي، الذي يستخدم اسم الخدمة السحابية كموازن التحميل FQDN.

    في هذا المثال، يكون FQDN هو contoso09152016.southcentralus.cloudapp.azure.com .

إنشاء تجمعات الواجهة الأمامية والخلفية

في هذا القسم، يمكنك إنشاء تجمعات IP التالية:

  • تجمع IP للواجهة الأمامية الذي يتلقى نسبة استخدام الشبكة الواردة على موازن التحميل.
  • تجمع IP الخلفية حيث يرسل تجمع الواجهة الأمامية حركة مرور الشبكة المتوازنة التحميل.
  1. قم بإعداد متغيرات PowerShell:

    $frontendV4Name = "FrontendVipIPv4"
    $frontendV6Name = "FrontendVipIPv6"
    $backendAddressPoolV4Name = "BackendPoolIPv4"
    $backendAddressPoolV6Name = "BackendPoolIPv6"
    
  2. قم بإنشاء تجمع IP للواجهة الأمامية، وربطه ب IP العام الذي قمت بإنشائه في الخطوة السابقة وموازن التحميل.

    $frontendV4 = az network lb frontend-ip create --resource-group $rgname --name $frontendV4Name --public-ip-address $publicIpv4Name --lb-name $lbName
    $frontendV6 = az network lb frontend-ip create --resource-group $rgname --name $frontendV6Name --public-ip-address $publicIpv6Name --lb-name $lbName
    $backendAddressPoolV4 = az network lb address-pool create --resource-group $rgname --name $backendAddressPoolV4Name --lb-name $lbName
    $backendAddressPoolV6 = az network lb address-pool create --resource-group $rgname --name $backendAddressPoolV6Name --lb-name $lbName
    

قم بإنشاء التحقق وقواعد NAT وقواعد موازن التحميل

ينشئ هذا المثال العناصر التالية:

  • قاعدة فحص للتحقق من الاتصال بمنفذ TCP 80.
  • قاعدة NAT لترجمة جميع نسب استخدام الشبكة الواردة على المنفذ 3389 إلى المنفذ 3389 لـ RDP. *
  • قاعدة NAT لترجمة جميع نسب استخدام الشبكة الواردة على المنفذ 3391 إلى المنفذ 3389 لبروتوكول سطح المكتب البعيد (RDP).*
  • قاعدة موازن التحميل لموازنة جميع حركة المرور الواردة على المنفذ 80 إلى المنفذ 80 على العناوين في تجمع الخلفية.

* ترتبط قواعد NAT بمثيل جهاز ظاهري محدد خلف موازن التحميل. يتم إرسال حركة مرور الشبكة التي تصل إلى المنفذ 3389 إلى الجهاز الظاهري المحدد والمنفذ المقترن بقاعدة NAT. يجب عليك تحديد بروتوكول (UDP أو TCP) لقاعدة NAT. لا يمكنك تعيين كلا البروتوكولين لنفس المنفذ.

  1. قم بإعداد متغيرات PowerShell:

    $probeV4V6Name = "ProbeForIPv4AndIPv6"
    $natRule1V4Name = "NatRule-For-Rdp-VM1"
    $natRule2V4Name = "NatRule-For-Rdp-VM2"
    $lbRule1V4Name = "LBRuleForIPv4-Port80"
    $lbRule1V6Name = "LBRuleForIPv6-Port80"
    
  2. إنشاء التحقيق.

    ينشئ المثال التالي فحص TCP الذي يتحقق من الاتصال إلى منفذ TCP الخلفي 80 كل 15 ثانية. بعد فشلين متتاليين، فإنه يضع علامة على مورد الواجهة الخلفية على أنه غير متوفر.

    $probeV4V6 = az network lb probe create --resource-group $rgname --name $probeV4V6Name --protocol tcp --port 80 --interval 15 --threshold 2 --lb-name $lbName
    
  3. إنشاء قواعد NAT الواردة التي تسمح باتصالات RDP بموارد الواجهة الخلفية:

    $inboundNatRuleRdp1 = az network lb inbound-nat-rule create --resource-group $rgname --name $natRule1V4Name --frontend-ip-name $frontendV4Name --protocol Tcp --frontend-port 3389 --backend-port 3389 --lb-name $lbName
    $inboundNatRuleRdp2 = az network lb inbound-nat-rule create --resource-group $rgname --name $natRule2V4Name --frontend-ip-name $frontendV4Name --protocol Tcp --frontend-port 3391 --backend-port 3389 --lb-name $lbName
    
  4. إنشاء قواعد موازن التحميل التي ترسل حركة المرور إلى منافذ خلفية مختلفة، اعتمادا على الواجهة الأمامية التي تلقت الطلب.

    $lbruleIPv4 = az network lb rule create --resource-group $rgname --name $lbRule1V4Name --frontend-ip-name $frontendV4Name --backend-pool-name $backendAddressPoolV4Name --probe-name $probeV4V6Name --protocol Tcp --frontend-port 80 --backend-port 80 --lb-name $lbName
    $lbruleIPv6 = az network lb rule create --resource-group $rgname --name $lbRule1V6Name --frontend-ip-name $frontendV6Name --backend-pool-name $backendAddressPoolV6Name --probe-name $probeV4V6Name --protocol Tcp --frontend-port 80 --backend-port 8080 --lb-name $lbName
    
  5. تحقق من الإعدادات:

    az network lb show --resource-group $rgName --name $lbName
    

    الناتج المتوقع:

    info:    Executing command network lb show
    info:    Looking up the load balancer "myIPv4IPv6Lb"
    data:    Id                              : /subscriptions/########-####-####-####-############/resourceGroups/pscontosorg1southctrlus09152016/providers/Microsoft.Network/loadBalancers/myIPv4IPv6Lb
    data:    Name                            : myIPv4IPv6Lb
    data:    Type                            : Microsoft.Network/loadBalancers
    data:    Location                        : southcentralus
    data:    Provisioning state              : Succeeded
    data:
    data:    Frontend IP configurations:
    data:    Name             Provisioning state  Private IP allocation  Private IP   Subnet  Public IP
    data:    ---------------  ------------------  ---------------------  -----------  ------  ---------
    data:    FrontendVipIPv4  Succeeded           Dynamic                                     myIPv4Vip
    data:    FrontendVipIPv6  Succeeded           Dynamic                                     myIPv6Vip
    data:
    data:    Probes:
    data:    Name                 Provisioning state  Protocol  Port  Path  Interval  Count
    data:    -------------------  ------------------  --------  ----  ----  --------  -----
    data:    ProbeForIPv4AndIPv6  Succeeded           Tcp       80          15        2
    data:
    data:    Backend Address Pools:
    data:    Name             Provisioning state
    data:    ---------------  ------------------
    data:    BackendPoolIPv4  Succeeded
    data:    BackendPoolIPv6  Succeeded
    data:
    data:    Load Balancing Rules:
    data:    Name                  Provisioning state  Load distribution  Protocol  Frontend port  Backend port  Enable floating IP  Idle timeout in minutes
    data:    --------------------  ------------------  -----------------  --------  -------------  ------------  ------------------  -----------------------
    data:    LBRuleForIPv4-Port80  Succeeded           Default            Tcp       80             80            false               4
    data:    LBRuleForIPv6-Port80  Succeeded           Default            Tcp       80             8080          false               4
    data:
    data:    Inbound NAT Rules:
    data:    Name                 Provisioning state  Protocol  Frontend port  Backend port  Enable floating IP  Idle timeout in minutes
    data:    -------------------  ------------------  --------  -------------  ------------  ------------------  -----------------------
    data:    NatRule-For-Rdp-VM1  Succeeded           Tcp       3389           3389          false               4
    data:    NatRule-For-Rdp-VM2  Succeeded           Tcp       3391           3389          false               4
    info:    network lb show
    

إنشاء بطاقات واجهة الشبكة (NICs)

إنشاء NICs وربطها بقواعد NAT وقواعد موازن التحميل والتحقيقات.

  1. قم بإعداد متغيرات PowerShell:

    $nic1Name = "myIPv4IPv6Nic1"
    $nic2Name = "myIPv4IPv6Nic2"
    $subnet1Id = "/subscriptions/$subscriptionid/resourceGroups/$rgName/providers/Microsoft.Network/VirtualNetworks/$vnetName/subnets/$subnet1Name"
    $subnet2Id = "/subscriptions/$subscriptionid/resourceGroups/$rgName/providers/Microsoft.Network/VirtualNetworks/$vnetName/subnets/$subnet2Name"
    $backendAddressPoolV4Id = "/subscriptions/$subscriptionid/resourceGroups/$rgname/providers/Microsoft.Network/loadbalancers/$lbName/backendAddressPools/$backendAddressPoolV4Name"
    $backendAddressPoolV6Id = "/subscriptions/$subscriptionid/resourceGroups/$rgname/providers/Microsoft.Network/loadbalancers/$lbName/backendAddressPools/$backendAddressPoolV6Name"
    $natRule1V4Id = "/subscriptions/$subscriptionid/resourceGroups/$rgname/providers/Microsoft.Network/loadbalancers/$lbName/inboundNatRules/$natRule1V4Name"
    $natRule2V4Id = "/subscriptions/$subscriptionid/resourceGroups/$rgname/providers/Microsoft.Network/loadbalancers/$lbName/inboundNatRules/$natRule2V4Name"
    
  2. قم بإنشاء NIC لكل نهاية خلفية، وأضف تكوين IPv6:

    $nic1 = az network nic create --name $nic1Name --resource-group $rgname --location $location --private-ip-address-version "IPv4" --subnet $subnet1Id --lb-address-pools $backendAddressPoolV4Id --lb-inbound-nat-rules $natRule1V4Id
    $nic1IPv6 = az network nic ip-config create --resource-group $rgname --name "IPv6IPConfig" --private-ip-address-version "IPv6" --lb-address-pools $backendAddressPoolV6Id --nic-name $nic1Name
    
    $nic2 = az network nic create --name $nic2Name --resource-group $rgname --location $location --private-ip-address-version "IPv4" --subnet $subnet2Id --lb-address-pools $backendAddressPoolV4Id --lb-inbound-nat-rules $natRule2V4Id
    $nic2IPv6 = az network nic ip-config create --resource-group $rgname --name "IPv6IPConfig" --private-ip-address-version "IPv6" --lb-address-pools $backendAddressPoolV6Id --nic-name $nic2Name
    

إنشاء موارد الجهاز الظاهري الخلفية، وإرفاق كل NIC

لإنشاء أجهزة افتراضية، يجب أن يكون لديك حساب تخزين. لموازنة الحمل، يجب أن تكون الأجهزة الظاهرية أعضاء في مجموعة الإتاحة. لمزيد من المعلومات حول إنشاء VMs، راجع إنشاء Azure VM باستخدام PowerShell .

  1. قم بإعداد متغيرات PowerShell:

    $availabilitySetName = "myIPv4IPv6AvailabilitySet"
    $vm1Name = "myIPv4IPv6VM1"
    $vm2Name = "myIPv4IPv6VM2"
    $nic1Id = "/subscriptions/$subscriptionid/resourceGroups/$rgname/providers/Microsoft.Network/networkInterfaces/$nic1Name"
    $nic2Id = "/subscriptions/$subscriptionid/resourceGroups/$rgname/providers/Microsoft.Network/networkInterfaces/$nic2Name"
    $imageurn = "MicrosoftWindowsServer:WindowsServer:2012-R2-Datacenter:latest"
    $vmUserName = "vmUser"
    $mySecurePassword = "PlainTextPassword*1"
    

    تحذير

    يستخدم هذا المثال اسم المستخدم وكلمة المرور لأجهزة VM بنص واضح. توخ الحذر المناسب عند استخدام بيانات الاعتماد هذه بنص واضح. للحصول على طريقة أكثر أماناً للتعامل مع بيانات الاعتماد في PowerShell، راجع Get-Credential cmdlet.

  2. إنشاء مجموعة التوفر:

    $availabilitySet = az vm availability-set create --name $availabilitySetName --resource-group $rgName --location $location
    
  3. إنشاء الأجهزة الظاهرية باستخدام NIC المقترنة:

    az vm create --resource-group $rgname --name $vm1Name --image $imageurn --admin-username $vmUserName --admin-password $mySecurePassword --nics $nic1Id --location $location --availability-set $availabilitySetName --size "Standard_A1" 
    
    az vm create --resource-group $rgname --name $vm2Name --image $imageurn --admin-username $vmUserName --admin-password $mySecurePassword --nics $nic2Id --location $location --availability-set $availabilitySetName --size "Standard_A1"