مشاركة عبر


إعداد جهاز ظاهري يستند إلى Red Hat لـ Azure

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

في هذه المقالة، ستتعلم كيفية إعداد جهاز ظاهري Red Hat Enterprise Linux (RHEL) للاستخدام في Azure. إصدارات RHEL التي تغطيها هذه المقالة هي 7.x، 8.X.، 9.x. المعالجات الافتراضية للتحضير التي تم تناولها في هذا المقال هي Hyper-V، وVM المعتمد على النواة (KVM)، وVMware، وKickstart.

لمزيد من المعلومات حول متطلبات الأهلية للمشاركة في برنامج Red Hat للوصول إلى السحابة، راجع موقع Red Hat Cloud Access على الويب وتشغيل RHEL على Azure. للحصول على طرق لأتمتة إنشاء صور RHEL، راجع Azure Image Builder.

المتطلبات الأساسية

إشعار

تفترض هذه الوثيقة أنك قمت بالفعل بنشر RHEL7 وحصلت على ترخيص كامل. يتم دعم الصور التي تم تحميلها في EOL أو خارجها على أساس معقول من الجهد التجاري. لمزيد من المعلومات، راجع دورات حياة منتج Red Hat.

ملاحظات تثبيت RHEL

  • لا يدعم Azure تنسيق VHDX. يدعم Azure VHD الثابت فقط. يمكنك استخدام Hyper-V Manager لتحويل القرص إلى تنسيق VHD، أو يمكنك استخدام convert-vhd cmdlet. إذا كنت تستخدم VirtualBox، فحدد الحجم الثابت بدلاً من الخيار الافتراضي المخصص ديناميكيًا عند إنشاء القرص.
  • يدعم Azure الأجهزة الظاهرية Gen1 (تمهيد BIOS) وGen2 (تمهيد UEFI).
  • الحد الأقصى المسموح به لجهاز VHD هو 1,023 جيجابايت.
  • يجب تمكين الوحدة النمطية vfat kernel في النواة.
  • يتم دعم إدارة وحدة التخزين المنطقية (LVM) ويمكن استخدامها على قرص نظام التشغيل أو أقراص البيانات في أجهزة Azure الظاهرية. بشكل عام، نوصي باستخدام الأقسام القياسية على قرص نظام التشغيل بدلا من LVM. تتجنب هذه الممارسة تعارض اسم LVM مع الأجهزة الظاهرية المستنسخة، خاصة إذا كنت بحاجة إلى إرفاق قرص نظام تشغيل بجهاز ظاهري آخر متطابق لاستكشاف الأخطاء وإصلاحها. لمزيد من المعلومات، راجع وثائق LVM و RAID.
  • مطلوب دعم Kernel لتثبيت أنظمة ملفات تنسيق القرص العالمي (UDF). عند أول إقلاع على Azure، تمرر الوسائط المرفقة بتنسيق UDF تكوين التوفير إلى آلة لينكس الافتراضية. يجب أن يكون عامل 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_TIMEOUT=10
    GRUB_CMDLINE_LINUX="console=tty1 console=ttyS0,115200n8 earlyprintk=ttyS0 net.ifnames=0 nvme_core.io_timeout=240"
    GRUB_TERMINAL="serial console"
    GRUB_SERIAL_COMMAND="serial --speed=115200 --unit=0 --word=8 --parity=no --stop=1"
    

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

    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-<version>WALinuxAgent متوفرة من مستودع الإضافات.

    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 -a /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.