إنشاء شبكات ظاهرية لأنظمة مجموعات 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.

  1. استخدم الأمر التالي لإنشاء مجموعة أمان شبكة جديدة تسمى hdisecure. استبدل RESOURCEGROUP بمجموعة الموارد التي تحتوي على شبكة Azure الظاهرية. استبدل LOCATION بالموقع (المنطقة) الذي تم إنشاء المجموعة فيه.

    az network nsg create -g RESOURCEGROUP -n hdisecure -l LOCATION
    

    بمجرد إنشاء المجموعة، تتلقى معلومات حول المجموعة الجديدة.

  2. استخدم ما يلي لإضافة قواعد إلى مجموعة أمان الشبكة الجديدة التي تسمح بالاتصال الوارد على المنفذ 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"
    
  3. لاسترداد المعرف الفريد لمجموعة أمان الشبكة هذه، استخدم الأمر التالي:

    az network nsg show -g RESOURCEGROUP -n hdisecure --query "id"
    

    يُرجع هذا الأمر قيمة مشابهة للنص التالي:

    "/subscriptions/SUBSCRIPTIONID/resourceGroups/RESOURCEGROUP/providers/Microsoft.Network/networkSecurityGroups/hdisecure"
    
  4. استخدم الأمر التالي لتطبيق مجموعة أمان الشبكة على شبكة فرعية. 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 المخصص.

على خادم DNS المخصص في الشبكة الظاهرية:

  1. استخدم إما 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"
    
  2. على خادم 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.

  3. على خادم 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 المحلي.

  4. لاستخدام التكوين، أعد تشغيل Bind. على سبيل المثال، sudo service bind9 restart

  5. أضف معيد توجيه شرطي إلى خادم DNS المحلي. كون معيد التوجيه الشرطي لإرسال طلبات للاحقة DNS من الخطوة 1 إلى خادم DNS المخصص.

    إشعار

    راجع وثائق برنامج DNS للحصول على تفاصيل حول كيفية إضافة معيد توجيه شرطي.

بعد إكمال هذه الخطوات، يمكنك الاتصال بالموارد في أي من الشبكتين باستخدام أسماء مجالات مؤهلة بالكامل (FQDN). يمكنك الآن تثبيت HDInsight في الشبكة الظاهرية.

تحليل الاسم بين شبكتين ظاهريتين متصلتين

يفترض هذا المثال الافتراضات التالية:

  • لديك شبكتان ظاهريتان من Azure متصلتان باستخدام إما بوابة VPN أو بوابة نظير.

  • خادم DNS المخصص في كلتا الشبكتين يشغل Linux أو Unix كنظام التشغيل.

  • يتم تثبيت الربط على خوادم DNS المخصصة.

  1. استخدم إما 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"
    
  2. استخدم النص التالي كمحتويات /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 المخصص في تلك الشبكة.

  3. على خوادم 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.

  4. لاستخدام التكوين، أعد تشغيل Bind. على سبيل المثال، sudo service bind9 restart على كل من خوادم DNS.

بعد إكمال هذه الخطوات، يمكنك الاتصال بالموارد في أي من الشبكتين الظاهريتين باستخدام أسماء مجالات مؤهلة بالكامل (FQDN). يمكنك الآن تثبيت HDInsight في الشبكة الظاهرية.

أختبر الإعدادات قبل نشر مجموعة HDInsight

قبل نشر نظام المجموعة، يمكنك التحقق من صحة العديد من إعدادات تكوين الشبكة عن طريق تشغيل أداة HDInsight Network Validator على جهاز ظاهري Azure Linux في نفس الشبكة الظاهرية والشبكة الفرعية مثل نظام المجموعة المخطط له.

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