Подготовка виртуальной машины на основе Red Hat для Azure
Область применения: ✔️ Виртуальные машины Linux ✔️ Гибкие масштабируемые наборы ✔️ Универсальные масштабируемые наборы
Из этой статьи вы узнаете, как подготовить виртуальную машину Red Hat Enterprise Linux (RHEL) для использования в Azure. Версии RHEL, описанные в этой статье, — 7.x, 8.X., 9.x. Гипервизоры для подготовки, описанные в этой статье, представляют собой Hyper-V, виртуальную машину на основе ядра (KVM), VMware и Kickstart.
Дополнительные сведения о требованиях к требованиям для участия в программе Cloud Access Red Hat см . на веб-сайте Red Hat Cloud Access и запуске RHEL в Azure. Способы автоматизации создания образов RHEL см. в разделе Конструктор образов Azure.
Примечание.
Помните о версиях, которые находятся в конце жизни (EOL) и больше не поддерживаются Red Hat. Загруженные образы, которые находятся в EOL или за пределами EOL, поддерживаются на разумной бизнес-основе. Дополнительные сведения см. в циклах жизненного цикла продукта Red Hat.
Необходимые компоненты
В этом разделе предполагается, что вы уже получили ISO-файл с веб-сайта Red Hat и установили образ RHEL на виртуальный жесткий диск (VHD). Дополнительные сведения об использовании диспетчера Hyper-V для установки образа операционной системы см. в статье "Установка роли Hyper-V" и настройка виртуальной машины.
Замечания по установке RHEL
- Azure не поддерживает формат VHDX. поддержка Azure только фиксированный виртуальный жесткий диск. Диспетчер Hyper-V можно использовать для преобразования диска в формат VHD или командлета
convert-vhd
. Если вы используете VirtualBox, при создании диска выберите фиксированный размер вместо динамически выделяемого (по умолчанию). - виртуальные машины поддержка Azure 1-го поколения (загрузка BIOS) и UEFI(UEFI).
- Максимально допустимый размер виртуального жесткого диска составляет 1023 ГБ.
- Модуль ядра vfat должен быть включен в ядро.
- Диспетчер логических томов (LVM) поддерживается и может использоваться на диске ОС или на дисках данных в виртуальных машинах Azure. Как правило, рекомендуется использовать стандартные секции на диске ОС, а не LVM. Это позволит избежать конфликта имен LVM при клонировании виртуальных машин, особенно если нужно подключить диск с OC к другой идентичной виртуальной машине в целях устранения неполадок. Дополнительные сведения см. в документации по LVM и RAID .
- Требуется поддержка ядра для подключения файловых систем UDF. При первой загрузке в Azure uDF-отформатированный носитель, подключенный к гостевой машине, передает конфигурацию подготовки виртуальной машине Linux. Агент Azure Linux должен иметь возможность подключать файловую систему UDF для считывания конфигурации и подготовки виртуальной машины. Без этого шага подготовка завершается ошибкой.
- Не настраивайте раздел swap на диске операционной системы. Дополнительные сведения см. в следующих шагах.
- Размер виртуальной памяти всех виртуальных жестких дисков в Azure должен быть округлен до 1 МБ. При преобразовании из необработанного диска в VHD необходимо убедиться, что размер необработанного диска составляет 1 МБ перед преобразованием. Дополнительные сведения см. в следующих шагах. См. также заметки о установке Linux.
Примечание.
Cloud-init >= 21.2 удаляет требование UDF. Однако без включения модуля UDF компакт-диск не будет подключаться во время подготовки, что предотвращает применение пользовательских данных. Обходным решением является применение пользовательских данных с помощью пользовательских данных. В отличие от пользовательских данных, пользовательские данные не шифруются. Дополнительные сведения см. в разделе "Форматы данных пользователей".
- RHEL 7 с помощью диспетчера Hyper-V
- RHEL 8+/9+ с помощью диспетчера Hyper-V
- RHEL 7 с помощью KVM
- RHEL 8+/9+ с помощью KVM
- RHEL 7 с помощью VMware
- RHEL 8+/9+ с помощью VMware
- RHEL 7 с помощью Kickstart
- RHEL 8+/9+ с помощью Kickstart
В диспетчере Hyper-V выберите виртуальную машину.
Выберите Подключение, чтобы открыть окно консоли для виртуальной машины.
Создайте или измените файл
/etc/sysconfig/network
, добавив следующий текст:NETWORKING=yes HOSTNAME=localhost.localdomain
Создайте или измените файл
/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
Убедитесь, что сетевая служба начинается во время загрузки:
sudo systemctl enable network
Зарегистрируйте подписку Red Hat, чтобы включить установку пакетов из репозитория RHEL:
sudo subscription-manager register --auto-attach --username=XXX --password=XXX
Измените загрузочную строку ядра в конфигурации grub, чтобы включить дополнительные параметры ядра для 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, которые зависят от спецификации загрузчика (BLS) для управления загрузочными записями и конфигурациями, могут работать неправильно в RHEL 8 и 9. ЕслиENABLE_BLSCFG
он отсутствует, по умолчанию используетсяfalse
поведение.Это изменение также гарантирует, что все сообщения консоли отправляются на первый последовательный порт и обеспечивают взаимодействие с последовательной консолью, которая может помочь поддержка Azure с проблемами отладки. Эта конфигурация также отключает новые соглашения об именовании для сетевых карт (сетевых карт).
rhgb quiet crashkernel=auto
Графические и тихие загрузки не полезны в облачной среде, где требуется отправлять все журналы в последовательный порт. Если вы хотите, можно оставить
crashkernel
этот параметр. Этот параметр уменьшает объем доступной памяти на виртуальной машине на 128 МБ или более, что может быть проблемой для небольших размеров виртуальных машин.После завершения редактирования
/etc/default/grub
выполните следующую команду, чтобы перестроить конфигурацию grub:sudo grub2-mkconfig -o /boot/grub2/grub.cfg
Примечание.
Если вы отправляете виртуальную машину с поддержкой UEFI, выполните команду для обновления grub
grub2-mkconfig -o /boot/efi/EFI/redhat/grub.cfg
.Убедитесь, что SSH-сервер установлен и настроен для включения во время загрузки (что обычно задано по умолчанию). Измените файл
/etc/ssh/sshd_config
, добавив в него следующую строку:ClientAliveInterval 180
Пакет WALinuxAgent
WALinuxAgent-<version>
был отправлен в репозиторий дополнений Red Hat. Включите репозиторий дополнительных компонентов:sudo subscription-manager repos --enable=rhel-7-server-extras-rpms
Установите агент
cloud-init
Azure Linux и другие необходимые служебные программы:sudo yum install -y WALinuxAgent cloud-init cloud-utils-growpart gdisk hyperv-daemons sudo systemctl enable waagent.service sudo systemctl enable cloud-init.service
Настройте
cloud-init
для обработки подготовки:Настройка
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
.Настройте подключения:
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
Настройте источник данных 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
При настройке удалите существующий файл буфера:
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
Настройка
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
Конфигурация переключения:
Не создавайте пространство подкачки на диске ОС.
Ранее агент Linux Azure использовался для автоматической настройки пространства буфера с помощью локального диска ресурсов, подключенного к виртуальной машине после подготовки виртуальной машины в 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
Настройте
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
Чтобы отменить регистрацию подписки, выполните следующую команду:
sudo subscription-manager unregister
Отмените подготовку виртуальной машины и подготовьте ее к подготовке в 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
В диспетчере Hyper-V выберите Действие>Завершение работы. Виртуальный жесткий диск Linux готов к передаче в Azure.