مشاركة عبر


إعداد جهاز ظاهري يستند إلى 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 أثناء التوفير، مما يمنع تطبيق البيانات المخصصة. الحل البديل هو تطبيق البيانات المخصصة باستخدام بيانات المستخدم. على عكس البيانات المخصصة، لا يتم تشفير بيانات المستخدم. لمزيد من المعلومات، راجع تنسيقات بيانات المستخدم.

  1. في Hyper-V Manager، حدد الجهاز الظاهري.

  2. حدد Connect لفتح نافذة وحدة تحكم للجهاز الظاهري.

  3. أنشئ الملف /etc/sysconfig/network أو حرره، ثم أضف النص التالي:

    NETWORKING=yes
    HOSTNAME=localhost.localdomain
    
  4. أنشئ الملف /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
    
  5. تأكد من أن خدمة الشبكة تبدأ في وقت التمهيد:

    sudo systemctl enable network
    
  6. تسجيل اشتراك Red Hat لتمكين تثبيت الحزم من مستودع RHEL:

    sudo subscription-manager register --auto-attach --username=XXX --password=XXX
    
  7. تعديل خط تمهيد 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 ميغابايت أو أكثر، مما قد يكون مشكلة لأحجام الأجهزة الظاهرية الأصغر.

  8. بعد الانتهاء من التحرير /etc/default/grub، قم بتشغيل الأمر التالي لإعادة إنشاء تكوين grub:

    sudo grub2-mkconfig -o /boot/grub2/grub.cfg
    

    إشعار

    إذا كنت تقوم بتحميل جهاز ظاهري ممكن ل UEFI، فإن الأمر لتحديث grub هو grub2-mkconfig -o /boot/efi/EFI/redhat/grub.cfg.

  9. تأكد من تثبيت خادم SSH وتكوينه للبدء في وقت التمهيد، والذي عادةً ما يكون بالإعداد الافتراضي. عدِّل /etc/ssh/sshd_config لتضمين السطر التالي:

    ClientAliveInterval 180
    
  10. تم دفع حزمة WALinuxAgent، WALinuxAgent-<version>، إلى مستودع إضافات Red Hat. تمكين مستودع الإضافات:

    sudo subscription-manager repos --enable=rhel-7-server-extras-rpms
    
  11. تثبيت عامل 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
    
  12. تكوين cloud-init للتعامل مع التزويد:

    1. تكوين 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 التكوين.

    2. تكوين وحدات:

      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
      
    3. تكوين مصدر بيانات 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
      
    4. إذا تم تكوينه، فقم بإزالة ملف التبديل الموجود:

      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
      
    5. تكوين 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
      
  13. تكوين المبادلة:

    • لا تقم بإنشاء مساحة تبديل على قرص نظام التشغيل.

      في السابق، تم استخدام عامل 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
        
  14. تكوين 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
    
  15. إذا كنت تريد إلغاء تسجيل الاشتراك، فشغِّل الأمر التالي:

    
    sudo subscription-manager unregister
    
  16. إلغاء توفير الجهاز الظاهري وإعداده للتزويد على 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
    
  17. حدد Action>Shut down في Hyper-V Manager. أصبح قرص Linux VHD جاهزاً الآن للتحميل إلى Azure.