Azure'da Red Hat tabanlı bir sanal makine hazırlama

Şunlar için geçerlidir: ✔️ Linux VM'leri ✔️ Esnek ölçek kümeleri ✔️ Tekdüzen ölçek kümeleri

Bu makalede, Red Hat Enterprise Linux (RHEL) sanal makinesini (VM) Azure'da kullanmak üzere hazırlamayı öğreneceksiniz. Bu makalede ele alınan RHEL sürümleri 7.x, 8.X., 9.x'tır. Bu makalede ele alınan hazırlık hiper yöneticileri Hyper-V, çekirdek tabanlı VM (KVM), VMware ve Kickstart'tır.

Red Hat'in Bulut Erişimi programına katılım için uygunluk gereksinimleri hakkında daha fazla bilgi için Red Hat Cloud Access web sitesine ve Azure'da RHEL çalıştırma bölümüne bakın. RHEL görüntüleri derlemeyi otomatikleştirmenin yolları için bkz . Azure Görüntü Oluşturucusu.

Önkoşullar

Not

Bu belgede RHEL7'nin zaten dağıtıldığından ve tamamen lisanslandırıldığından söz edilir. EOL'ye ulaşan veya EOL'yi aşan karşıya yüklenen görüntüler, makul bir iş çabası kapsamında desteklenir. Daha fazla bilgi için bkz. Red Hat Ürün Yaşam Döngüleri.

RHEL yükleme notları

  • Azure, VHDX biçimini desteklemez. Azure yalnızca sabit VHD destekler. Diski VHD biçimine dönüştürmek için Hyper-V Yöneticisi'ni veya cmdlet'ini convert-vhd kullanabilirsiniz. VirtualBox kullanıyorsanız, diski oluştururken varsayılan dinamik olarak ayrılan seçeneğin aksine Sabit boyut'u seçin.
  • Azure, Nesil 1 (BIOS önyükleme) ve Nesil 2 (UEFI önyükleme) sanal makineleri (VM) destekler.
  • VHD için izin verilen en büyük boyut 1.023 GB'tır.
  • Vfat çekirdek modülü çekirdekte etkinleştirilmelidir.
  • Mantıksal Birim Yöneticisi (LVM) desteklenir ve Azure VM'lerindeki işletim sistemi diskinde veya veri disklerinde kullanılabilir. Genel olarak, LVM yerine işletim sistemi diskinde standart bölümler kullanmanızı öneririz. Bu uygulama, özellikle sorun giderme için başka bir özdeş VM'ye bir işletim sistemi diski eklemeniz gerektiğinde, kopyalanan VM'lerle LVM ad çakışmalarını önler. Daha fazla bilgi için LVM ve RAID belgelerine bakın.
  • Evrensel Disk Biçimi (UDF) dosya sistemlerini bağlamak için çekirdek desteği gereklidir. Azure'da ilk önyüklemede, ekli UDF biçimli medya sağlama yapılandırmasını Linux VM'ye geçirir. Azure Linux aracısı, yapılandırmasını okumak ve VM'yi sağlamak için UDF dosya sistemini bağlayabilmelidir. Bu adım olmadan kaynak sağlama başarısız olur.
  • İşletim sistemi diskinde değiştirme bölümü yapılandırmayın. Daha fazla bilgi için aşağıdaki adımları okuyun.
  • Azure'da tüm VHD'lerin 1 MB'a hizalanmış bir sanal boyutu olmalıdır. Ham diskten VHD'ye dönüştürürken, dönüştürmeden önce ham disk boyutunun 1 MB'ın katı olduğundan emin olmanız gerekir. Daha fazla bilgi için aşağıdaki adımları okuyun. Ayrıca bkz. Linux yükleme notları.

Not

Cloud-init >= 21.2, UDF gereksinimini kaldırır. Ancak UDF modülü etkinleştirilmeden sağlanan CD-ROM bağlanamıyor ve özel verilerin uygulanmasını engelliyor. Geçici çözüm, kullanıcı verilerini kullanarak özel veriler uygulamaktır. Özel verilerden farklı olarak kullanıcı verileri şifrelenmez. Daha fazla bilgi için bkz . Kullanıcı veri biçimleri.

  1. Hyper-V Yöneticisi'nde VM'yi seçin.

  2. VM için bir konsol penceresi açmak için Bağlan'ı seçin.

  3. Dosyayı oluşturun veya düzenleyin /etc/sysconfig/network ve aşağıdaki metni ekleyin:

    NETWORKING=yes
    HOSTNAME=localhost.localdomain
    
  4. Dosyayı oluşturun veya düzenleyin /etc/sysconfig/network-scripts/ifcfg-eth0 ve aşağıdaki metni ekleyin:

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

    Not

    Hızlandırılmış Ağ'ı kullandığınızda, sağlanan yapay arabirimin udev kuralı kullanılarak yönetilmeyen şekilde yapılandırılması gerekir. Bu eylem, NetworkManager'in birincil arabirimle aynı IP'yi atamasını engeller.

    Uygulamak için:

    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. Ağ hizmetinin önyükleme sırasında başlatıldığından emin olun.

    sudo systemctl enable network
    
  6. RHEL deposundan paketlerin yüklenmesini etkinleştirmek için Red Hat aboneliğinizi kaydedin:

    sudo subscription-manager register --auto-attach --username=XXX --password=XXX
    
  7. Grub yapılandırmanızdaki çekirdek önyükleme satırını, Azure için daha fazla çekirdek parametresi içerecek şekilde değiştirin. Bu değişikliği yapmak için bir metin düzenleyicisinde açın /etc/default/grub ve parametresini GRUB_CMDLINE_LINUX düzenleyin. Örneğin:

    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"
    

    Bu değişiklikler NIC'ler için yeni adlandırma kuralını kapatır, tüm konsol iletilerinin ilk seri bağlantı noktasına gönderilmesini sağlar ve hata ayıklama sorunlarında Aure desteğine yardımcı olabilecek konsolla etkileşimi etkinleştirir.

    rhgb quiet crashkernel=auto
    

    Grafik ve sessiz önyüklemeler, tüm günlüklerin seri bağlantı noktasına gönderilmesini istediğiniz bulut ortamında kullanışlı değildir. İsterseniz seçeneği yapılandırılmış olarak bırakabilirsiniz crashkernel . Bu parametre, VM'deki kullanılabilir bellek miktarını 128 MB veya daha fazla azaltır; bu da daha küçük VM boyutları için sorun olabilir.

  8. düzenlemeyi /etc/default/grubtamamladıktan sonra grub yapılandırmasını yeniden derlemek için aşağıdaki komutu çalıştırın:

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

    Not

    UEFI özellikli bir VM'yi karşıya yüklüyorsanız, grub'u güncelleştirmek için kullanılacak komut grub2-mkconfig -o /boot/efi/EFI/redhat/grub.cfg şeklindedir.

  9. SSH sunucusunun yüklü olduğundan ve önyükleme zamanında başlatacak şekilde yapılandırıldığından emin olun; bu genellikle varsayılandır. Aşağıdaki satırı içerecek şekilde değiştirin /etc/ssh/sshd_config :

    ClientAliveInterval 180
    
  10. WALinuxAgent paketi, WALinuxAgent-<version>Extras deposundan kullanılabilir.

    sudo subscription-manager repos --enable=rhel-7-server-extras-rpms
    
  11. Azure Linux aracısını, cloud-initve diğer gerekli yardımcı programları yükleyin:

    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. Sağlamayı işlemek için yapılandırın cloud-init :

    1. waagent cloud-init için yapılandırın.

      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
      

      Not

      Belirli bir VM'yi geçiriyorsanız ve genelleştirilmiş bir görüntü oluşturmak istemiyorsanız Provisioning.Agent=disabled yapılandırmasını /etc/waagent.conf üzerinde ayarlayın.

    2. Bağlamaları yapılandırma:

      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 veri kaynağını yapılandırın:

      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. Yapılandırıldıysa, mevcut takas dosyasını kaldırın:

      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. Günlüğü yapılandırma 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. Değiştirme yapılandırması:

    • İşletim sistemi diskinde değiştirme alanı oluşturmayın.

      Daha önce Azure Linux aracısı, VM Azure'da sağlandıktan sonra VM'ye bağlı yerel kaynak diskinde değiştirme alanını otomatik olarak yapılandırmak için kullanılıyordu, cloud-init şimdi bu eylemi işleyecek. Takas dosyasını oluşturmak için kaynak diski biçimlendirmek için Linux aracısını kullanmamalısınız. aşağıdaki parametreleri /etc/waagent.conf uygun şekilde değiştirin:

      ResourceDisk.Format=n
      ResourceDisk.EnableSwap=n
      
    • Değiştirme işlemini bağlamak, biçimlendirmek ve oluşturmak istiyorsanız şunları yapabilirsiniz:

      • Özel veriler aracılığıyla her VM oluşturduğunuzda bu kodu yapılandırma olarak cloud-init geçirin. Bu yöntemi öneririz.

      • VM her oluşturulduğunda bu adımı gerçekleştiren bir cloud-init yönergesi imaja gömülü olarak kullanın.

        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. Sağlama sorunlarını gidermeye yardımcı olmak için telemetriyi yapılandırın 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. Aboneliğin kaydını silmek istiyorsanız aşağıdaki komutu çalıştırın:

    
    sudo subscription-manager unregister
    
  16. VM'yi devre dışı bırakın ve Azure'da sağlamak için hazırlayın.

    Dikkat

    Belirli bir VM'yi taşıyorsanız ve genelleştirilmiş bir görüntü oluşturmak istemiyorsanız provizyondan kaldırma adımını atlayın. komutu waagent -force -deprovision+user çalıştırılırsa kaynak makine kullanılamaz duruma gelir. Bu adım yalnızca genelleştirilmiş bir görüntü oluşturmaya yöneliktir.

    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. Hyper-V Yöneticisi'nde Eylem>Kapat'ı seçin. Linux VHD'niz artık Azure'a yüklenmeye hazırdır.