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.
- RHEL 7 przy użyciu Menedżera funkcji Hyper-V
- RHEL 8+/9+ przy użyciu Menedżera funkcji Hyper-V
- RHEL 7 przy użyciu maszyny wirtualnej KVM
- RHEL 8+/9+ przy użyciu maszyny wirtualnej KVM
- RHEL 7 przy użyciu programu VMware
- RHEL 8+/9+ przy użyciu programu VMware
- RHEL 7 przy użyciu narzędzia Kickstart
- RHEL 8+/9+ przy użyciu narzędzia Kickstart
W Menedżerze funkcji Hyper-V wybierz maszynę wirtualną.
Wybierz pozycję Połącz, aby otworzyć okno konsoli dla maszyny wirtualnej.
Utwórz lub edytuj
/etc/sysconfig/network
plik i dodaj następujący tekst:NETWORKING=yes HOSTNAME=localhost.localdomain
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
Upewnij się, że usługa sieciowa jest uruchamiana w czasie rozruchu:
sudo systemctl enable network
Zarejestruj subskrypcję oprogramowania Red Hat, aby włączyć instalację pakietów z repozytorium RHEL:
sudo subscription-manager register --auto-attach --username=XXX --password=XXX
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 edytujGRUB_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
zamiastENABLE_BLSCFG=true
narzę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śliENABLE_BLSCFG
nie jest obecny, domyślne zachowanie tofalse
.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.Po zakończeniu edytowania
/etc/default/grub
uruchom 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
.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
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
Zainstaluj agenta systemu Linux platformy Azure i
cloud-init
inne 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
Skonfiguruj
cloud-init
do obsługi aprowizacji:Skonfiguruj
waagent
dla programucloud-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
.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
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
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
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
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
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
Jeśli chcesz wyrejestrować subskrypcję, uruchom następujące polecenie:
sudo subscription-manager unregister
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
Wybierz pozycję Akcja>Zamknij w Menedżerze funkcji Hyper-V. Wirtualny dysk twardy systemu Linux jest teraz gotowy do przekazania na platformę Azure.