نشر تطبيق مكدس مزدوج IPv6 باستخدام موازن التحميل الداخلي القياسي في Azure باستخدام PowerShell

توضح هذه المقالة كيفية نشر تطبيق مكدس مزدوج (IPv4 + IPv6) في Azure يتضمن شبكة ظاهرية مزدوجة المكدس وشبكة فرعية، وموازن تحميل داخلي قياسي مع تكوينات أمامية مزدوجة (IPv4 + IPv6)، وأجهزة ظاهرية مع بطاقات واجهة الشبكة التي تحتوي على تكوين IP مزدوج، ومجموعة أمان الشبكة، وعناوين IP العامة.

إجراء إنشاء موازن تحميل داخلي قادر على IPv6 مماثل تقريبًا لعملية إنشاء موازن تحميل IPv6 مواجه للإنترنت الموصوفة هنا. الاختلافات الوحيدة لإنشاء موازن تحميل داخلي هي في تكوين الواجهة الأمامية كما هو موضح في مثال PowerShell أدناه:

 $frontendIPv6 = New-AzLoadBalancerFrontendIpConfig `
 -Name "dsLbFrontEnd_v6" `
 -PrivateIpAddress "fd00:db8:deca:deed::100" `
 -PrivateIpAddressVersion "IPv6" `
 -Subnet $DsSubnet

التغييرات التي تجعل أعلاه تكوين الواجهة الأمامية لموازن التحميل الداخلي هي:

  • تم تحديد PrivateIpAddressVersion كـ "IPv6"
  • تم حذف الوسيطة -PublicIpAddress أو استبدالها بـ -PrivateIpAddress. لاحظ أن العنوان الخاص يجب أن يكون في نطاق مساحة IP للشبكة الفرعية حيث سيتم نشر موازن التحميل الداخلي. إذا تم حذف -PrivateIpAddress ثابت، فسيتم تحديد عنوان IPv6 المجاني التالي من الشبكة الفرعية التي يتم فيها نشر موازن التحميل الداخلي.
  • يتم تحديد الشبكة الفرعية للمكدس المزدوج التي سيتم نشر موازن التحميل الداخلي فيها باستخدام وسيطة -Subnet أو -SubnetId.

Azure Cloud Shell

Azure يستضيف Azure Cloud Shell، بيئة تفاعلية يمكن استخدامها من خلال المستعرض. يمكنك استخدام Bash أو PowerShell مع Cloud Shell للعمل مع خدمات Azure. يمكنك استخدام أوامر Cloud Shell المثبتة مسبقًا لتشغيل التعليمات البرمجية في هذه المقالة دون الحاجة إلى تثبيت أي شيء على البيئة المحلية.

لبدء Azure Cloud Shell:

خيار مثال/ رابط
انقر فوق ⁧⁩جربه⁧⁩ في الزاوية العلوية اليسرى من التعليمة البرمجية أو كتلة الأمر. تحديد ⁧⁩جربه⁧⁩ لا يقوم بنسخ التعليمة البرمجية أو الأمر تلقائيًا إلى Cloud Shell. Screenshot that shows an example of Try It for Azure Cloud Shell.
انتقل إلى ⁧⁩⁧ https://shell.azure.com⁩⁧⁩، أو حدد زر ⁩تشغيل Cloud Shell لفتح Cloud Shell في المتصفح لديك. Button to launch Azure Cloud Shell.
حدد زر Cloud Shell على شريط القوائم في أعلى اليمين في مدخل Microsoft Azure. Screenshot that shows the Cloud Shell button in the Azure portal

لاستخدام Azure Cloud Shell:

  1. ابدأ تشغيل Cloud Shell.

  2. حدد الزر نسخ على كتلة التعليمات البرمجية (أو كتلة الأوامر) لنسخ التعليمات البرمجية أو الأمر.

  3. ألصق التعليمة البرمجية أو الأمر في جلسة Cloud Shell بتحديد Ctrl+Shift+Vعلى Windows وLunix، أو بتحديد Cmd+Shift+Vعلى macOS.

  4. حدد Enter لتشغيل التعليمات البرمجية أو الأمر.

إذا اخترت تثبيت PowerShell واستخدامه محليًا، فستتطلب هذه المقالة إصدار الوحدة النمطية Azure PowerShell 6.9.0 أو إصدارًا أحدث. بادر بتشغيل Get-Module -ListAvailable Az للعثور على الإصدار المثبت. إذا كنت بحاجة إلى الترقية، فراجع تثبيت الوحدة النمطية Azure PowerShell. عند تشغيل PowerShell محلياً، يلزم تشغيل Connect-AzAccount لإنشاء الاتصال بـ Azure.

إنشاء مجموعة موارد

قبل أن تتمكن من إنشاء شبكة الاتصال الظاهرية للمكدس المزدوج، يجب إنشاء مجموعة موارد باستخدام New-AzResourceGroup. في المثال التالي، سيتم إنشاء مجموعة موارد تسمى dsStd_ILB_RG في موقع شرق الولايات المتحدة:

$rg = New-AzResourceGroup `
  -ResourceGroupName "dsStd_ILB_RG"  `
  -Location "east us"

إنشاء عناوين IP العامة لـ IPv4 وIPv6

للوصول إلى أجهزتك الظاهرية من الإنترنت، تحتاج إلى عناوين IP العامة لـ IPv4 وIPv6 لأجهزة VM. قم بإنشاء عناوين IP عامة باستخدام New-AzPublicIpAddress. ينشئ المثال التالي عناوين IP العامة IPv4 وIPv6 باسم RdpPublicIP_1 وRdpPublicIP_2 في مجموعة موارد dsStd_ILB_RG:

$RdpPublicIP_1 = New-AzPublicIpAddress `
  -Name "RdpPublicIP_1" `
  -ResourceGroupName $rg.ResourceGroupName `
  -Location $rg.Location  `
  -AllocationMethod Static `
  -IpAddressVersion IPv4  `
  -sku Standard
  
$RdpPublicIP_2 = New-AzPublicIpAddress `
  -Name "RdpPublicIP_2" `
  -ResourceGroupName $rg.ResourceGroupName `
  -Location $rg.Location  `
  -AllocationMethod Static `
  -IpAddressVersion IPv6  `
  -sku Standard

إنشاء الشبكة الظاهرية والشبكة الفرعية

إنشاء شبكة ظاهرية باستخدام New-AzVirtualNetwork مع تكوين شبكة فرعية لمكدس الذاكرة المؤقتة المزدوج باستخدام New-AzVirtualNetworkSubnetConfig. في المثال التالي، يتم إنشاء شبكة اتصال افتراضية باسم dsVnet مع dsSubnet.

# Create dual stack subnet config
$DsSubnet = New-AzVirtualNetworkSubnetConfig `
  -Name "dsSubnet" `
  -AddressPrefix "10.0.0.0/24","fd00:db8:deca:deed::/64"

# Create the virtual network
$vnet = New-AzVirtualNetwork `
  -ResourceGroupName $rg.ResourceGroupName `
  -Location $rg.Location  `
  -Name "dsVnet" `
  -AddressPrefix "10.0.0.0/16","fd00:db8:deca::/48"  `
  -Subnet $DsSubnet

#Refresh the fully populated subnet for use in load balancer frontend configuration
$DsSubnet = get-AzVirtualNetworkSubnetconfig -name dsSubnet -VirtualNetwork $vnet

إنشاء موازن تحميل قياسي

في هذا القسم، يمكنك تكوين IP الواجهة الأمامية المزدوجة (IPv4 وIPv6) وتجمع عناوين الواجهة الخلفية لموازن التحميل ثم إنشاء موازن تحميل قياسي.

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

إنشاء عنوان IP للواجهة الأمامية باستخدام New-AzLoadBalancerFrontendIpConfig. في المثال التالي، يتم إنشاء تكوينات IPv4 و IPv6 للواجهة الأمامية المسماة dsLbFrontEnd_v4 و dsLbFrontEnd_v6:

$frontendIPv4 = New-AzLoadBalancerFrontendIpConfig `
  -Name "dsLbFrontEnd_v4" `
  -PrivateIpAddress "10.0.0.100"  `
  -PrivateIpAddressVersion "IPv4"   `
  -Subnet $DsSubnet

$frontendIPv6 = New-AzLoadBalancerFrontendIpConfig `
  -Name "dsLbFrontEnd_v6" `
  -PrivateIpAddress "fd00:db8:deca:deed::100"  `
  -PrivateIpAddressVersion "IPv6"   `
  -Subnet $DsSubnet

تكوين تجمع عناوين الواجهة الخلفية

إنشاء مجموعة عناوين خلفية باستخدام Add-AzLoadBalancerBackendAddressPoolConfig . إرفاق VMs إلى تجمع الخلفية هذا في الخطوات المتبقية. ينشئ المثال التالي تجمعات عناوين الواجهة الخلفية المسماة dsLbBackEndPool_v4 dsLbBackEndPool_v6 لتضمين الأجهزة الظاهرية مع كل من تكوينات IPV4 وIPv6 NIC:

$backendPoolv4 = New-AzLoadBalancerBackendAddressPoolConfig -Name "dsLbBackEndPool_v4"

$backendPoolv6 = New-AzLoadBalancerBackendAddressPoolConfig -Name "dsLbBackEndPool_v6"

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

قاعدة موازنة التحميل التي تُستخدم لتعريف كيفية توزيع حركة المرور على الأجهزة الظاهرية. يمكنك تحديد تكوين IP الأمامية لنسبة استخدام الشبكة الواردة وتجمع IP الخلفية لتلقي نسبة استخدام الشبكة، جنباً إلى جنب مع المصدر المطلوب ومنفذ الوجهة. للتأكد من أن الأجهزة الظاهرية السليمة هي فقط التي تتلقى بيانات الشبكة، يمكنك تحديد الفحص الصحي بشكل اختياري. تستخدم موازنة التحميل الأساسية فحص IPv4 لتقييم السلامة لكل من نقاط نهاية IPv4 و IPv6 على الأجهزة الظاهرية. تتضمن موازنة التحميل القياسية الدعم لفحوصات السلامة IPv6 بشكل صريح.

قم بإنشاء قاعدة موازن التحميل باستخدام Add-AzLoadBalancerRuleConfig. في المثال التالي، يتم إنشاء قواعد موازنة التحميل المسماة dsLBrule_v4 وdsLBrule_v6 وأرصدة نسبة استخدام الشبكة على منفذ TCP80 لتكوينات IP الأمامية IPv4 و IPv6:

$lbrule_v4 = New-AzLoadBalancerRuleConfig `
  -Name "dsLBrule_v4" `
  -FrontendIpConfiguration $frontendIPv4 `
  -BackendAddressPool $backendPoolv4 `
  -Protocol Tcp `
  -FrontendPort 80 `
  -BackendPort 80

$lbrule_v6 = New-AzLoadBalancerRuleConfig `
  -Name "dsLBrule_v6" `
  -FrontendIpConfiguration $frontendIPv6 `
  -BackendAddressPool $backendPoolv6 `
  -Protocol Tcp `
  -FrontendPort 80 `
  -BackendPort 80

إنشاء موازن التحميل

قم بإنشاء موازنة تحميل قياسية من خلال New-AzLoadBalancer. في المثال التالي، يتم إنشاء موازنة تحميل قياسية عامة تحت اسم myInternalLoadBalancer باستخدام تكوينات IP الأمامية IPv4 و IPv6 وتجمعات الخلفية وقواعد موازنة التحميل التي قمت بإنشائها في الخطوات السابقة:

$lb = New-AzLoadBalancer  `
  -ResourceGroupName $rg.ResourceGroupName  `
  -Location $rg.Location  `
  -Name  "MyInternalLoadBalancer"  `
  -Sku "Standard"  `
  -FrontendIpConfiguration  $frontendIPv4,$frontendIPv6  `
  -BackendAddressPool  $backendPoolv4,$backendPoolv6  `
  -LoadBalancingRule  $lbrule_v4,$lbrule_v6

إنشاء موارد الشبكة

قبل نشر بعض الأجهزة الظاهرية و اختبار موازنة التحميل الخاصة بك، عليك إنشاء موارد شبكة داعمة - مجموعة التوفر، ومجموعة أمان شبكة الاتصال، وبطاقات NIC ظاهرية.

إنشاء مجموعة قابلية وصول

لتحسين التوفر المرتفع لتطبيقك، ضع أجهزتك الظاهرية في مجموعة التوفر.

إنشاء مجموعة توفر مع New-AzAvailabilitySet. في المثال التالي، يتم إنشاء مجموعة توفر باسم dsAVset:

$avset = New-AzAvailabilitySet `
  -ResourceGroupName $rg.ResourceGroupName `
  -Location $rg.Location  `
  -Name "dsAVset" `
  -PlatformFaultDomainCount 2 `
  -PlatformUpdateDomainCount 2 `
  -Sku aligned

إنشاء مجموعة أمان شبكة الاتصال

قم بإنشاء مجموعة أمان شبكية للقواعد التي ستحكم الاتصالات الواردة والصادرة في الشبكة الظاهرية خاصتك.

إنشاء قاعدة مجموعة أمان شبكة المنفذ 3389

قم بإنشاء قاعدة مجموعة أمان شبكة للسماح بالاتصالات RDP عبر المنفذ 3389 باستخدام New-AzNetworkSecurityRuleConfig.

$rule1 = New-AzNetworkSecurityRuleConfig `
  -Name 'myNetworkSecurityGroupRuleRDP' `
  -Description 'Allow RDP' `
  -Access Allow `
  -Protocol Tcp `
  -Direction Inbound `
  -Priority 100 `
  -SourceAddressPrefix * `
  -SourcePortRange * `
  -DestinationAddressPrefix * `
  -DestinationPortRange 3389

إنشاء قاعدة مجموعة أمان شبكة للمنفذ 80

إنشاء قاعدة مجموعة أمان شبكية لعبور اتصالات RDP عبر المنفذ 80 من خلال New-AzNetworkSecurityRuleConfig.

$rule2 = New-AzNetworkSecurityRuleConfig `
  -Name 'myNetworkSecurityGroupRuleHTTP' `
  -Description 'Allow HTTP' `
  -Access Allow `
  -Protocol Tcp `
  -Direction Inbound `
  -Priority 200 `
  -SourceAddressPrefix * `
  -SourcePortRange 80 `
  -DestinationAddressPrefix * `
  -DestinationPortRange 80

إنشاء مجموعة أمان الشبكة

إنشاء مجموعة أمان شبكة باستخدام New-AzNetworkSecurityGroup.

$nsg = New-AzNetworkSecurityGroup `
  -ResourceGroupName $rg.ResourceGroupName `
  -Location $rg.Location  `
  -Name "dsNSG1"  `
  -SecurityRules $rule1,$rule2

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

قم بإنشاء بطاقات NIC الظاهرية من خلال New-AzNetworkInterface. ينشئ المثال التالي اثنين من NIC الظاهرين مع تكوينات IPv4 وIPv6. (بطاقة واجهة شبكة ظاهرية واحدة لكل جهاز ظاهري تقوم بإنشائه للتطبيق الخاص بك في الخطوات التالية).


# Create the IPv4 configuration for NIC 1
$Ip4Config=New-AzNetworkInterfaceIpConfig `
  -Name dsIp4Config `
  -Subnet $vnet.subnets[0] `
  -PrivateIpAddressVersion IPv4 `
  -LoadBalancerBackendAddressPool $backendPoolv4 `
  -PublicIpAddress  $RdpPublicIP_1

# Create the IPv6 configuration
$Ip6Config=New-AzNetworkInterfaceIpConfig `
  -Name dsIp6Config `
  -Subnet $vnet.subnets[0] `
  -PrivateIpAddressVersion IPv6 `
  -LoadBalancerBackendAddressPool $backendPoolv6

# Create NIC 1
$NIC_1 = New-AzNetworkInterface `
  -Name "dsNIC1" `
  -ResourceGroupName $rg.ResourceGroupName `
  -Location $rg.Location  `
  -NetworkSecurityGroupId $nsg.Id `
  -IpConfiguration $Ip4Config,$Ip6Config

# Create the IPv4 configuration for NIC 2
$Ip4Config=New-AzNetworkInterfaceIpConfig `
  -Name dsIp4Config `
  -Subnet $vnet.subnets[0] `
  -PrivateIpAddressVersion IPv4 `
  -LoadBalancerBackendAddressPool $backendPoolv4 `
  -PublicIpAddress  $RdpPublicIP_2

# Create NIC 2 reusing the IPv6 configuration from NIC 1
$NIC_2 = New-AzNetworkInterface `
  -Name "dsNIC2" `
  -ResourceGroupName $rg.ResourceGroupName `
  -Location $rg.Location  `
  -NetworkSecurityGroupId $nsg.Id `
  -IpConfiguration $Ip4Config,$Ip6Config

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

قم بتعيين اسم المستخدم وكلمة مرور المسؤول للجهاز الافتراضي باستخدام ⁧⁩Get-Credential⁧⁩:

$cred = get-credential -Message "DUAL STACK VNET SAMPLE:  Please enter the Administrator credential to log into the VM's"

يمكنك الآن إنشاء الجهاز الافتراضي باستخدام New-AzVM. في المثال التالي، يتم إنشاء ثلاثة أجهزة ظاهرية ومكونات شبكة الاتصال الظاهرية المطلوبة إذا لم تكن موجودة بالفعل.

$vmsize = "Standard_A2"
$ImagePublisher = "MicrosoftWindowsServer"
$imageOffer = "WindowsServer"
$imageSKU = "2019-Datacenter"

$vmName= "dsVM1"
$VMconfig1 = New-AzVMConfig -VMName $vmName -VMSize $vmsize -AvailabilitySetId $avset.Id 3> $null | Set-AzVMOperatingSystem -Windows -ComputerName $vmName -Credential $cred -ProvisionVMAgent 3> $null | Set-AzVMSourceImage -PublisherName $ImagePublisher -Offer $imageOffer -Skus $imageSKU -Version "latest" 3> $null | Set-AzVMOSDisk -Name "$vmName.vhd" -CreateOption fromImage  3> $null | Add-AzVMNetworkInterface -Id $NIC_1.Id  3> $null
$VM1 = New-AzVM -ResourceGroupName $rg.ResourceGroupName  -Location $rg.Location  -VM $VMconfig1


$vmName= "dsVM2"
$VMconfig2 = New-AzVMConfig -VMName $vmName -VMSize $vmsize -AvailabilitySetId $avset.Id 3> $null | Set-AzVMOperatingSystem -Windows -ComputerName $vmName -Credential $cred -ProvisionVMAgent 3> $null | Set-AzVMSourceImage -PublisherName $ImagePublisher -Offer $imageOffer -Skus $imageSKU -Version "latest" 3> $null | Set-AzVMOSDisk -Name "$vmName.vhd" -CreateOption fromImage  3> $null | Add-AzVMNetworkInterface -Id $NIC_2.Id  3> $null
$VM2 = New-AzVM -ResourceGroupName $rg.ResourceGroupName  -Location $rg.Location  -VM $VMconfig2

عرض شبكة IPv6 الظاهرية للمكدس المزدوج في مدخل Microsoft Azure

يمكنك عرض شبكة الاتصال الظاهرية للمكدس المزدوج IPv6 في مدخل Microsoft Azure كما يلي:

  1. في شريط البحث في المدخل، أدخل myVnet.
  2. عند ظهورmyVm1 في نتائج البحث، حدده. سيفتح هذا صفحة الاستعراض العام للشبكة الظاهرية مزدوجة المكدس تحت اسم dsVnet. تُظهر الشبكة الظاهرية للمكدس المزدوج اثنين من بطاقات NICs مع تكوينات IPv4 وIPv6 الموجودة في الشبكة الفرعية للمكدس المزدوج باسم dsSubnet.

IPv6 Dual Stack Virtual Network with Standard Internal Load Balancer

إشعار

يتوفر IPv6 لشبكة Azure الظاهرية في مدخل Microsoft Azure للقراءة فقط لإصدار المعاينة هذا.

تنظيف الموارد

عند عدم الحاجة، يمكنك استخدام الأمر Remove-AzResourceGroup لإزالة مجموعة الموارد والجهاز الظاهري وكافة الموارد ذات الصلة.

Remove-AzResourceGroup -Name dsStd_ILB_RG

الخطوات التالية

في هذه المقالة، قمت بإنشاء موازنة تحميل قياسية مع تكوين IP الواجهة الأمامية المزدوجة (IPv4 وIPv6). قمت أيضا بإنشاء جهازين ظاهريين يتضمنان NICs مع تكوينات IP مزدوجة (IPV4 + IPv6) تمت إضافتها إلى تجمع الواجهة الخلفية لموازن التحميل. لمعرفة المزيد حول دعم IPv6 في شبكات Azure الظاهرية، راجع ما هو IPv6 لشبكة Azure الظاهرية؟