Freigeben über


Vorbereiten eines auf Red Hat basierenden virtuellen Computers für Azure

Gilt für: ✔️ Linux-VMs ✔️ Flexible Skalierungsgruppen ✔️ Einheitliche Skalierungsgruppen

In diesem Artikel erfahren Sie, wie Sie einen auf Red Hat Enterprise Linux (RHEL) basierenden virtuellen Computer (VM) für die Verwendung in Azure vorbereiten. In diesem Artikel werden die RHEL-Versionen 7.x, 8.X und 9.x behandelt. Die Hypervisoren für die Vorbereitung, die in diesem Artikel behandelt werden, sind Hyper-V, kernelbasierte VM (KVM), VMware und Kickstart.

Weitere Informationen zu den Berechtigungsvoraussetzungen für die Teilnahme am Cloud Access-Programm von Red Hat finden Sie auf der Red Hat Cloud Access-Website und unter Ausführen von RHEL in Azure. Weitere Informationen zu den Möglichkeiten zum Automatisieren der Erstellung von RHEL-Images finden Sie unter Azure Image Builder.

Hinweis

Achten Sie auf Versionen, die das Ende der Lebensdauer (End of Life, EOL) erreicht haben und von Red Hat nicht mehr unterstützt werden. Hochgeladene Images, die das EOL-Datum erreicht oder überschritten haben, werden mit einem angemessenen geschäftlichen Aufwand unterstützt. Weitere Informationen finden Sie unter Red Hat Product Life Cycles.

Voraussetzungen

In diesem Abschnitt wird davon ausgegangen, dass Sie bereits eine ISO-Datei von der Red Hat-Website beschafft und das RHEL-Image auf einer virtuellen Festplatte (VHD) installiert haben. Weitere Informationen zum Installieren eines Betriebssystemimages mit dem Hyper-V-Manager finden Sie unter Installieren der Hyper-V-Rolle und Konfigurieren einer VM.

Installationshinweise zu RHEL

  • Das VHDX-Format wird von Azure nicht unterstützt. Azure unterstützt nur feste virtuelle Festplatten. Sie können Hyper-V Manager verwenden, um den Datenträger in das VHD-Format zu konvertieren, oder Sie können das Cmdlet convert-vhd verwenden. Wählen Sie bei Verwendung von VirtualBox die Option Feste Größe und nicht die standardmäßig dynamisch zugeordnete Option, wenn Sie den Datenträger erstellen.
  • Azure unterstützt virtuelle Computer der Gen1 (BIOS-Start) und Gen2 (UEFI-Start).
  • Die maximal zulässige Größe für die virtuelle Festplatte beträgt 1.023 GB.
  • Das vfat-Kernelmodul muss im Kernel aktiviert sein.
  • Logical Volume Manager (LVM) wird unterstützt und kann auf dem Betriebssystemdatenträger oder den Datenträgern mit Daten auf virtuellen Azure-Computern verwendet werden. Im Allgemeinen wird empfohlen, dass Sie anstelle von LVM Standardpartitionen auf dem Betriebssystemdatenträger verwenden. So werden LVM-Namenskonflikte mit geklonten virtuellen Computern vermieden. Dies gilt insbesondere dann, wenn Sie einen Betriebssystemdatenträger zur Problembehandlung an einen anderen identischen virtuellen Computer anfügen müssen. Weitere Informationen finden Sie in der LVM- und RAID-Dokumentation.
  • Kernelunterstützung für die Bereitstellung von UDF-Dateisystemen (Universal Disk Format) ist erforderlich. Beim ersten Starten in Azure übergibt das Medium im UDF-Format, das an den Gast angefügt ist, die Bereitstellungskonfiguration an den virtuellen Linux-Computer. Der Azure-Linux-Agent muss das UDF-Dateisystem bereitstellen können, um dessen Konfiguration zu lesen und die VM bereitzustellen. Ohne diesen Schritt schlägt die Bereitstellung fehl.
  • Konfigurieren Sie auf dem Betriebssystemdatenträger keine Swap-Partition. Weitere Informationen finden Sie in den folgenden Schritten.
  • Alle VHDs in Azure benötigen eine virtuelle Größe, die auf 1 MB ausgerichtet ist. Stellen Sie beim Konvertieren von einem RAW-Datenträger in VHD sicher, dass die Größe des RAW-Datenträgers vor der Konvertierung ein Vielfaches von 1 MB beträgt. Weitere Informationen finden Sie in den folgenden Schritten. Siehe auch Linux-Installationshinweise.

Hinweis

Cloud-init >= 21.2 entfernt die UDF-Anforderung. Aber ohne das aktivierte UDF-Modul wird die CD-ROM während der Bereitstellung nicht eingebunden, was verhindert, dass die benutzerdefinierten Daten angewendet werden. Eine Problemumgehung besteht darin, benutzerdefinierte Daten mithilfe von Benutzerdaten anzuwenden. Im Gegensatz zu benutzerdefinierten Daten werden Benutzerdaten jedoch nicht verschlüsselt. Weitere Informationen finden Sie unter Benutzerdatenformate.

  1. Wählen Sie im Hyper-V-Manager den virtuellen Computer aus.

  2. Wählen Sie Verbinden aus, um ein Konsolenfenster für den virtuellen Computer zu öffnen.

  3. Erstellen oder bearbeiten Sie die Datei /etc/sysconfig/network, und fügen Sie ihr den folgenden Text hinzu:

    NETWORKING=yes
    HOSTNAME=localhost.localdomain
    
  4. Erstellen oder bearbeiten Sie die Datei /etc/sysconfig/network-scripts/ifcfg-eth0, und fügen Sie ihr den folgenden Text hinzu:

    DEVICE=eth0
    ONBOOT=yes
    BOOTPROTO=dhcp
    TYPE=Ethernet
    USERCTL=no
    PEERDNS=yes
    IPV6INIT=no
    PERSISTENT_DHCLIENT=yes
    NM_CONTROLLED=yes
    

    Hinweis

    Wenn Sie „Accelerated Networking“ verwenden, muss die erstellte synthetische Schnittstelle so konfiguriert werden, dass sie mithilfe einer Udev-Regel nicht verwaltet wird. Diese Aktion verhindert, dass NetworkManager die gleiche IP-Adresse wie die primäre Schnittstelle zuweist.

    Anwendung:

    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. Stellen Sie sicher, dass der Netzwerkdienst zur Startzeit gestartet wird:

    sudo systemctl enable network
    
  6. Registrieren Sie Ihr Red Hat-Abonnement, um die Installation von Paketen aus dem RHEL-Repository zu ermöglichen:

    sudo subscription-manager register --auto-attach --username=XXX --password=XXX
    
  7. Ändern Sie die Bootzeile des Kernels in Ihrer Grub-Konfiguration, um weitere Kernel-Parameter für Azure einzubinden. Öffnen Sie für diese Änderung /etc/default/grub in einem Text-Editor, und bearbeiten Sie den GRUB_CMDLINE_LINUX-Parameter. Zum Beispiel:

    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
    

    Hinweis

    Wenn ENABLE_BLSCFG=false in /etc/default/grub anstelle von ENABLE_BLSCFG=true vorhanden ist, funktionieren Tools wie grubedit oder gubby, die auf der Boot Loader Specification (BLS) zum Verwalten von Starteinträgen und Konfigurationen basieren, in RHEL 8 und 9 möglicherweise nicht ordnungsgemäß. Wenn ENABLE_BLSCFG nicht vorhanden ist, wird das Standardverhalten false.

    Durch diese Modifikation wird außerdem sichergestellt, dass alle Konsolennachrichten an den ersten seriellen Anschluss gesendet werden, und die Interaktion mit der seriellen Konsole ermöglicht, was den Azure Support bei Debugproblemen unterstützen kann. Diese Konfiguration deaktiviert auch die neuen Benennungskonventionen für Netzwerkschnittstellenkarten (NICs).

    rhgb quiet crashkernel=auto
    

    Weder grafische Startvorgänge noch Startvorgänge im stillen Modus sind in einer Cloudumgebung nützlich, in der alle Protokolle an den seriellen Port gesendet werden sollen. Sie können die Option crashkernel bei Bedarf konfiguriert lassen. Dieser Parameter reduziert den verfügbaren Arbeitsspeicher des virtuellen Computers um mindestens 128 MB. Dies kann bei kleineren virtuellen Computern Probleme verursachen.

  8. Nachdem Sie die Bearbeitung von /etc/default/grub abgeschlossen haben, führen Sie den folgenden Befehl zum erneuten Erstellen der GRUB-Konfiguration aus:

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

    Hinweis

    Beim Hochladen einer UEFI-fähigen VM lautet der Befehl zum Upgraden von GRUB grub2-mkconfig -o /boot/efi/EFI/redhat/grub.cfg.

  9. Stellen Sie sicher, dass der SSH-Server installiert und so konfiguriert ist, dass er beim Booten hochfährt. Ergänzen Sie /etc/ssh/sshd_config um die folgende Zeile:

    ClientAliveInterval 180
    
  10. Das WALinuxAgent-Paket WALinuxAgent-<version> wurde in das Red Hat Extras-Repository übertragen. Aktivieren Sie das Extras-Repository:

    sudo subscription-manager repos --enable=rhel-7-server-extras-rpms
    
  11. Installieren Sie den Azure Linux-Agent cloud-init und andere erforderliche Dienstprogramme:

    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. Konfigurieren Sie cloud-init für die Verarbeitung der Bereitstellung:

    1. Konfigurieren von waagent für 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
      

      Hinweis

      Wenn Sie eine bestimmte VM migrieren und kein generalisiertes Image erstellen möchten, legen Sie Provisioning.Agent=disabled für die /etc/waagent.conf-Konfiguration fest.

    2. Konfigurieren der Einbindungen:

      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. Konfigurieren Sie die Azure-Datenquelle:

      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. Falls konfiguriert, entfernen Sie die vorhandene Auslagerungsdatei:

      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. Konfigurieren Sie cloud-init-Protokollierung:

      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. Auslagerungskonfiguration:

    • Erstellen Sie auf dem Betriebssystemdatenträger keinen Auslagerungsbereich.

      Zuvor wurde der Azure Linux-Agent verwendet, um Auslagerungsbereiche automatisch mithilfe des lokalen Ressourcendatenträgers zu konfigurieren, der an den virtuellen Computer angefügt ist, nachdem der virtuelle Computer auf Azure bereitgestellt wurde. Diese Aktion wird jetzt von cloud-init behandelt. Sie dürfen den Linux-Agent nicht zum Formatieren des Ressourcendatenträgers verwenden, um die Auslagerungsdatei zu erstellen. Ändern Sie die folgenden Parameter in /etc/waagent.conf entsprechend:

      ResourceDisk.Format=n
      ResourceDisk.EnableSwap=n
      
    • Wenn Sie den Tausch bereitstellen, formatieren und erstellen möchten, können Sie eine der folgenden Aktionen ausführen:

      • Übergeben Sie diesen Code als cloud-init-Konfiguration jedes Mal, wenn Sie einen virtuellen Computer mit benutzerdefinierten Daten erstellen. Diese Methode wird empfohlen.

      • Verwenden Sie eine in das Image eingebundene cloud-init-Direktive, die diesen Schritt jedes Mal ausführt, wenn der virtuelle Computer erstellt wird.

        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. Konfigurieren Sie cloud-init-Telemetrie, um die Problembehandlung bei Bereitstellungsproblemen zu unterstützen:

    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. Wenn Sie die Registrierung des Abonnements aufheben möchten, führen Sie den folgenden Befehl aus:

    
    sudo subscription-manager unregister
    
  16. Stellen Sie den virtuellen Computer bereit, und bereiten Sie ihn für die Bereitstellung in Azure vor:

    Achtung

    Wenn Sie eine bestimmte VM migrieren und kein generalisiertes Image erstellen möchten, überspringen Sie den Schritt zum Aufheben der Bereitstellung. Durch Ausführen des Befehls waagent -force -deprovision+user wird der Quellcomputer unbrauchbar. Dieser Schritt soll nur ein generalisiertes Image erstellen.

    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. Wählen Sie im Hyper-V-Manager Aktion>Herunterfahren aus. Ihre Linux-VHD kann nun in Azure hochgeladen werden.