Udostępnij za pośrednictwem


Przygotowywanie maszyny wirtualnej bazującej na systemie Red Hat dla platformy Azure

Dotyczy: ✔️ Maszyny wirtualne z systemem Linux — elastyczne zestawy ✔️ ✔️ skalowania jednolite zestawy skalowania

Z tego artykułu dowiesz się, jak przygotować maszynę wirtualną z systemem Red Hat Enterprise Linux (RHEL) do użycia na platformie Azure. Wersje systemu RHEL omówione w tym artykule to 7.x, 8.X., 9.x. Funkcje hypervisor do przygotowania, które zostały omówione w tym artykule, to hyper-V, maszyna wirtualna oparta na jądrze (KVM), VMware i Kickstart.

Aby uzyskać więcej informacji na temat wymagań kwalifikacyjnych dotyczących udziału w programie Cloud Access firmy Red Hat, zobacz witrynę internetową red hat Cloud Access i running RHEL on Azure (Uruchamianie systemu RHEL na platformie Azure). Aby uzyskać informacje na temat sposobów automatyzowania tworzenia obrazów systemu RHEL, zobacz Azure Image Builder.

Uwaga

Należy pamiętać o wersjach, które są na ich koniec życia (EOL) i nie są już obsługiwane przez Red Hat. Przekazane obrazy, które znajdują się poza EOL lub poza nią, są obsługiwane w rozsądnym zakresie nakładu pracy biznesowej. Aby uzyskać więcej informacji, zobacz Cykle życia produktu Red Hat.

Wymagania wstępne

W tej sekcji założono, że plik ISO został już uzyskany z witryny internetowej red hat i zainstalowany obraz RHEL na wirtualnym dysku twardym (VHD). Aby uzyskać więcej informacji na temat sposobu instalowania obrazu systemu operacyjnego za pomocą Menedżera funkcji Hyper-V, zobacz Instalowanie roli funkcji Hyper-V i konfigurowanie maszyny wirtualnej.

Uwagi dotyczące instalacji systemu RHEL

  • Platforma Azure nie obsługuje formatu VHDX. pomoc techniczna platformy Azure tylko stały dysk VHD. Za pomocą Menedżera funkcji Hyper-V można przekonwertować dysk na format VHD lub użyć convert-vhd polecenia cmdlet . Jeśli używasz usługi VirtualBox, wybierz opcję Stały rozmiar , a nie domyślną opcję dynamicznie przydzieloną podczas tworzenia dysku.
  • pomoc techniczna platformy Azure s Gen1 (rozruch systemu BIOS) i maszyny wirtualne gen2 (rozruch UEFI).
  • Maksymalny rozmiar dozwolony dla dysku VHD wynosi 1023 GB.
  • Moduł jądra vfat musi być włączony w jądrze.
  • Menedżer woluminów logicznych (LVM) jest obsługiwany i może być używany na dysku systemu operacyjnego lub dyskach danych na maszynach wirtualnych platformy Azure. Ogólnie rzecz biorąc, zalecamy używanie partycji standardowych na dysku systemu operacyjnego, a nie LVM. Ta praktyka pozwala uniknąć konfliktów nazw LVM z sklonowanymi maszynami wirtualnymi, szczególnie jeśli kiedykolwiek trzeba dołączyć dysk systemu operacyjnego do innej identycznej maszyny wirtualnej w celu rozwiązywania problemów. Aby uzyskać więcej informacji, zobacz dokumentację LVM i RAID .
  • Wymagana jest obsługa jądra na potrzeby instalowania systemów plików formatu uniwersalnego dysku (UDF). Podczas pierwszego rozruchu na platformie Azure nośnik sformatowany przez użytkownika dołączony do gościa przekazuje konfigurację aprowizacji do maszyny wirtualnej z systemem Linux. Agent systemu Linux platformy Azure musi mieć możliwość zainstalowania systemu plików UDF, aby odczytać jego konfigurację i aprowizować maszynę wirtualną. Bez tego kroku aprowizowanie kończy się niepowodzeniem.
  • Nie konfiguruj partycji wymiany na dysku systemu operacyjnego. Aby uzyskać więcej informacji, zapoznaj się z poniższymi krokami.
  • Wszystkie wirtualne dyski twarde na platformie Azure muszą mieć rozmiar wirtualny wyrównany do 1 MB. Podczas konwertowania z dysku nieprzetworzonego na dysk VHD należy upewnić się, że rozmiar nieprzetworzonego dysku to wielokrotność 1 MB przed konwersją. Aby uzyskać więcej informacji, zapoznaj się z poniższymi krokami. Zobacz też uwagi dotyczące instalacji systemu Linux.

Uwaga

Cloud-init >= 21.2 usuwa wymaganie funkcji zdefiniowanej przez użytkownika. Jednak bez włączonego modułu UDF dysk CD-ROM nie zostanie zamontowany podczas aprowizacji, co uniemożliwia stosowanie niestandardowych danych. Obejściem jest zastosowanie niestandardowych danych przy użyciu danych użytkownika. W przeciwieństwie do danych niestandardowych dane użytkownika nie są szyfrowane. Aby uzyskać więcej informacji, zobacz Formaty danych użytkownika.

  1. W Menedżerze funkcji Hyper-V wybierz maszynę wirtualną.

  2. Wybierz pozycję Połącz, aby otworzyć okno konsoli dla maszyny wirtualnej.

  3. Utwórz lub edytuj /etc/sysconfig/network plik i dodaj następujący tekst:

    NETWORKING=yes
    HOSTNAME=localhost.localdomain
    
  4. Utwórz lub edytuj /etc/sysconfig/network-scripts/ifcfg-eth0 plik i dodaj następujący tekst:

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

    Uwaga

    W przypadku korzystania z przyspieszonej sieci syntetyczny interfejs utworzony musi być skonfigurowany tak, aby był niezarządzany przy użyciu reguły ujmowania. Ta akcja uniemożliwia NetworkManager przypisanie do niego tego samego adresu IP co interfejs podstawowy.

    Aby go zastosować:

    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. Upewnij się, że usługa sieciowa jest uruchamiana w czasie rozruchu:

    sudo systemctl enable network
    
  6. Zarejestruj subskrypcję oprogramowania Red Hat, aby włączyć instalację pakietów z repozytorium RHEL:

    sudo subscription-manager register --auto-attach --username=XXX --password=XXX
    
  7. Zmodyfikuj wiersz rozruchu jądra w konfiguracji grub, aby uwzględnić więcej parametrów jądra dla platformy Azure. Aby wykonać tę modyfikację, otwórz /etc/default/grub w edytorze tekstów i edytuj GRUB_CMDLINE_LINUX parametr . Na przykład:

    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
    

    Uwaga

    Jeśli ENABLE_BLSCFG=false jest obecny w /etc/default/grub zamiast ENABLE_BLSCFG=truenarzędzi , takich jak grubedit lub gubby, które opierają się na specyfikacji modułu ładującego rozruchu (BLS) do zarządzania wpisami i konfiguracjami rozruchu, mogą nie działać poprawnie w RHEL 8 i 9. Jeśli ENABLE_BLSCFG nie jest obecny, domyślne zachowanie to false.

    Ta modyfikacja gwarantuje również, że wszystkie komunikaty konsoli są wysyłane do pierwszego portu szeregowego i umożliwiają interakcję z konsolą szeregową, co może pomóc pomoc techniczna platformy Azure w przypadku problemów z debugowaniem. Ta konfiguracja wyłącza również nowe konwencje nazewnictwa kart interfejsu sieciowego.

    rhgb quiet crashkernel=auto
    

    Rozruchy graficzne i ciche nie są przydatne w środowisku chmury, w którym wszystkie dzienniki mają być wysyłane do portu szeregowego. Jeśli chcesz, możesz pozostawić crashkernel opcję skonfigurowaną. Ten parametr zmniejsza ilość dostępnej pamięci na maszynie wirtualnej o 128 MB lub więcej, co może być problemem dla mniejszych rozmiarów maszyn wirtualnych.

  8. Po zakończeniu edytowania /etc/default/gruburuchom następujące polecenie, aby ponownie skompilować konfigurację grub:

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

    Uwaga

    Jeśli przekazujesz maszynę wirtualną z obsługą interfejsu UEFI, polecenie aktualizacji pliku grub to grub2-mkconfig -o /boot/efi/EFI/redhat/grub.cfg.

  9. Upewnij się, że serwer SSH jest zainstalowany i skonfigurowany do uruchamiania w czasie rozruchu, co jest zwykle ustawieniem domyślnym. Zmodyfikuj /etc/ssh/sshd_config , aby uwzględnić następujący wiersz:

    ClientAliveInterval 180
    
  10. Pakiet WALinuxAgent-<version>WALinuxAgent został wypchnięty do repozytorium dodatków Red Hat. Włącz repozytorium dodatków:

    sudo subscription-manager repos --enable=rhel-7-server-extras-rpms
    
  11. Zainstaluj agenta systemu Linux platformy Azure i cloud-initinne niezbędne narzędzia:

    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. Skonfiguruj cloud-init do obsługi aprowizacji:

    1. Skonfiguruj waagent dla programu 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
      

      Uwaga

      Jeśli migrujesz określoną maszynę wirtualną i nie chcesz tworzyć uogólnionego obrazu, ustaw Provisioning.Agent=disabled konfigurację /etc/waagent.conf .

    2. Konfigurowanie instalacji:

      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. Konfigurowanie źródła danych platformy 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. W przypadku skonfigurowania usuń istniejący plik zamiany:

      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. Konfigurowanie rejestrowania 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. Konfiguracja zamiany:

    • Nie twórz miejsca wymiany na dysku systemu operacyjnego.

      Wcześniej agent systemu Linux platformy Azure był używany do automatycznego konfigurowania miejsca wymiany przy użyciu lokalnego dysku zasobów dołączonego do maszyny wirtualnej po aprowizacji maszyny wirtualnej na platformie Azure. Ta akcja jest teraz obsługiwana przez program cloud-init. Nie można używać agenta systemu Linux do formatowania dysku zasobu w celu utworzenia pliku wymiany. Zmodyfikuj odpowiednio następujące parametry /etc/waagent.conf :

      ResourceDisk.Format=n
      ResourceDisk.EnableSwap=n
      
    • Jeśli chcesz zainstalować, sformatować i utworzyć zamianę, możesz wykonać następujące czynności:

      • Przekaż ten kod jako konfigurację za każdym razem, gdy tworzysz maszynę wirtualną cloud-init za pomocą danych niestandardowych. Zalecamy tę metodę.

      • cloud-init Użyj dyrektywy baked do obrazu, który wykonuje ten krok za każdym razem, gdy maszyna wirtualna zostanie utworzona.

        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. Konfigurowanie cloud-init telemetrii w celu ułatwienia rozwiązywania problemów z aprowizowaniem:

    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. Jeśli chcesz wyrejestrować subskrypcję, uruchom następujące polecenie:

    
    sudo subscription-manager unregister
    
  16. Anulowanie aprowizacji maszyny wirtualnej i przygotowanie jej do aprowizacji na platformie Azure:

    Uwaga

    Jeśli migrujesz określoną maszynę wirtualną i nie chcesz tworzyć uogólnionego obrazu, pomiń krok anulowania aprowizacji. Uruchomienie polecenia waagent -force -deprovision+user powoduje, że maszyna źródłowa jest bezużyteczna. Ten krok jest przeznaczony tylko do utworzenia uogólnionego obrazu.

    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. Wybierz pozycję Akcja>Zamknij w Menedżerze funkcji Hyper-V. Wirtualny dysk twardy systemu Linux jest teraz gotowy do przekazania na platformę Azure.