نشر تطبيق مكدس مزدوج 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. | |
انتقل إلى https://shell.azure.com، أو حدد زر تشغيل Cloud Shell لفتح Cloud Shell في المتصفح لديك. | |
حدد زر Cloud Shell على شريط القوائم في أعلى اليمين في مدخل Microsoft Azure. |
لاستخدام Azure Cloud Shell:
ابدأ تشغيل Cloud Shell.
حدد الزر نسخ على كتلة التعليمات البرمجية (أو كتلة الأوامر) لنسخ التعليمات البرمجية أو الأمر.
ألصق التعليمة البرمجية أو الأمر في جلسة Cloud Shell بتحديد Ctrl+Shift+Vعلى Windows وLunix، أو بتحديد Cmd+Shift+Vعلى macOS.
حدد 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 وأرصدة نسبة استخدام الشبكة على منفذ TCP 80 لتكوينات 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 الأمامية لموازنة التحميل.
عرض شبكة IPv6 الظاهرية للمكدس المزدوج في مدخل Microsoft Azure
يمكنك عرض شبكة الاتصال الظاهرية للمكدس المزدوج IPv6 في مدخل Microsoft Azure كما يلي:
- في شريط البحث في المدخل، أدخل myVnet.
- عند ظهورmyVm1 في نتائج البحث، حدده. سيفتح هذا صفحة الاستعراض العام للشبكة الظاهرية مزدوجة المكدس تحت اسم dsVnet. تُظهر الشبكة الظاهرية للمكدس المزدوج اثنين من بطاقات NICs مع تكوينات IPv4 وIPv6 الموجودة في الشبكة الفرعية للمكدس المزدوج باسم dsSubnet.
تنظيف الموارد
عند عدم الحاجة، يمكنك استخدام الأمر Remove-AzResourceGroup لإزالة مجموعة الموارد والجهاز الظاهري وكافة الموارد ذات الصلة.
Remove-AzResourceGroup -Name dsRG1
الخطوات التالية
في هذه المقالة، قمت بإنشاء موازنة تحميل قياسية مع تكوين IP الواجهة الأمامية المزدوجة (IPv4 وIPv6). قمت أيضا بإنشاء جهازين ظاهريين يتضمنان NICs مع تكوينات IP مزدوجة (IPV4 + IPv6) تمت إضافتها إلى تجمع الواجهة الخلفية لموازن التحميل. لمعرفة المزيد حول دعم IPv6 في شبكات Azure الظاهرية، راجع ما هو IPv6 لشبكة Azure الظاهرية؟