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

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

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. في المثال التالي، سيتم إنشاء مجموعة موارد تسمى myRGDualStack في موقع شرق الولايات المتحدة:

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

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

للوصول إلى الأجهزة الظاهرية على الإنترنت، تحتاج إلى عناوين IP العامة IPv4 وIPv6 لموازنة التحميل. قم بإنشاء عناوين IP عامة باستخدام New-AzPublicIpAddress. في المثال التالي، سيتم إنشاء عنوان IPv4 وIPv6 عام تحت اسم dsPublicIP_v4 وdsPublicIP_v6 في مجموعة موارد dsRG1:

$PublicIP_v4 = New-AzPublicIpAddress `
  -Name "dsPublicIP_v4" `
  -ResourceGroupName $rg.ResourceGroupName `
  -Location $rg.Location  `
  -AllocationMethod Static `
  -IpAddressVersion IPv4 `
  -Sku Standard
  
$PublicIP_v6 = New-AzPublicIpAddress `
  -Name "dsPublicIP_v6" `
  -ResourceGroupName $rg.ResourceGroupName `
  -Location $rg.Location  `
  -AllocationMethod Static `
  -IpAddressVersion IPv6 `
  -Sku Standard

للوصول إلى أجهزتك الظاهرية باستخدام اتصال RDP، قم بإنشاء عناوين IP عامة IPV4 للأجهزة الظاهرية باستخدام New-AzPublicIpAddress.

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

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

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

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

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

$frontendIPv4 = New-AzLoadBalancerFrontendIpConfig `
  -Name "dsLbFrontEnd_v4" `
  -PublicIpAddress $PublicIP_v4

$frontendIPv6 = New-AzLoadBalancerFrontendIpConfig `
  -Name "dsLbFrontEnd_v6" `
  -PublicIpAddress $PublicIP_v6

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

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

$backendPoolv4 = New-AzLoadBalancerBackendAddressPoolConfig `
-Name "dsLbBackEndPool_v4"

$backendPoolv6 = New-AzLoadBalancerBackendAddressPoolConfig `
-Name "dsLbBackEndPool_v6"

إنشاء فحوصات السلامة

استخدم Add-AzLoadBalancerProbeConfig لإنشاء الفحص الصحي من أجل مراقبة سلامة الأجهزة الظاهرية.

$probe = New-AzLoadBalancerProbeConfig -Name MyProbe -Protocol tcp -Port 3389 -IntervalInSeconds 15 -ProbeCount 2

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

قاعدة موازنة التحميل التي تُستخدم لتعريف كيفية توزيع حركة المرور على الأجهزة الظاهرية. يمكنك تحديد تكوين 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 `
   -probe $probe

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

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

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

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

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

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

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

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

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

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

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

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

إنشاء قاعدة مجموعة أمان شبكة المنفذ 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 * `
  -DestinationAddressPrefix * `
  -DestinationPortRange 80

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

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

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

إنشاء شبكة ظاهرية

أنشئ شبكة افتراضية باستخدام New-AzVirtualNetwork. في المثال التالي، يتم إنشاء شبكة اتصال افتراضية باسم dsVnet مع mySubnet:

# Create dual stack subnet
$subnet = 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 $subnet

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

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

  $Ip4Config=New-AzNetworkInterfaceIpConfig `
    -Name dsIp4Config `
    -Subnet $vnet.subnets[0] `
    -PrivateIpAddressVersion IPv4 `
    -LoadBalancerBackendAddressPool $backendPoolv4 `
    -PublicIpAddress  $RdpPublicIP_1
      
  $Ip6Config=New-AzNetworkInterfaceIpConfig `
    -Name dsIp6Config `
    -Subnet $vnet.subnets[0] `
    -PrivateIpAddressVersion IPv6 `
    -LoadBalancerBackendAddressPool $backendPoolv6
    
  $NIC_1 = New-AzNetworkInterface `
    -Name "dsNIC1" `
    -ResourceGroupName $rg.ResourceGroupName `
    -Location $rg.Location  `
    -NetworkSecurityGroupId $nsg.Id `
    -IpConfiguration $Ip4Config,$Ip6Config 
    
  $Ip4Config=New-AzNetworkInterfaceIpConfig `
    -Name dsIp4Config `
    -Subnet $vnet.subnets[0] `
    -PrivateIpAddressVersion IPv4 `
    -LoadBalancerBackendAddressPool $backendPoolv4 `
    -PublicIpAddress  $RdpPublicIP_2  

  $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 VMs."

يمكنك الآن إنشاء الجهاز الافتراضي باستخدام 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

تحديد عناوين IP لنقاط نهاية IPv4 وIPv6

احصل على كافة كائنات واجهة الشبكة في مجموعة الموارد لتلخيص عناوين IP المستخدمة في هذا النشر باستخدام get-AzNetworkInterface. احصل أيضاً على عناوين الواجهة الأمامية لموازنة التحميل لنقاط النهاية IPv4 وIPv6 باستخدام get-AzpublicIpAddress.

$rgName= "dsRG1"
$NICsInRG= get-AzNetworkInterface -resourceGroupName $rgName 
write-host `nSummary of IPs in this Deployment: 
write-host ******************************************
foreach ($NIC in $NICsInRG) {
 
    $VMid= $NIC.virtualmachine.id 
    $VMnamebits= $VMid.split("/") 
    $VMname= $VMnamebits[($VMnamebits.count-1)] 
    write-host `nPrivate IP addresses for $VMname 
    $IPconfigsInNIC= $NIC.IPconfigurations 
    foreach ($IPconfig in $IPconfigsInNIC) {
 
        $IPaddress= $IPconfig.privateipaddress 
        write-host "    "$IPaddress 
        IF ($IPconfig.PublicIpAddress.ID) {
 
            $IDbits= ($IPconfig.PublicIpAddress.ID).split("/")
            $PipName= $IDbits[($IDbits.count-1)]
            $PipObject= get-azPublicIpAddress -name $PipName -resourceGroup $rgName
            write-host "    "RDP address:  $PipObject.IpAddress
                 }
         }
 }
 
 
 
  write-host `nPublic IP addresses on Load Balancer:
 
  (get-AzpublicIpAddress -resourcegroupname $rgName | where { $_.name -notlike "RdpPublicIP*" }).IpAddress

يظهر الشكل التالي عينة إخراج تسرد عناوين IPv4 وIPv6 الخاصة بالجهازين الظاهريين وعناوين IPV4 وIPv6 الأمامية لموازنة التحميل.

IP summary of dual stack (IPv4/IPv6) application deployment in Azure

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

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

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

IPv6 dual stack virtual network in Azure

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

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

Remove-AzResourceGroup -Name dsRG1

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

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