Azure'da CentOS tabanlı bir sanal makine hazırlama

Uygulama: ✔️ Linux VM'leri ✔️ Esnek ölçek kümeleri

CentOS tabanlı Linux işletim sistemi içeren bir Azure sanal sabit diski (VHD) oluşturma ve karşıya yükleme hakkında bilgi edinin.

Önkoşullar

Bu makalede, bir CentOS (veya benzer türevi) Linux işletim sistemini sanal sabit diske zaten yüklemişsinizdir. .vhd dosyaları oluşturmak için birden çok araç vardır, örneğin Hyper-V gibi bir sanallaştırma çözümü. Yönergeler için bkz. Hyper-V Rolünü Yükleme ve Sanal Makine Yapılandırma.

CentOS yükleme notları

  • Linux'u Azure'a hazırlama hakkında daha fazla ipucu için lütfen genel Linux Yükleme Notları'na bakın.
  • VHDX biçimi Azure'da desteklenmiyor, yalnızca VHD düzeltildi. Hyper-V Yöneticisi'ni veya convert-vhd cmdlet'ini kullanarak diski VHD biçimine dönüştürebilirsiniz. VirtualBox kullanıyorsanız, disk oluşturulurken dinamik olarak ayrılan varsayılan boyut yerine Sabit boyut'a tıklayın.
  • Linux sistemini yüklerken LVM yerine standart bölümler (genellikle birçok yükleme için varsayılandır) kullanılması önerilir. Bu, özellikle sorun giderme için aynı VM'ye aynı vm'ye bir işletim sistemi diski ekli olması gerekirse, kopyalanan VM'lerle LVM adı çakışmalarını önler. LvM veya RAID, veri diskleri üzerinde kullanılabilir.
  • UDF dosya sistemlerini bağlama için çekirdek desteği gereklidir. Azure'da ilk önyüklemede sağlama yapılandırması, konuk tarafından eklenen UDF biçimli medya aracılığıyla Linux VM'ye geçirildi. Azure Linux aracısı, yapılandırmasını okumak ve VM'yi sağlarken UDF dosya sistemini bağlaması gerekir.
  • 2.6.37'nin altındaki Linux çekirdek sürümleri, daha büyük VM boyutlarına sahip Hyper-V'de NUMA'yı desteklemez. Bu sorun öncelikli olarak yukarı akış Red Hat 2.6.32 çekirdeğini kullanan eski dağıtımları etkiler ve RHEL 6.6'da (kernel-2.6.32-504) düzeltildi. 2.6.37'den eski özel çekirdekleri veya 2.6.32-504'den eski RHEL tabanlı çekirdekleri çalıştıran sistemlerin grub.conf'te çekirdek komut satırı üzerinde önyükleme parametresini ayarlaması numa=off gerekir. Daha fazla bilgi için bkz. Red Hat KB 436883.
  • Işletim sistemi disk üzerinde değiştirme bölümü yapılandırmazsanız. Bu konuda daha fazla bilgiyi aşağıdaki adımlarda bulabilirsiniz.
  • Azure'da tüm VHD'lerin 1 MB ile hizalanmış bir sanal boyutu olması gerekir. Ham diskten VHD'ye dönüştürürken, dönüştürmeden önce ham disk boyutunun 1 MB'ın katları olduğundan emin olmak gerekir. Daha fazla bilgi için bkz. Linux Yükleme Notları.

CentOS 6.x

  1. Hyper-V Yöneticisi'nde sanal makineyi seçin.

  2. Sanal Bağlan için bir konsol penceresi açmak için Sanal Makine'ye tıklayın.

  3. CentOS 6'da NetworkManager, Azure Linux aracısına müdahale ediyor olabilir. Aşağıdaki komutu çalıştırarak bu paketi kaldırın:

    sudo rpm -e --nodeps NetworkManager
    
  4. Dosyayı oluşturun veya düzenleyin /etc/sysconfig/network ve aşağıdaki metni ekleyin:

    NETWORKING=yes
    HOSTNAME=localhost.localdomain
    
  5. 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
    
  6. Ethernet arabirimleri için statik kurallar oluşturmamak için udev kurallarını değiştirme. Bu kurallar, bir sanal makineyi hyper-V'de Microsoft Azure sorunlara neden olabilir:

    sudo ln -s /dev/null /etc/udev/rules.d/75-persistent-net-generator.rules
    sudo rm -f /etc/udev/rules.d/70-persistent-net.rules
    
  7. Aşağıdaki komutu çalıştırarak ağ hizmetinin önyükleme zamanında başlayacağını emin olun:

    sudo chkconfig network on
    
  8. Azure veri merkezlerinde barındırılan OpenLogic yansıtmalarını kullanmak için dosyayı aşağıdaki /etc/yum.repos.d/CentOS-Base.repo depolarla değiştirin. Bu, Azure Linux aracısı gibi ek paketler içeren [openlogic] deposunu da ekler:

    [openlogic]
    name=CentOS-$releasever - openlogic packages for $basearch
    baseurl=http://olcentgbl.trafficmanager.net/openlogic/$releasever/openlogic/$basearch/
    enabled=1
    gpgcheck=0
    
    [base]
    name=CentOS-$releasever - Base
    #mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os&infra=$infra
    baseurl=http://olcentgbl.trafficmanager.net/centos/$releasever/os/$basearch/
    gpgcheck=1
    gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
    
    #released updates
    [updates]
    name=CentOS-$releasever - Updates
    #mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=updates&infra=$infra
    baseurl=http://olcentgbl.trafficmanager.net/centos/$releasever/updates/$basearch/
    gpgcheck=1
    gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
    
    #additional packages that may be useful
    [extras]
    name=CentOS-$releasever - Extras
    #mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=extras&infra=$infra
    baseurl=http://olcentgbl.trafficmanager.net/centos/$releasever/extras/$basearch/
    gpgcheck=1
    gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
    
    #additional packages that extend functionality of existing packages
    [centosplus]
    name=CentOS-$releasever - Plus
    #mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=centosplus&infra=$infra
    baseurl=http://olcentgbl.trafficmanager.net/centos/$releasever/centosplus/$basearch/
    gpgcheck=1
    enabled=0
    gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
    
    #contrib - packages by Centos Users
    [contrib]
    name=CentOS-$releasever - Contrib
    #mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=contrib&infra=$infra
    baseurl=http://olcentgbl.trafficmanager.net/centos/$releasever/contrib/$basearch/
    gpgcheck=1
    enabled=0
    gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
    

    Not

    Bu kılavuzun geri kalanında en azından aşağıdaki Azure Linux aracılarını [openlogic] yüklemek için kullanılacak olan bir depolamayı kullanmakta olduğunu varsayın.

  9. /etc/yum.conf'ye aşağıdaki satırı ekleyin:

    http_caching=packages
    
  10. Geçerli yum meta verilerini temizlemek ve sistemi en son paketlerle güncelleştirmek için aşağıdaki komutu çalıştırın:

    yum clean all
    

    CentOS'un eski bir sürümü için görüntü oluşturmadıkça, tüm paketleri en son sürüme güncelleştirmeniz önerilir:

    sudo yum -y update
    

    Bu komut çalıştır başlatıldıktan sonra yeniden başlatma gerekebilir.

  11. (İsteğe bağlı) Linux Integration Services (LIS) için sürücüleri yükleyin.

    Önemli

    Bu adım CentOS 6.3 ve önceki sürümler için gereklidir ve sonraki sürümler için isteğe bağlıdır.

    sudo rpm -e hypervkvpd  ## (may return error if not installed, that's OK)
    sudo yum install microsoft-hyper-v
    

    Alternatif olarak, VM'nize RPM yüklemek için LIS indirme sayfasındaki el ile yükleme yönergelerini takip edebilirsiniz.

  12. Azure Linux Aracı'sı ve bağımlılıklarını yükleyin. Waagent hizmetini başlatma ve etkinleştirme:

    sudo yum install python-pyasn1 WALinuxAgent
    sudo service waagent start
    sudo chkconfig waagent on
    

    WALinuxAgent paketi, 3. adımda açıklandığı gibi henüz kaldırılmış olmayan NetworkManager ve NetworkManager-packages paketlerini kaldırır.

  13. Grub yapılandırmanız içinde çekirdek önyükleme hattını Azure için ek çekirdek parametreleri içerecek şekilde değiştirme. Bunu yapmak için bir /boot/grub/menu.lst metin düzenleyicisinde açın ve varsayılan çekirdeğin aşağıdaki parametreleri içerir:

    console=ttyS0 earlyprintk=ttyS0 rootdelay=300
    

    Bu, tüm konsol iletilerinin ilk seri bağlantı noktasına gönderildiğini de sağlar ve bu da hata ayıklama Azure desteği yardımcı olabilir.

    Yukarıdakilere ek olarak, aşağıdaki parametreleri kaldırmanız önerilir:

    rhgb quiet crashkernel=auto
    

    Grafik ve sessiz önyükleme, tüm günlüklerin seri bağlantı noktasına gönderildiği bir bulut ortamında kullanışlı değildir. seçenek istenirse yalıtilebilir, ancak bu parametrenin VM'de kullanılabilir bellek miktarını 128 MB veya daha fazla azaltacak ve bu da daha küçük VM boyutlarında sorunlu crashkernel olabilir.

    Önemli

    CentOS 6.5 ve önceki sürümleri de çekirdek parametresini numa=off ayarlamalı. Bkz. Red Hat KB 436883..

  14. SSH sunucusunun yüklü olduğundan ve önyükleme zamanında başlatacak şekilde yapılandırıldığından emin olun. Bu genellikle varsayılan değerdir.

  15. Işletim sistemi diskini değiştirmeyin.

    Azure Linux Aracısı, Azure'da sağlama sonrasında VM'ye bağlı yerel kaynak diskini kullanarak değiştirme alanını otomatik olarak yapılandırabilirsiniz. Yerel kaynak diskin geçici bir disk olduğunu ve vm'nin verimini silince boşalt olabileceğini unutmayın. Azure Linux Aracı'sı yükledikten sonra (önceki adıma bakın), 'de aşağıdaki /etc/waagent.conf parametreleri uygun şekilde değiştirme:

    ResourceDisk.Format=y
    ResourceDisk.Filesystem=ext4
    ResourceDisk.MountPoint=/mnt/resource
    ResourceDisk.EnableSwap=y
    ResourceDisk.SwapSizeMB=2048 ## NOTE: set this to whatever you need it to be.
    
  16. Sanal makinenin sağlamasını devre dışı etmek ve Azure'da sağlama için hazırlamak için aşağıdaki komutları çalıştırın:

    sudo waagent -force -deprovision+user
    export HISTSIZE=0
    logout
    
  17. Hyper-V > Kapat'a tıklayın. Linux VHD'niz artık Azure'a yüklenmeye hazırdır.

CentOS 7.0+

CentOS 7'de (ve benzer türevlerde) değişiklikler

Azure için CentOS 7 sanal makinesi hazırlamak CentOS 6'ya çok benzer, ancak bazı önemli farklar vardır:

  • NetworkManager paketi artık Azure Linux aracısı ile çakışmaz. Bu paket varsayılan olarak yüklenir ve kaldırılmasını önerilmez.
  • GRUB2 artık varsayılan önyükleme yükleyicisi olarak kullanıldığından çekirdek parametrelerini düzenleme yordamı değişmiştir (aşağıya bakın).
  • XFS artık varsayılan dosya sistemidir. İsterseniz ext4 dosya sistemi de kullanılabilir.

Yapılandırma Adımları

  1. Hyper-V Yöneticisi'nde sanal makineyi seçin.

  2. Sanal Bağlan için bir konsol penceresi açmak için Sanal Makine'ye tıklayın.

  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
    NM_CONTROLLED=no
    
  5. Ethernet arabirimleri için statik kurallar oluşturmamak için udev kurallarını değiştirme. Bu kurallar, bir sanal makineyi hyper-V'de Microsoft Azure sorunlara neden olabilir:

    sudo ln -s /dev/null /etc/udev/rules.d/75-persistent-net-generator.rules
    
  6. Azure veri merkezlerinde barındırılan OpenLogic yansıtmalarını kullanmak için dosyayı aşağıdaki /etc/yum.repos.d/CentOS-Base.repo depolarla değiştirin. Bu, Azure Linux aracısı için paketleri içeren [openlogic] deposunu da ekler:

    [openlogic]
    name=CentOS-$releasever - openlogic packages for $basearch
    baseurl=http://olcentgbl.trafficmanager.net/openlogic/$releasever/openlogic/$basearch/
    enabled=1
    gpgcheck=0
    
    [base]
    name=CentOS-$releasever - Base
    #mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os&infra=$infra
    baseurl=http://olcentgbl.trafficmanager.net/centos/$releasever/os/$basearch/
    gpgcheck=1
    gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
    
    #released updates
    [updates]
    name=CentOS-$releasever - Updates
    #mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=updates&infra=$infra
    baseurl=http://olcentgbl.trafficmanager.net/centos/$releasever/updates/$basearch/
    gpgcheck=1
    gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
    
    #additional packages that may be useful
    [extras]
    name=CentOS-$releasever - Extras
    #mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=extras&infra=$infra
    baseurl=http://olcentgbl.trafficmanager.net/centos/$releasever/extras/$basearch/
    gpgcheck=1
    gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
    
    #additional packages that extend functionality of existing packages
    [centosplus]
    name=CentOS-$releasever - Plus
    #mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=centosplus&infra=$infra
    baseurl=http://olcentgbl.trafficmanager.net/centos/$releasever/centosplus/$basearch/
    gpgcheck=1
    enabled=0
    gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
    

    Not

    Bu kılavuzun geri kalanında en azından aşağıdaki Azure Linux aracılarını [openlogic] yüklemek için kullanılacak olan bir depolamayı kullanmakta olduğunu varsayın.

  7. Geçerli yum meta verilerini temizlemek ve güncelleştirmeleri yüklemek için aşağıdaki komutu çalıştırın:

    sudo yum clean all
    

    CentOS'un eski bir sürümü için görüntü oluşturmadıkça, tüm paketleri en son sürüme güncelleştirmeniz önerilir:

    sudo yum -y update
    

    Bu komutu çalıştırdikten sonra yeniden başlatma gerekebilir.

  8. Grub yapılandırmanız içinde çekirdek önyükleme hattını Azure için ek çekirdek parametreleri içerecek şekilde değiştirme. Bunu yapmak için bir /etc/default/grub metin düzenleyicisinde açın ve GRUB_CMDLINE_LINUX parametresini düzenleyin, örneğin:

    GRUB_CMDLINE_LINUX="rootdelay=300 console=ttyS0 earlyprintk=ttyS0 net.ifnames=0"
    

    Bu, tüm konsol iletilerinin ilk seri bağlantı noktasına gönderildiğini de sağlar ve bu da hata ayıklama Azure desteği yardımcı olabilir. Ayrıca NIC'ler için yeni CentOS 7 adlandırma kuralları da kapatıyor. Yukarıdakilere ek olarak, aşağıdaki parametreleri kaldırmanız önerilir:

    rhgb quiet crashkernel=auto
    

    Grafik ve sessiz önyükleme, tüm günlüklerin seri bağlantı noktasına gönderildiği bir bulut ortamında kullanışlı değildir. seçenek istenirse yalıtilebilir, ancak bu parametrenin VM'de kullanılabilir bellek miktarını 128 MB veya daha fazla azaltacak ve bu da daha küçük VM boyutlarında sorunlu crashkernel olabilir.

  9. Yukarıdakilere göre düzenlemeyi /etc/default/grub tamamlayın, grub yapılandırmasını yeniden inşa etmek için aşağıdaki komutu çalıştırın:

    sudo grub2-mkconfig -o /boot/grub2/grub.cfg
    
  10. VMware, VirtualBox veya KVM'den görüntü oluşturma: Hyper-V sürücülerinin initramfs'ye dahil olduğundan emin olun:

    Düzenle, /etc/dracut.conf içerik ekle:

    add_drivers+=" hv_vmbus hv_netvsc hv_storvsc "
    

    Initramfs'yi yeniden oluşturma:

    sudo dracut -f -v
    
  11. Azure Vm Uzantıları için Azure Linux Aracısı ve bağımlılıklarını yükleyin:

    sudo yum install python-pyasn1 WALinuxAgent
    sudo systemctl enable waagent
    
  12. Sağlamayı işlemek için cloud-init'i yükleme

    yum install -y cloud-init cloud-utils-growpart gdisk hyperv-daemons
    
    # Configure waagent for cloud-init
    sed -i 's/Provisioning.UseCloudInit=n/Provisioning.UseCloudInit=y/g' /etc/waagent.conf
    sed -i 's/Provisioning.Enabled=y/Provisioning.Enabled=n/g' /etc/waagent.conf
    
    
    echo "Adding mounts and disk_setup to init stage"
    sed -i '/ - mounts/d' /etc/cloud/cloud.cfg
    sed -i '/ - disk_setup/d' /etc/cloud/cloud.cfg
    sed -i '/cloud_init_modules/a\\ - mounts' /etc/cloud/cloud.cfg
    sed -i '/cloud_init_modules/a\\ - disk_setup' /etc/cloud/cloud.cfg
    
    echo "Allow only Azure datasource, disable fetching network setting via IMDS"
    cat > /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
    
    echo "Add console log file"
    cat >> /etc/cloud/cloud.cfg.d/05_logging.cfg <<EOF
    
    # 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 diskte değiştirme alanı oluşturma.

    Daha önce Azure Linux Aracısı, sanal makine Azure'da sağlandıktan sonra sanal makineye bağlı yerel kaynak diskini kullanarak değiştirme alanını otomatik olarak yapılandırdı. Bu işlem artık cloud-init tarafından işlemektedir. Kaynak diskini biçimlendirmek için Linux Aracısı'nın takas dosyasını oluşturması ve aşağıdaki parametreleri uygun şekilde /etc/waagent.conf değiştirmesi gerekir:

    sed -i 's/ResourceDisk.Format=y/ResourceDisk.Format=n/g' /etc/waagent.conf
    sed -i 's/ResourceDisk.EnableSwap=y/ResourceDisk.EnableSwap=n/g' /etc/waagent.conf
    

    Bağlama, biçimlendirme ve değiştirme işlemi oluşturmak için şunları da oluşturabilirsiniz:

    • Bunu her VM oluşturmada cloud-init yapılandırması olarak geçiş

    • Görüntüde oluşturulan ve VM her oluşturulduğunda bunu yapacak bir cloud-init yönergesi kullanın:

      cat > /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"]
        - ["ephemeral0.2", "none", "swap", "sw", "0", "0"]
      EOF
      
  14. Sanal makinenin sağlamasını devre dışı etmek ve Azure'da sağlama için hazırlamak için aşağıdaki komutları çalıştırın:

    # Note: if you are migrating a specific virtual machine and do not wish to create a generalized image,
    # skip the deprovision step
    # sudo rm -rf /var/lib/waagent/
    # sudo rm -f /var/log/waagent.log
    
    # waagent -force -deprovision+user
    # rm -f ~/.bash_history
    
    
    # export HISTSIZE=0
    
    # logout
    
  15. Hyper-V > Kapat'a tıklayın. Linux VHD'niz artık Azure'a yüklenmeye hazırdır.

Sonraki adımlar

Artık CentOS Linux sanal sabit diskini kullanarak Azure'da yeni sanal makineler oluşturabilirsiniz. .vhd dosyasını Azure'a ilk kez yük ediyorsanız bkz. Özel diskten Linux VM oluşturma.