إنشاء شبكات ظاهرية لأنظمة مجموعات Azure HDInsight
توفر هذه المقالة أمثلة ونماذج التعليمات البرمجية لإنشاء وتكوين شبكات Azure الظاهرية. لاستخدامها مع مجموعات Azure HDInsight. يتم تقديم أمثلة تفصيلية لإنشاء مجموعات أمان الشبكة (NSGs)، وتكوين DNS.
للحصول على معلومات أساسية حول استخدام الشبكات الظاهرية مع Azure HDInsight، راجع تخطيط شبكة ظاهرية ل Azure HDInsight.
المتطلبات الأساسية لعينات التعليمات البرمجية والأمثلة
قبل تنفيذ أي من نماذج التعليمات البرمجية في هذه المقالة، يتعين عليك فهم شبكة TCP/IP. إذا لم تكن على دراية بشبكات TCP/IP، فاستشر شخص قبل إجراء تعديلات على شبكات الإنتاج.
تتضمن المتطلبات الأساسية الأخرى للنماذج في هذه المقالة العناصر التالية:
- إذا كنت تستخدم PowerShell، فأنت بحاجة إلى تثبيت وحدة AZ.
- إذا كنت ترغب في استخدام Azure CLI ولم تقم بتثبيته بعد، فشاهد تثبيت Azure CLI.
هام
إذا كنت تبحث عن إرشادات خطوة بخطوة حول توصيل HDInsight بشبكتك المحلية باستخدام شبكة Azure الظاهرية، فشاهد كيفية توصيل HDInsight بشبكتك المحلية.
مثال: مجموعات أمان الشبكة مع HDInsight
توضح الأمثلة في هذا القسم كيفية إنشاء قواعد مجموعة أمان الشبكة. تسمح القواعد لـHDInsight بالاتصال بخدمات إدارة Azure. قبل استخدام الأمثلة، أضبط عناوين IP؛ لمطابقة عناوين منطقة Azure التي تستخدمها. يمكنك العثور على هذه المعلومات في عناوين IP لإدارة HDInsight.
قالب Azure Resource Manager
ينشئ قالب Resource Manager التالي شبكة ظاهرية تقيد حركة المرور الواردة؛ ولكنها تسمح بحركة المرور من عناوين IP المطلوبة بواسطة HDInsight. ينشئ هذا القالب أيضًا مجموعة HDInsight في الشبكة الظاهرية.
Azure PowerShell
استخدم البرنامج النصي PowerShell التالي لإنشاء شبكة ظاهرية تقيد حركة المرور الواردة، وتسمح بحركة المرور من عناوين IP لمنطقة شمال أوروبا.
هام
قم بتغيير عناوين IP ل hdirule1
و hdirule2
في هذا المثال لمطابقة منطقة Azure التي تستخدمها. يمكنك العثور على هذه المعلومات عناوين IP لإدارة HDInsight.
$vnetName = "Replace with your virtual network name"
$resourceGroupName = "Replace with the resource group the virtual network is in"
$subnetName = "Replace with the name of the subnet that you plan to use for HDInsight"
# Get the Virtual Network object
$vnet = Get-AzVirtualNetwork `
-Name $vnetName `
-ResourceGroupName $resourceGroupName
# Get the region the Virtual network is in.
$location = $vnet.Location
# Get the subnet object
$subnet = $vnet.Subnets | Where-Object Name -eq $subnetName
# Create a Network Security Group.
# And add exemptions for the HDInsight health and management services.
$nsg = New-AzNetworkSecurityGroup `
-Name "hdisecure" `
-ResourceGroupName $resourceGroupName `
-Location $location `
| Add-AzNetworkSecurityRuleConfig `
-name "hdirule1" `
-Description "HDI health and management address 52.164.210.96" `
-Protocol "*" `
-SourcePortRange "*" `
-DestinationPortRange "443" `
-SourceAddressPrefix "52.164.210.96" `
-DestinationAddressPrefix "VirtualNetwork" `
-Access Allow `
-Priority 300 `
-Direction Inbound `
| Add-AzNetworkSecurityRuleConfig `
-Name "hdirule2" `
-Description "HDI health and management 13.74.153.132" `
-Protocol "*" `
-SourcePortRange "*" `
-DestinationPortRange "443" `
-SourceAddressPrefix "13.74.153.132" `
-DestinationAddressPrefix "VirtualNetwork" `
-Access Allow `
-Priority 301 `
-Direction Inbound `
| Add-AzNetworkSecurityRuleConfig `
-Name "hdirule3" `
-Description "HDI health and management 168.61.49.99" `
-Protocol "*" `
-SourcePortRange "*" `
-DestinationPortRange "443" `
-SourceAddressPrefix "168.61.49.99" `
-DestinationAddressPrefix "VirtualNetwork" `
-Access Allow `
-Priority 302 `
-Direction Inbound `
| Add-AzNetworkSecurityRuleConfig `
-Name "hdirule4" `
-Description "HDI health and management 23.99.5.239" `
-Protocol "*" `
-SourcePortRange "*" `
-DestinationPortRange "443" `
-SourceAddressPrefix "23.99.5.239" `
-DestinationAddressPrefix "VirtualNetwork" `
-Access Allow `
-Priority 303 `
-Direction Inbound `
| Add-AzNetworkSecurityRuleConfig `
-Name "hdirule5" `
-Description "HDI health and management 168.61.48.131" `
-Protocol "*" `
-SourcePortRange "*" `
-DestinationPortRange "443" `
-SourceAddressPrefix "168.61.48.131" `
-DestinationAddressPrefix "VirtualNetwork" `
-Access Allow `
-Priority 304 `
-Direction Inbound `
| Add-AzNetworkSecurityRuleConfig `
-Name "hdirule6" `
-Description "HDI health and management 138.91.141.162" `
-Protocol "*" `
-SourcePortRange "*" `
-DestinationPortRange "443" `
-SourceAddressPrefix "138.91.141.162" `
-DestinationAddressPrefix "VirtualNetwork" `
-Access Allow `
-Priority 305 `
-Direction Inbound `
# Set the changes to the security group
Set-AzNetworkSecurityGroup -NetworkSecurityGroup $nsg
# Apply the NSG to the subnet
Set-AzVirtualNetworkSubnetConfig `
-VirtualNetwork $vnet `
-Name $subnetName `
-AddressPrefix $subnet.AddressPrefix `
-NetworkSecurityGroup $nsg
$vnet | Set-AzVirtualNetwork
يوضح هذا المثال كيفية إضافة قواعد للسماح بحركة المرور الواردة على عناوين IP المطلوبة. لا يحتوي على قاعدة لتقييد الوصول الوارد من مصادر أخرى. توضح التعليمات البرمجية التالية كيفية تمكين وصول SSH من الإنترنت:
Get-AzNetworkSecurityGroup -Name hdisecure -ResourceGroupName RESOURCEGROUP |
Add-AzNetworkSecurityRuleConfig -Name "SSH" -Description "SSH" -Protocol "*" -SourcePortRange "*" -DestinationPortRange "22" -SourceAddressPrefix "*" -DestinationAddressPrefix "VirtualNetwork" -Access Allow -Priority 306 -Direction Inbound
Azure CLI
استخدم الخطوات التالية لإنشاء شبكة ظاهرية تقيد حركة المرور الواردة، ولكنها تسمح بحركة المرور من عناوين IP المطلوبة بواسطة HDInsight.
استخدم الأمر التالي لإنشاء مجموعة أمان شبكة جديدة تسمى
hdisecure
. استبدلRESOURCEGROUP
بمجموعة الموارد التي تحتوي على شبكة Azure الظاهرية. استبدلLOCATION
بالموقع (المنطقة) الذي تم إنشاء المجموعة فيه.az network nsg create -g RESOURCEGROUP -n hdisecure -l LOCATION
بمجرد إنشاء المجموعة، تتلقى معلومات حول المجموعة الجديدة.
استخدم ما يلي لإضافة قواعد إلى مجموعة أمان الشبكة الجديدة التي تسمح بالاتصال الوارد على المنفذ 443 من خدمة إدارة وصيانة Azure HDInsight. استبدل
RESOURCEGROUP
باسم مجموعة الموارد التي تحتوي على شبكة Azure الظاهرية.هام
قم بتغيير عناوين IP ل
hdirule1
وhdirule2
في هذا المثال لمطابقة منطقة Azure التي تستخدمها. يمكنك العثور على هذه المعلومات في عناوين IP لإدارة HDInsight.az network nsg rule create -g RESOURCEGROUP --nsg-name hdisecure -n hdirule1 --protocol "*" --source-port-range "*" --destination-port-range "443" --source-address-prefix "52.164.210.96" --destination-address-prefix "VirtualNetwork" --access "Allow" --priority 300 --direction "Inbound" az network nsg rule create -g RESOURCEGROUP --nsg-name hdisecure -n hdirule2 --protocol "*" --source-port-range "*" --destination-port-range "443" --source-address-prefix "13.74.153.132" --destination-address-prefix "VirtualNetwork" --access "Allow" --priority 301 --direction "Inbound" az network nsg rule create -g RESOURCEGROUP --nsg-name hdisecure -n hdirule3 --protocol "*" --source-port-range "*" --destination-port-range "443" --source-address-prefix "168.61.49.99" --destination-address-prefix "VirtualNetwork" --access "Allow" --priority 302 --direction "Inbound" az network nsg rule create -g RESOURCEGROUP --nsg-name hdisecure -n hdirule4 --protocol "*" --source-port-range "*" --destination-port-range "443" --source-address-prefix "23.99.5.239" --destination-address-prefix "VirtualNetwork" --access "Allow" --priority 303 --direction "Inbound" az network nsg rule create -g RESOURCEGROUP --nsg-name hdisecure -n hdirule5 --protocol "*" --source-port-range "*" --destination-port-range "443" --source-address-prefix "168.61.48.131" --destination-address-prefix "VirtualNetwork" --access "Allow" --priority 304 --direction "Inbound" az network nsg rule create -g RESOURCEGROUP --nsg-name hdisecure -n hdirule6 --protocol "*" --source-port-range "*" --destination-port-range "443" --source-address-prefix "138.91.141.162" --destination-address-prefix "VirtualNetwork" --access "Allow" --priority 305 --direction "Inbound"
لاسترداد المعرف الفريد لمجموعة أمان الشبكة هذه، استخدم الأمر التالي:
az network nsg show -g RESOURCEGROUP -n hdisecure --query "id"
يُرجع هذا الأمر قيمة مشابهة للنص التالي:
"/subscriptions/SUBSCRIPTIONID/resourceGroups/RESOURCEGROUP/providers/Microsoft.Network/networkSecurityGroups/hdisecure"
استخدم الأمر التالي لتطبيق مجموعة أمان الشبكة على شبكة فرعية.
GUID
استبدل القيم وRESOURCEGROUP
بالقيم التي تم إرجاعها من الخطوة السابقة. استبدلVNETNAME
وSUBNETNAME
باسم الشبكة الظاهرية واسم الشبكة الفرعية التي تريد إنشاؤها.az network vnet subnet update -g RESOURCEGROUP --vnet-name VNETNAME --name SUBNETNAME --set networkSecurityGroup.id="/subscriptions/GUID/resourceGroups/RESOURCEGROUP/providers/Microsoft.Network/networkSecurityGroups/hdisecure"
بمجرد اكتمال هذا الأمر، يمكنك تثبيت HDInsight في الشبكة الظاهرية.
تفتح هذه الخطوات الوصول إلى خدمة إدارة وصيانة HDInsight على سحابة Azure فقط. يتم حظر أي وصول آخر إلى مجموعة HDInsight من خارج الشبكة الظاهرية. لتمكين الوصول من خارج الشبكة الظاهرية، يجب إضافة المزيد من قواعد مجموعة أمان الشبكة.
توضح التعليمات البرمجية التالية كيفية تمكين وصول SSH من الإنترنت:
az network nsg rule create -g RESOURCEGROUP --nsg-name hdisecure -n ssh --protocol "*" --source-port-range "*" --destination-port-range "22" --source-address-prefix "*" --destination-address-prefix "VirtualNetwork" --access "Allow" --priority 306 --direction "Inbound"
مثال: تكوين DNS
تحليل الاسم بين شبكة ظاهرية وشبكة محلية متصلة
يفترض هذا المثال الافتراضات التالية:
أنك لديك شبكة Azure ظاهرية متصلة بشبكة محلية باستخدام بوابة VPN.
خادم DNS المخصص في الشبكة الظاهرية يشغل Linux أو Unix كنظام التشغيل.
على خادم DNS المخصص في الشبكة الظاهرية:
استخدم إما Azure PowerShell أو Azure CLI للبحث عن لاحقة DNS للشبكة الظاهرية:
استبدل
RESOURCEGROUP
باسم مجموعة الموارد التي تحتوي على الشبكة الظاهرية، ثم أدخل الأمر:$NICs = Get-AzNetworkInterface -ResourceGroupName "RESOURCEGROUP" $NICs[0].DnsSettings.InternalDomainNameSuffix
az network nic list --resource-group RESOURCEGROUP --query "[0].dnsSettings.internalDomainNameSuffix"
على خادم DNS المخصص للشبكة الظاهرية، استخدم النص التالي كمحتويات الملف
/etc/bind/named.conf.local
:// Forward requests for the virtual network suffix to Azure recursive resolver zone "0owcbllr5hze3hxdja3mqlrhhe.ex.internal.cloudapp.net" { type forward; forwarders {168.63.129.16;}; # Azure recursive resolver };
0owcbllr5hze3hxdja3mqlrhhe.ex.internal.cloudapp.net
استبدل القيمة بلاحقة DNS للشبكة الظاهرية.يوجه هذا التكوين كافة طلبات DNS للاحقة DNS بالشبكة الظاهرية إلى محلل العودية Azure.
على خادم DNS المخصص للشبكة الظاهرية، استخدم النص التالي كمحتويات الملف
/etc/bind/named.conf.options
:// Clients to accept requests from // TODO: Add the IP range of the joined network to this list acl goodclients { 10.0.0.0/16; # IP address range of the virtual network localhost; localnets; }; options { directory "/var/cache/bind"; recursion yes; allow-query { goodclients; }; # All other requests are sent to the following forwarders { 192.168.0.1; # Replace with the IP address of your on-premises DNS server }; dnssec-validation auto; auth-nxdomain no; # conform to RFC1035 listen-on { any; }; };
10.0.0.0/16
استبدل القيمة بالنطاق عنوان IP لشبكتك الظاهرية. يسمح هذا الإدخال لعناوين طلبات تحليل الاسم ضمن هذا النطاق.أضف نطاق عنوان IP للشبكة المحلية إلى
acl goodclients { ... }
القسم . يسمح الإدخال بطلبات تحليل الاسم من الموارد في الشبكة المحلية.استبدل القيمة
192.168.0.1
بعنوان IP لخادم DNS المحلي. يقوم هذا الإدخال بتوجيه جميع طلبات DNS الأخرى إلى خادم DNS المحلي.
لاستخدام التكوين، أعد تشغيل Bind. على سبيل المثال،
sudo service bind9 restart
أضف معيد توجيه شرطي إلى خادم DNS المحلي. كون معيد التوجيه الشرطي لإرسال طلبات للاحقة DNS من الخطوة 1 إلى خادم DNS المخصص.
إشعار
راجع وثائق برنامج DNS للحصول على تفاصيل حول كيفية إضافة معيد توجيه شرطي.
بعد إكمال هذه الخطوات، يمكنك الاتصال بالموارد في أي من الشبكتين باستخدام أسماء مجالات مؤهلة بالكامل (FQDN). يمكنك الآن تثبيت HDInsight في الشبكة الظاهرية.
تحليل الاسم بين شبكتين ظاهريتين متصلتين
يفترض هذا المثال الافتراضات التالية:
لديك شبكتان ظاهريتان من Azure متصلتان باستخدام إما بوابة VPN أو بوابة نظير.
خادم DNS المخصص في كلتا الشبكتين يشغل Linux أو Unix كنظام التشغيل.
استخدم إما Azure PowerShell أو Azure CLI للبحث عن لاحقة DNS لكلا الشبكتين الظاهريتين:
استبدل
RESOURCEGROUP
باسم مجموعة الموارد التي تحتوي على الشبكة الظاهرية، ثم أدخل الأمر:$NICs = Get-AzNetworkInterface -ResourceGroupName "RESOURCEGROUP" $NICs[0].DnsSettings.InternalDomainNameSuffix
az network nic list --resource-group RESOURCEGROUP --query "[0].dnsSettings.internalDomainNameSuffix"
استخدم النص التالي كمحتويات
/etc/bind/named.config.local
الملف على خادم DNS المخصص. إجراء هذا التغيير على خادم DNS المخصص في كل الشبكتين الظاهريتين.// Forward requests for the virtual network suffix to Azure recursive resolver zone "0owcbllr5hze3hxdja3mqlrhhe.ex.internal.cloudapp.net" { type forward; forwarders {10.0.0.4;}; # The IP address of the DNS server in the other virtual network };
0owcbllr5hze3hxdja3mqlrhhe.ex.internal.cloudapp.net
استبدل القيمة بلاحقة DNS للشبكة الظاهرية الأخرى. يقوم هذا الإدخال بتوجيه طلبات لاحقة DNS للشبكة البعيدة إلى DNS المخصص في تلك الشبكة.على خوادم DNS المخصصة في كلتا الشبكتين الظاهريتين، استخدم النص التالي كمحتويات الملف
/etc/bind/named.conf.options
:// Clients to accept requests from acl goodclients { 10.1.0.0/16; # The IP address range of one virtual network 10.0.0.0/16; # The IP address range of the other virtual network localhost; localnets; }; options { directory "/var/cache/bind"; recursion yes; allow-query { goodclients; }; forwarders { 168.63.129.16; # Azure recursive resolver }; dnssec-validation auto; auth-nxdomain no; # conform to RFC1035 listen-on { any; }; };
10.0.0.0/16
استبدل القيمتين و10.1.0.0/16
مع نطاقات عناوين IP لشبكاتك الظاهرية. يسمح هذا الإدخال للموارد في كل شبكة بتقديم طلبات خوادم DNS.تتم معالجة أية طلبات ليست لاحقات DNS للشبكات الظاهرية (على سبيل المثال، microsoft.com) بواسطة محلل العودية Azure.
لاستخدام التكوين، أعد تشغيل Bind. على سبيل المثال،
sudo service bind9 restart
على كل من خوادم DNS.
بعد إكمال هذه الخطوات، يمكنك الاتصال بالموارد في أي من الشبكتين الظاهريتين باستخدام أسماء مجالات مؤهلة بالكامل (FQDN). يمكنك الآن تثبيت HDInsight في الشبكة الظاهرية.
أختبر الإعدادات قبل نشر مجموعة HDInsight
قبل نشر نظام المجموعة، يمكنك التحقق من صحة العديد من إعدادات تكوين الشبكة عن طريق تشغيل أداة HDInsight Network Validator على جهاز ظاهري Azure Linux في نفس الشبكة الظاهرية والشبكة الفرعية مثل نظام المجموعة المخطط له.
الخطوات التالية
للحصول على مثال كامل لتكوين HDInsight للاتصال بشبكة محلية، راجع توصيل HDInsight بشبكة محلية.
لتكوين مجموعات Apache HBase في شبكات Azure الظاهرية، راجع إنشاء مجموعات Apache HBase على HDInsight في شبكة Azure الظاهرية.
لتكوين النسخ المتماثل الجغرافي ل Apache HBase، راجع إعداد النسخ المتماثل لمجموعة Apache HBase في شبكات Azure الظاهرية.
لمزيد من المعلومات حول شبكات Azure الظاهرية، راجع نظرة عامة على الشبكة الظاهرية لـ Azure.
لمزيد من المعلومات حول مجموعات أمان الشبكة، راجع "مجموعات أمان الشبكة".
لمزيد من المعلومات حول المسارات المعرفة من قبل المستخدم، راجع المسارات المعرفة من قبل المستخدم وإعادة توجيه عنوان ويب IP.