إعداد جهاز ظاهري يستند إلى Red Hat لـ Azure
ينطبق على: ✔️ أجهزة Linux الظاهرية ✔️ مجموعات المقياس المرنة ✔️ مجموعات المقياس الموحدة
في هذه المقالة، ستتعلم كيفية إعداد جهاز ظاهري Red Hat Enterprise Linux (RHEL) للاستخدام في Azure. إصدارات RHEL التي تغطيها هذه المقالة هي 7.x، 8.X.، 9.x. برامج تشغيل الآلة الافتراضية للتحضير التي تغطيها هذه المقالة هي Hyper-V وVM المستندة إلى kernel (KVM) وVMware وK kickstart.
لمزيد من المعلومات حول متطلبات الأهلية للمشاركة في برنامج Red Hat للوصول إلى السحابة، راجع موقع Red Hat Cloud Access على الويب وتشغيل RHEL على Azure. للحصول على طرق لأتمتة إنشاء صور RHEL، راجع Azure Image Builder.
إشعار
كن على دراية بالإصدارات التي في نهاية عمرها (EOL) ولم تعد مدعومة من قبل Red Hat. يتم دعم الصور التي تم تحميلها في EOL أو خارجها على أساس معقول من الجهد التجاري. لمزيد من المعلومات، راجع دورات حياة منتج Red Hat.
المتطلبات الأساسية
يفترض هذا القسم أنك حصلت بالفعل على ملف ISO من موقع Red Hat على الويب وقمت بتثبيت صورة RHEL على قرص ثابت ظاهري (VHD). لمزيد من المعلومات حول كيفية استخدام Hyper-V Manager لتثبيت صورة نظام التشغيل، راجع تثبيت دور Hyper-V وتكوين جهاز ظاهري.
ملاحظات تثبيت RHEL
- لا يدعم Azure تنسيق VHDX. يدعم Azure VHD الثابت فقط. يمكنك استخدام Hyper-V Manager لتحويل القرص إلى تنسيق VHD، أو يمكنك استخدام
convert-vhd
cmdlet. إذا كنت تستخدم VirtualBox، فحدد الحجم الثابت بدلاً من الخيار الافتراضي المخصص ديناميكيًا عند إنشاء القرص. - يدعم Azure الأجهزة الظاهرية Gen1 (تمهيد BIOS) وGen2 (تمهيد UEFI).
- الحد الأقصى للحجم المسموح به لـ VHD هو 1023 GB.
- يجب تمكين الوحدة النمطية vfat kernel في النواة.
- يتم دعم إدارة وحدة التخزين المنطقية (LVM) ويمكن استخدامها على قرص نظام التشغيل أو أقراص البيانات في أجهزة Azure الظاهرية. بشكل عام، نوصي باستخدام الأقسام القياسية على قرص نظام التشغيل بدلا من LVM. تتجنب هذه الممارسة تعارض اسم LVM مع الأجهزة الظاهرية المستنسخة، خاصة إذا كنت بحاجة إلى إرفاق قرص نظام تشغيل بجهاز ظاهري آخر متطابق لاستكشاف الأخطاء وإصلاحها. لمزيد من المعلومات، راجع وثائق LVM و RAID.
- مطلوب دعم Kernel لتثبيت أنظمة ملفات تنسيق القرص العالمي (UDF). في التمهيد الأول على Azure، تمرر الوسائط المنسقة بواسطة UDF المرفقة بالضيف تكوين التوفير إلى Linux VM. يجب أن يكون عامل Azure Linux قادرًا على إدخال نظام ملفات UDF لقراءة تكوينه وتوفير الجهاز الظاهري. بدون هذه الخطوة، يفشل التوفير.
- لا تقم بتكوين قسم تبديل على قرص نظام التشغيل. لمزيد من المعلومات، اقرأ الخطوات التالية.
- يجب أن يكون لجميع أقراص VHD على Azure حجم ظاهري محاذاته إلى 1 ميغابايت. عند التحويل من قرص خام إلى VHD، يجب التأكد من أن حجم القرص الخام هو مضاعف 1 ميغابايت قبل التحويل. لمزيد من المعلومات، اقرأ الخطوات التالية. راجع أيضا ملاحظات تثبيت Linux.
إشعار
Cloud-init >= 21.2 يزيل متطلبات UDF. ومع ذلك، بدون تمكين الوحدة النمطية UDF، لن يتم تحميل CD-ROM أثناء التوفير، مما يمنع تطبيق البيانات المخصصة. الحل البديل هو تطبيق البيانات المخصصة باستخدام بيانات المستخدم. على عكس البيانات المخصصة، لا يتم تشفير بيانات المستخدم. لمزيد من المعلومات، راجع تنسيقات بيانات المستخدم.
- RHEL 7 باستخدام Hyper-V Manager
- RHEL 8+/9+ باستخدام Hyper-V Manager
- RHEL 7 باستخدام KVM
- RHEL 8+/9+ باستخدام KVM
- RHEL 7 باستخدام VMware
- RHEL 8+/9+ باستخدام VMware
- RHEL 7 باستخدام Kickstart
- RHEL 8+/9+ باستخدام بدء التشغيل
في Hyper-V Manager، حدد الجهاز الظاهري.
حدد Connect لفتح نافذة وحدة تحكم للجهاز الظاهري.
أنشئ الملف
/etc/sysconfig/network
أو حرره، ثم أضف النص التالي:NETWORKING=yes HOSTNAME=localhost.localdomain
أنشئ الملف
/etc/sysconfig/network-scripts/ifcfg-eth0
أو حرره، ثم أضف النص التالي:DEVICE=eth0 ONBOOT=yes BOOTPROTO=dhcp TYPE=Ethernet USERCTL=no PEERDNS=yes IPV6INIT=no PERSISTENT_DHCLIENT=yes NM_CONTROLLED=yes
إشعار
عند استخدام الشبكات المسرعة، يجب تكوين الواجهة الاصطناعية التي تم إنشاؤها لتكون غير مدارة باستخدام قاعدة udev. يمنع
NetworkManager
هذا الإجراء من تعيين نفس IP إليه مثل الواجهة الأساسية.لتطبيقه:
sudo tee <<EOF /etc/udev/rules.d/68-azure-sriov-nm-unmanaged.rules > /dev/null # Accelerated Networking on Azure exposes a new SRIOV interface to the VM. # This interface is transparently bonded to the synthetic interface, # so NetworkManager should just ignore any SRIOV interfaces. SUBSYSTEM=="net", DRIVERS=="hv_pci", ACTION!="remove", ENV{NM_UNMANAGED}="1" EOF
تأكد من أن خدمة الشبكة تبدأ في وقت التمهيد:
sudo systemctl enable network
تسجيل اشتراك Red Hat لتمكين تثبيت الحزم من مستودع RHEL:
sudo subscription-manager register --auto-attach --username=XXX --password=XXX
تعديل خط تمهيد kernel في تكوين grub الخاص بك لتضمين المزيد من معلمات kernel ل Azure. لإجراء هذا التعديل، افتح
/etc/default/grub
في محرر نص وقم بتحرير المعلمةGRUB_CMDLINE_LINUX
. على سبيل المثال:GRUB_CMDLINE_LINUX="console=tty1 console=ttyS0,115200n8 earlyprintk=ttyS0 net.ifnames=0" GRUB_TERMINAL_OUTPUT="serial console" GRUB_SERIAL_COMMAND="serial --speed=115200 --unit=0 --word=8 --parity=no --stop=1" ENABLE_BLSCFG=true
إشعار
إذا كان ENABLE_BLSCFG=false موجودا في
/etc/default/grub
بدلا منENABLE_BLSCFG=true
، فقد لا تعمل أدوات مثل grubedit أو gubby، والتي تعتمد على Boot Loader Specification (BLS) لإدارة إدخالات التمهيد والتكوينات، بشكل صحيح في RHEL 8 و9. إذاENABLE_BLSCFG
لم يكن موجودا، فإن السلوك الافتراضي هوfalse
.يضمن هذا التعديل أيضا إرسال جميع رسائل وحدة التحكم إلى المنفذ التسلسلي الأول وتمكين التفاعل مع وحدة التحكم التسلسلية، والتي يمكن أن تساعد دعم Azure في تصحيح المشكلات. يؤدي هذا التكوين أيضا إلى إيقاف تشغيل اصطلاحات التسمية الجديدة لبطاقات واجهة الشبكة (NICs).
rhgb quiet crashkernel=auto
الأحذية الرسومية والهادئة ليست مفيدة في بيئة سحابية حيث تريد إرسال جميع السجلات إلى المنفذ التسلسلي. يمكنك ترك
crashkernel
الخيار مكونا إذا كنت تريد ذلك. تقلل هذه المعلمة مقدار الذاكرة المتوفرة في الجهاز الظاهري بمقدار 128 ميغابايت أو أكثر، مما قد يكون مشكلة لأحجام الأجهزة الظاهرية الأصغر.بعد الانتهاء من التحرير
/etc/default/grub
، قم بتشغيل الأمر التالي لإعادة إنشاء تكوين grub:sudo grub2-mkconfig -o /boot/grub2/grub.cfg
إشعار
إذا كنت تقوم بتحميل جهاز ظاهري ممكن ل UEFI، فإن الأمر لتحديث grub هو
grub2-mkconfig -o /boot/efi/EFI/redhat/grub.cfg
.تأكد من تثبيت خادم SSH وتكوينه للبدء في وقت التمهيد، والذي عادةً ما يكون بالإعداد الافتراضي. عدِّل
/etc/ssh/sshd_config
لتضمين السطر التالي:ClientAliveInterval 180
تم دفع حزمة WALinuxAgent،
WALinuxAgent-<version>
، إلى مستودع إضافات Red Hat. تمكين مستودع الإضافات:sudo subscription-manager repos --enable=rhel-7-server-extras-rpms
تثبيت عامل Azure Linux والأدوات
cloud-init
المساعدة الضرورية الأخرى:sudo yum install -y WALinuxAgent cloud-init cloud-utils-growpart gdisk hyperv-daemons sudo systemctl enable waagent.service sudo systemctl enable cloud-init.service
تكوين
cloud-init
للتعامل مع التزويد:تكوين
waagent
لcloud-init
:sudo sed -i 's/Provisioning.Agent=auto/Provisioning.Agent=auto/g' /etc/waagent.conf sudo sed -i 's/ResourceDisk.Format=y/ResourceDisk.Format=n/g' /etc/waagent.conf sudo sed -i 's/ResourceDisk.EnableSwap=y/ResourceDisk.EnableSwap=n/g' /etc/waagent.conf
إشعار
إذا كنت تقوم بترحيل جهاز ظاهري معين ولا تريد إنشاء صورة معممة، فقم بتعيين
Provisioning.Agent=disabled
على/etc/waagent.conf
التكوين.تكوين وحدات:
sudo echo "Adding mounts and disk_setup to init stage" sudo sed -i '/ - mounts/d' /etc/cloud/cloud.cfg sudo sed -i '/ - disk_setup/d' /etc/cloud/cloud.cfg sudo sed -i '/cloud_init_modules/a\\ - mounts' /etc/cloud/cloud.cfg sudo sed -i '/cloud_init_modules/a\\ - disk_setup' /etc/cloud/cloud.cfg
تكوين مصدر بيانات Azure:
sudo echo "Allow only Azure datasource, disable fetching network setting via IMDS" sudo tee /etc/cloud/cloud.cfg.d/91-azure_datasource.cfg <<EOF datasource_list: [ Azure ] datasource: Azure: apply_network_config: False EOF
إذا تم تكوينه، فقم بإزالة ملف التبديل الموجود:
if [[ -f /mnt/resource/swapfile ]]; then echo "Removing swapfile" #RHEL uses a swapfile by default swapoff /mnt/resource/swapfile rm /mnt/resource/swapfile -f fi
تكوين
cloud-init
التسجيل:sudo echo "Add console log file" sudo tee <<EOF /etc/cloud/cloud.cfg.d/05_logging.cfg > /dev/null # This tells cloud-init to redirect its stdout and stderr to # 'tee -a /var/log/cloud-init-output.log' so the user can see output # there without needing to look on the console. output: {all: '| tee -a /var/log/cloud-init-output.log'} EOF
تكوين المبادلة:
لا تقم بإنشاء مساحة تبديل على قرص نظام التشغيل.
في السابق، تم استخدام عامل Azure Linux لتكوين مساحة التبديل تلقائيا باستخدام قرص المورد المحلي المرفق بالجهاز الظاهري بعد توفير الجهاز الظاهري على Azure. تتم معالجة هذا الإجراء الآن بواسطة
cloud-init
. يجب عدم استخدام عامل Linux لتنسيق قرص المورد لإنشاء ملف التبديل. تعديل المعلمات التالية بشكل/etc/waagent.conf
مناسب:ResourceDisk.Format=n ResourceDisk.EnableSwap=n
إذا كنت تريد تحميل التبديل وتنسيقه وإنشائه، فيمكنك إما:
مرر هذه التعليمة البرمجية كتكوين
cloud-init
في كل مرة تقوم فيها بإنشاء جهاز ظاهري من خلال بيانات مخصصة. نوصي بهذا الأسلوب.استخدم توجيها مخبوزا
cloud-init
في الصورة التي تقوم بهذه الخطوة في كل مرة يتم فيها إنشاء الجهاز الظاهري.sudo echo 'DefaultEnvironment="CLOUD_CFG=/etc/cloud/cloud.cfg.d/00-azure-swap.cfg"' >> /etc/systemd/system.conf sudo tee /etc/cloud/cloud.cfg.d/00-azure-swap.cfg << EOF #cloud-config # Generated by Azure cloud image build disk_setup: ephemeral0: table_type: mbr layout: [66, [33, 82]] overwrite: True fs_setup: - device: ephemeral0.1 filesystem: ext4 - device: ephemeral0.2 filesystem: swap mounts: - ["ephemeral0.1", "/mnt/resource"] - ["ephemeral0.2", "none", "swap", "sw,nofail,x-systemd.requires=cloud-init.service,x-systemd.device-timeout=2", "0", "0"] EOF
تكوين
cloud-init
بيانات تتبع الاستخدام للمساعدة في استكشاف الأخطاء وإصلاحها لمشكلات التوفير:sudo tee >> /etc/cloud/cloud.cfg.d/10-azure-kvp.cfg << EOF # This config enables cloud-init to report provisioning telemetry to aid with troubleshooting Reporting: logging: type: log telemetry: type: hyperv EOF
إذا كنت تريد إلغاء تسجيل الاشتراك، فشغِّل الأمر التالي:
sudo subscription-manager unregister
إلغاء توفير الجهاز الظاهري وإعداده للتزويد على Azure:
تنبيه
إذا كنت تقوم بترحيل جهاز ظاهري معين ولا تريد إنشاء صورة معممة، فتخط خطوة إلغاء التوفير. يؤدي تشغيل الأمر
waagent -force -deprovision+user
إلى جعل الجهاز المصدر غير قابل للاستخدام. تهدف هذه الخطوة فقط إلى إنشاء صورة معممة.sudo rm -f /var/log/waagent.log sudo cloud-init clean --logs --seed sudo waagent -force -deprovision+user sudo rm -f ~/.bash_history sudo export HISTSIZE=0
حدد Action>Shut down في Hyper-V Manager. أصبح قرص Linux VHD جاهزاً الآن للتحميل إلى Azure.