مشاركة عبر


كيفية إنشاء جهاز ظاهري Linux في Azure باستخدام بطاقات واجهة شبكة متعددة

ينطبق على: ✔️ أجهزة Linux الظاهرية ✔️ مجموعات مقياس مرنة

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

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

تثبيت أحدث Azure CLI وتسجيل الدخول إلى حساب Azure باستخدام az login.

في الأمثلة التالية، استبدل أسماء معلمات المثال بقيمك الخاصة. تتضمن أسماء المعلمات المثال myResourceGroupوmystorageaccountوmyVM.

أنشئ أولاً مجموعة موارد باستخدام az group create. في المثال التالي، سيتم إنشاء مجموعة موارد باسم myResourceGroup في موقع eastus. في هذه الأمثلة، نعلن عن متغيرات البيئة عند استخدامها ونضيف لاحقة عشوائية إلى أسماء الموارد الفريدة.

export RANDOM_SUFFIX=$(openssl rand -hex 3)
export MY_RESOURCE_GROUP_NAME="myResourceGroup$RANDOM_SUFFIX"
export REGION="WestUS2"
az group create --name $MY_RESOURCE_GROUP_NAME --location $REGION
{
  "id": "/subscriptions/xxxxx/resourceGroups/myResourceGroupxxx",
  "location": "WestUS2",
  "managedBy": null,
  "name": "myResourceGroupxxx",
  "properties": {
      "provisioningState": "Succeeded"
  },
  "tags": null,
  "type": "Microsoft.Resources/resourceGroups"
}

إنشاء الشبكة الظاهرية باستخدام az network vnet create. ينشئ المثال التالي شبكة ظاهرية تسمى myVnet والشبكة الفرعية المسماة mySubnetFrontEnd:

export VNET_NAME="myVnet"
export FRONTEND_SUBNET="mySubnetFrontEnd"
az network vnet create \
    --resource-group $MY_RESOURCE_GROUP_NAME \
    --name $VNET_NAME \
    --address-prefix 10.0.0.0/16 \
    --subnet-name $FRONTEND_SUBNET \
    --subnet-prefix 10.0.1.0/24

إنشاء شبكة فرعية لنسبة استخدام الشبكة الخلفية باستخدام az network vnet subnet create. ينشئ المثال التالي شبكة فرعية تسمى mySubnetBackEnd:

export BACKEND_SUBNET="mySubnetBackEnd"
az network vnet subnet create \
    --resource-group $MY_RESOURCE_GROUP_NAME \
    --vnet-name $VNET_NAME \
    --name $BACKEND_SUBNET \
    --address-prefix 10.0.2.0/24

إنشاء مجموعة أمان الشبكة باستخدام az network nsg create. ينشئ المثال التالي مجموعة أمان شبكة تسمى myNetworkSecurityGroup:

export NSG_NAME="myNetworkSecurityGroup"
az network nsg create \
    --resource-group $MY_RESOURCE_GROUP_NAME \
    --name $NSG_NAME

إنشاء وتكوين NIC متعددة

إنشاء اثنين من NICs مع az network nic create. ينشئ المثال التالي اثنين من NICs، تسمى myNic1وmyNic2، متصلتين بمجموعة أمان الشبكة، مع اتصال NIC واحد بكل شبكة فرعية:

export NIC1="myNic1"
export NIC2="myNic2"
az network nic create \
    --resource-group $MY_RESOURCE_GROUP_NAME \
    --name $NIC1 \
    --vnet-name $VNET_NAME \
    --subnet $FRONTEND_SUBNET \
    --network-security-group $NSG_NAME
az network nic create \
    --resource-group $MY_RESOURCE_GROUP_NAME \
    --name $NIC2 \
    --vnet-name $VNET_NAME \
    --subnet $BACKEND_SUBNET \
    --network-security-group $NSG_NAME

إنشاء جهاز ظاهري وإرفاق بطاقات NIC

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

قم بإنشاء جهاز ظاهري VM باستخدام "az vm إنشاء". ينشئ المثال التالي جهازا ظاهريا يسمى myVM:

export VM_NAME="myVM"
az vm create \
    --resource-group $MY_RESOURCE_GROUP_NAME \
    --name $VM_NAME \
    --image Ubuntu2204 \
    --size Standard_DS3_v2 \
    --admin-username azureuser \
    --generate-ssh-keys \
    --nics $NIC1 $NIC2

أضف جداول التوجيه إلى نظام التشغيل الضيف عن طريق إكمال الخطوات في تكوين نظام التشغيل الضيف لNIC متعددة.

إضافة NIC إلى جهاز ظاهري

أنشأت الخطوات السابقة جهازا ظاهريا بNIC متعددة. يمكنك أيضا إضافة NICs إلى جهاز ظاهري موجود باستخدام Azure CLI. تدعم أحجام الأجهزة الظاهرية المختلفة عددا مختلفا من بطاقات NIC، لذا قم بحجم الجهاز الظاهري وفقا لذلك. إذا لزم الأمر، يمكنك تغيير حجم الجهاز الظاهري.

إنشاء NIC آخر باستخدام az network nic create. ينشئ المثال التالي NIC يسمى myNic3 متصلا بالشبكة الفرعية الخلفية ومجموعة أمان الشبكة التي تم إنشاؤها في الخطوات السابقة:

export NIC3="myNic3"
az network nic create \
    --resource-group $MY_RESOURCE_GROUP_NAME \
    --name $NIC3 \
    --vnet-name $VNET_NAME \
    --subnet $BACKEND_SUBNET \
    --network-security-group $NSG_NAME

لإضافة NIC إلى جهاز ظاهري موجود، قم أولا بإلغاء تخصيص الجهاز الظاهري باستخدام az vm deallocate. يلغي المثال التالي تخصيص الجهاز الظاهري المسمى myVM:

az vm deallocate --resource-group $MY_RESOURCE_GROUP_NAME --name $VM_NAME

أضف NIC مع إضافة az vm nic. يضيف المثال التالي myNic3 إلى myVM:

az vm nic add \
    --resource-group $MY_RESOURCE_GROUP_NAME \
    --vm-name $VM_NAME \
    --nics $NIC3

بدء تشغيل الجهاز الظاهري مع az vm start:

az vm start --resource-group $MY_RESOURCE_GROUP_NAME --name $VM_NAME

أضف جداول التوجيه إلى نظام التشغيل الضيف عن طريق إكمال الخطوات في تكوين نظام التشغيل الضيف لNIC متعددة.

إزالة NIC من جهاز ظاهري

لإزالة NIC من جهاز ظاهري موجود، قم أولا بإلغاء تخصيص الجهاز الظاهري باستخدام az vm deallocate. يلغي المثال التالي تخصيص الجهاز الظاهري المسمى myVM:

az vm deallocate --resource-group $MY_RESOURCE_GROUP_NAME --name $VM_NAME

إزالة NIC مع إزالة az vm nic. يزيل المثال التالي myNic3 من myVM:

az vm nic remove \
    --resource-group $MY_RESOURCE_GROUP_NAME \
    --vm-name $VM_NAME \
    --nics $NIC3

بدء تشغيل الجهاز الظاهري مع az vm start:

az vm start --resource-group $MY_RESOURCE_GROUP_NAME --name $VM_NAME

إنشاء بطاقات NIC متعددة باستخدام قوالب Resource Manager

تستخدم قوالب Azure Resource Manager ملفات JSON التعريفية لتحديد بيئتك. يمكنك قراءة نظرة عامة على Azure Resource Manager. توفر قوالب Resource Manager طريقة لإنشاء مثيلات متعددة لمورد أثناء النشر، مثل إنشاء بطاقات NIC متعددة. يمكنك استخدام نسخة لتحديد عدد المثيلات المراد إنشاؤها:

"copy": {
    "name": "multiplenics"
    "count": "[parameters('count')]"
}

اقرأ المزيد حول إنشاء مثيلات متعددة باستخدام النسخ.

يمكنك أيضا استخدام copyIndex() لإلحاق رقم باسم مورد، والذي يسمح لك بإنشاء myNic1 وmyNic2 وما إلى ذلك. يوضح ما يلي مثالا على إلحاق قيمة الفهرس:

"name": "[concat('myNic', copyIndex())]",

يمكنك قراءة مثال كامل لإنشاء عدة بطاقات NIC باستخدام قوالب Resource Manager.

أضف جداول التوجيه إلى نظام التشغيل الضيف عن طريق إكمال الخطوات في تكوين نظام التشغيل الضيف لNIC متعددة.

تكوين نظام التشغيل الضيف لNIC متعددة

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

للسماح بحركة مرور SSH، قم بإنشاء قاعدة مجموعة أمان شبكة باستخدام az network nsg rule create كما يلي:

az network nsg rule create \
    --resource-group $MY_RESOURCE_GROUP_NAME \
    --nsg-name $NSG_NAME \
    --name allow_ssh \
    --priority 101 \
    --destination-port-ranges 22

إنشاء عنوان IP عام باستخدام az network public-ip create وتعيينه إلى NIC الأول مع تحديث az network nic ip-config:

export PUBLIC_IP_NAME="myPublicIP"
az network public-ip create --resource-group $MY_RESOURCE_GROUP_NAME --name $PUBLIC_IP_NAME

az network nic ip-config update \
    --resource-group $MY_RESOURCE_GROUP_NAME \
    --nic-name $NIC1 \
    --name ipconfig1 \
    --public-ip $PUBLIC_IP_NAME

لعرض عنوان IP العام للجهاز الظاهري، استخدم az vm show كما يلي:

az vm show --resource-group $MY_RESOURCE_GROUP_NAME --name $VM_NAME -d --query publicIps -o tsv
x.x.x.x

الآن SSH إلى عنوان IP العام للجهاز الظاهري الخاص بك. اسم المستخدم الافتراضي المقدم في خطوة سابقة كان azureuser. قم بتوفير اسم المستخدم وعنوان IP العام الخاص بك:

export IP_ADDRESS=$(az vm show --resource-group $MY_RESOURCE_GROUP_NAME --name $VM_NAME -d --query publicIps -o tsv)
ssh -o StrictHostKeyChecking=no azureuser@$IP_ADDRESS

لإرسال واجهة شبكة ثانوية أو منها، يجب عليك إضافة مسارات مستمرة يدويا إلى نظام التشغيل لكل واجهة شبكة ثانوية. في هذه المقالة، eth1 هي الواجهة الثانوية. تختلف إرشادات إضافة التوجيهات المستمرة إلى نظام التشغيل حسب توزيعة البيانات. راجع وثائق توزيعك للحصول على الإرشادات.

عند إضافة المسار إلى نظام التشغيل، يكون عنوان البوابة هو العنوان الأول للشبكة الفرعية التي توجد بها واجهة الشبكة. على سبيل المثال، إذا تم تعيين النطاق 10.0.2.0/24 للشبكة الفرعية، فإن البوابة التي تحددها للمسار هي 10.0.2.1 أو إذا تم تعيين النطاق 10.0.2.128/25، فإن البوابة التي تحددها للمسار هي 10.0.2.129. يمكنك تعريف شبكة معينة لوجهة المسار، أو تحديد وجهة 0.0.0.0، إذا كنت تريد أن تمر كل نسبة استخدام الشبكة للواجهة عبر البوابة المحددة. تتم إدارة البوابة لكل شبكة فرعية بواسطة الشبكة الظاهرية.

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

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         10.0.1.1        0.0.0.0         UG    0      0        0 eth0
0.0.0.0         10.0.2.1        0.0.0.0         UG    0      0        0 eth1
10.0.1.0        0.0.0.0         255.255.255.0   U     0      0        0 eth0
10.0.2.0        0.0.0.0         255.255.255.0   U     0      0        0 eth1
168.63.129.16   10.0.1.1        255.255.255.255 UGH   0      0        0 eth0
169.254.169.254 10.0.1.1        255.255.255.255 UGH   0      0        0 eth0

تأكد من استمرار المسار الذي أضفته عبر عمليات إعادة التشغيل عن طريق التحقق من جدول التوجيه مرة أخرى بعد إعادة التشغيل. لاختبار الاتصال، يمكنك إدخال الأمر التالي، على سبيل المثال، حيث eth1 هو اسم واجهة شبكة ثانوية: ping bing.com -c 4 -I eth1

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

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

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