Bagikan melalui


Menyiapkan komputer virtual berbasis CentOS untuk Azure

Perhatian

Artikel ini mereferensikan CentOS, distribusi Linux yang mendekati status akhir masa pakai (EOL). Pertimbangkan penggunaan dan rencana yang sesuai. Untuk informasi selengkapnya, lihat panduan akhir masa pakai CentOS.

Berlaku untuk: ✔️ Mesin Virtual Linux ✔️ Set skala fleksibel

Pelajari cara membuat dan mengunggah hard disk virtual (VHD) Azure yang berisi sistem operasi (OS) Linux berbasis CentOS. Untuk informasi selengkapnya, lihat:

Prasyarat

Artikel ini mengasumsikan bahwa Anda telah menginstal OS Linux CentOS (atau turunan serupa) ke VHD. Ada beberapa alat untuk membuat file .vhd. Contohnya adalah solusi virtualisasi seperti Hyper-V. Untuk petunjuknya, lihat Menginstal peran Hyper-V dan mengonfigurasi VM.

Catatan instalasi CentOS

  • Untuk tips selengkapnya tentang menyiapkan Linux untuk Azure, lihat Catatan penginstalan Linux umum.
  • Format VHDX tidak didukung di Azure, hanya VHD tetap. Anda dapat mengonversi disk ke format VHD dengan menggunakan Hyper-V Manager atau convert-vhd cmdlet. Jika Anda menggunakan VirtualBox, Anda memilih Ukuran tetap dibandingkan dengan default yang dialokasikan secara dinamis saat Anda membuat disk.
  • Modul kernel vfat harus diaktifkan di kernel.
  • Saat Anda menginstal sistem Linux, kami sarankan Anda menggunakan partisi standar daripada Logical Volume Manager (LVM), yang sering menjadi default untuk banyak penginstalan. Menggunakan partisi menghindari konflik nama LVM dengan VM kloning, terutama jika disk OS perlu dilampirkan ke VM lain yang identik untuk pemecahan masalah. LVM atau RAID juga dapat digunakan pada disk data.
  • Dukungan kernel untuk memasang sistem file fungsi yang ditentukan pengguna (UDF) diperlukan. Pada boot pertama di Azure, konfigurasi provisi diteruskan ke VM Linux dengan menggunakan media berformat UDF yang dilampirkan ke tamu. Agen Azure Linux atau cloud-init harus memasang sistem file UDF untuk membaca konfigurasinya dan menyediakan VM.
  • Versi kernel Linux di bawah 2.6.37 tidak mendukung NUMA pada Hyper-V dengan ukuran VM yang lebih besar. Masalah ini terutama memengaruhi distribusi yang lebih lama menggunakan kernel Centos 2.6.32 upstram dan diperbaiki di Centos 6.6 (kernel-2.6.32-504). Sistem yang menjalankan kernel kustom yang lebih lama dari kernel berbasis 2.6.37 atau Red Hat Enterprise Linux (RHEL) yang lebih lama dari 2.6.32-504 harus mengatur parameter numa=off boot pada baris perintah kernel di grub.conf. Untuk informasi selengkapnya, lihat Red Hat KB 436883.
  • Jangan mengonfigurasi partisi swap pada disk OS.
  • Semua VHD di Azure harus memiliki ukuran virtual yang selaras dengan 1MB. Saat Anda mengonversi dari disk mentah ke VHD, Anda harus memastikan bahwa ukuran disk mentah adalah kelipatan 1 MB sebelum konversi. Untuk informasi selengkapnya, lihat Catatan penginstalan Linux.

Catatan

Cloud-init >= 21.2 menghapus persyaratan UDF. Tetapi tanpa modul UDF diaktifkan, CD-ROM tidak akan dipasang selama provisi, yang mencegah data kustom diterapkan. Solusi untuk situasi ini adalah menerapkan data kustom dengan menggunakan data pengguna. Tidak seperti data kustom, data pengguna tidak dienkripsi. Untuk informasi selengkapnya, lihat Format data pengguna.

CentOS 6.x

Penting

CentOS 6 telah mencapai EOL-nya dan tidak lagi didukung oleh komunitas CentOS. Tidak ada pembaruan lebih lanjut atau patch keamanan yang akan dirilis untuk versi ini, membiarkannya rentan terhadap potensi risiko keamanan. Kami sangat menyarankan Agar Anda meningkatkan ke versi terbaru CentOS untuk memastikan keamanan dan stabilitas sistem Anda. Untuk bantuan lebih lanjut, konsultasikan dengan departemen TI atau administrator sistem Anda.

  1. Di Hyper-V Manager, pilih VM.

  2. Pilih Sambungkan untuk membuka jendela konsol untuk VM.

  3. Di CentOS 6, NetworkManager dapat mengganggu agen Azure Linux. Hapus instalan paket ini:

    sudo rpm -e --nodeps NetworkManager
    
  4. Buat atau edit file /etc/sysconfig/network dan tambahkan teks berikut:

    NETWORKING=yes
    HOSTNAME=localhost.localdomain
    
  5. Buat atau edit file /etc/sysconfig/network-scripts/ifcfg-eth0 dan tambahkan teks berikut:

    DEVICE=eth0
    ONBOOT=yes
    BOOTPROTO=dhcp
    TYPE=Ethernet
    USERCTL=no
    PEERDNS=yes
    IPV6INIT=no
    
  6. Ubah aturan udev untuk menghindari pembuatan aturan statis untuk antarmuka Ethernet. Aturan ini dapat menyebabkan masalah saat Anda mengkloning VM di Azure atau Hyper-V:

    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. Pastikan bahwa layanan jaringan dimulai pada waktu boot:

    sudo chkconfig network on
    
  8. Jika Anda ingin menggunakan cermin OpenLogic yang dihosting dalam pusat data Azure, ganti /etc/yum.repos.d/CentOS-Base.repo file dengan repositori berikut. Tindakan ini juga menambahkan repositori [openlogic] yang menyertakan paket tambahan, seperti agen Linux Azure:

    [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 might 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
    

    Catatan

    Sisa artikel ini mengasumsikan bahwa Anda menggunakan setidaknya [openlogic] repositori, yang digunakan untuk menginstal agen Linux Azure.

  9. Tambahkan baris berikut ke /etc/yum.conf:

    http_caching=packages
    
  10. Hapus metadata yum saat ini dan perbarui sistem dengan paket terbaru:

    sudo yum clean all
    

    Kecuali Anda membuat gambar untuk versi CentOS yang lebih lama, kami sarankan Anda memperbarui semua paket ke yang terbaru:

    sudo yum -y update
    

    Boot ulang mungkin diperlukan setelah Anda menjalankan perintah ini.

  11. Opsional: Instal driver untuk Linux Integration Services (LIS).

    Penting

    Langkah ini diperlukan untuk CentOS 6.3 dan yang lebih lama dan bersifat opsional untuk rilis selanjutnya.

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

    Atau alternatifnya, Anda dapat mengikuti instruksi instalasi manual di halaman unduhan LIS untuk menginstal RPM ke VM Anda.

  12. Instal agen dan dependensi Azure Linux. Mulai dan aktifkan waagent layanan:

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

    Paket WALinuxAgent menghapus NetworkManager paket dan NetworkManager-gnome jika belum dihapus, seperti yang dijelaskan di langkah 3.

  13. Ubah baris boot kernel di konfigurasi grub Anda untuk menyertakan parameter kernel lainnya untuk Azure. Untuk melakukan langkah ini, buka /boot/grub/menu.lst di editor teks dan pastikan bahwa kernel default menyertakan parameter berikut:

    console=ttyS0 earlyprintk=ttyS0 rootdelay=300
    

    Modifikasi ini juga memastikan bahwa semua pesan konsol dikirim ke port serial pertama, yang dapat membantu dukungan Azure dengan masalah penelusuran kesalahan.

    Kami juga menyarankan agar Anda menghapus parameter berikut:

    rhgb quiet crashkernel=auto
    

    Boot grafis dan tenang tidak berguna di lingkungan cloud tempat Anda ingin semua log dikirim ke port serial. Opsi crashkernel dapat dibiarkan dikonfigurasi jika Anda mau. Tetapi parameter ini mengurangi jumlah memori yang tersedia di VM sebesar 128 MB atau lebih, yang mungkin menjadi masalah untuk ukuran VM yang lebih kecil.

    Penting

    CentOS 6.5 dan versi yang lebih lama juga harus mengatur parameter kernel numa=off. Untuk informasi selengkapnya, lihat Red Hat KB 436883.

  14. Pastikan bahwa server Secure Shell diinstal dan dikonfigurasi untuk memulai pada waktu boot. Pengaturan ini biasanya default.

  15. Jangan membuat ruang swap pada disk OS.

    Agen Linux Azure dapat secara otomatis mengonfigurasi ruang pertukaran dengan menggunakan disk sumber daya lokal yang dilampirkan ke VM setelah VM disediakan di Azure. Disk sumber daya lokal adalah disk sementara dan mungkin dikosongkan ketika VM dideprovisi. Setelah Anda menginstal agen Linux Azure (lihat langkah sebelumnya), ubah parameter /etc/waagent.conf berikut dengan tepat:

    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. Batalkan provisi VM dan siapkan untuk provisi di Azure:

    sudo waagent -force -deprovision+user
    sudo export HISTSIZE=0
    

    Catatan

    Jika Anda memigrasikan VM tertentu dan tidak ingin membuat gambar umum, lewati langkah deprovisi.

  17. Pilih Tindakan>Matikan di Hyper-V Manager. VHD Linux Anda sekarang siap untuk diunggah ke Azure.

CentOS 7.0+

Ikuti langkah-langkah di bagian berikutnya jika Anda menggunakan CentOS 7.0+.

Perubahan di CentOS 7 (dan turunan serupa)

Menyiapkan VM CentOS 7 untuk Azure mirip dengan CentOS 6. Beberapa perbedaan signifikan perlu dicatat:

  • Paket NetworkManager tidak lagi bertentangan dengan agen Azure Linux. Paket ini diinstal secara default dan kami sarankan Anda tidak menghapusnya.

  • GRUB2 sekarang digunakan sebagai bootloader default, sehingga prosedur untuk mengedit parameter kernel telah berubah. (Lihat bagian "Langkah konfigurasi".)

  • XFS sekarang menjadi sistem file default. Sistem file ext4 masih dapat digunakan jika Anda mau.

  • Karena CentOS 8 Stream dan yang lebih baru tidak lagi disertakan network.service secara default, Anda perlu menginstalnya secara manual:

    sudo yum install network-scripts
    sudo systemctl enable network.service
    

Langkah-langkah konfigurasi

  1. Di Hyper-V Manager, pilih VM.

  2. Pilih Sambungkan untuk membuka jendela konsol untuk VM.

  3. Buat atau edit file /etc/sysconfig/network dan tambahkan teks berikut:

    NETWORKING=yes
    HOSTNAME=localhost.localdomain
    
  4. Buat atau edit file /etc/sysconfig/network-scripts/ifcfg-eth0 dan tambahkan teks berikut:

    DEVICE=eth0
    ONBOOT=yes
    BOOTPROTO=dhcp
    TYPE=Ethernet
    USERCTL=no
    PEERDNS=yes
    IPV6INIT=no
    NM_CONTROLLED=no
    
  5. Ubah aturan udev untuk menghindari pembuatan aturan statis untuk antarmuka Ethernet. Aturan ini dapat menyebabkan masalah saat Anda mengkloning VM di Azure atau Hyper-V:

    sudo ln -s /dev/null /etc/udev/rules.d/75-persistent-net-generator.rules
    
  6. Jika Anda ingin menggunakan OpenLogic cermin yang dihosting dalam pusat data Azure, ganti file /etc/yum.repos.d/CentOS-Base.repo dengan repositori berikut. Tindakan ini juga menambahkan repositori [openlogic] yang menyertakan paket untuk agen Azure Linux:

    [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 might 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
    

    Catatan

    Sisa artikel ini mengasumsikan bahwa Anda menggunakan setidaknya [openlogic] repositori, yang digunakan untuk menginstal agen Linux Azure.

  7. Hapus metadata yum saat ini dan instal pembaruan apa pun:

    sudo yum clean all
    

    Kecuali Anda membuat gambar untuk versi CentOS yang lebih lama, kami sarankan Anda memperbarui semua paket ke yang terbaru:

    sudo yum -y update
    

    Boot ulang mungkin diperlukan setelah Anda menjalankan perintah ini.

  8. Ubah baris boot kernel di konfigurasi grub Anda untuk menyertakan parameter kernel lainnya untuk Azure. Untuk melakukan langkah ini, buka /etc/default/grub di editor teks dan edit GRUB_CMDLINE_LINUX parameter . Contohnya:

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

    Modifikasi ini juga memastikan bahwa semua pesan konsol dikirim ke port serial pertama, yang dapat membantu dukungan Azure dengan masalah penelusuran kesalahan. Ini juga mematikan konvensi penamaan CentOS 7 baru untuk kartu antarmuka jaringan. Kami juga menyarankan agar Anda menghapus parameter berikut:

    rhgb quiet crashkernel=auto
    

    Boot grafis dan tenang tidak berguna di lingkungan cloud tempat Anda ingin semua log dikirim ke port serial. Opsi crashkernel dapat dibiarkan dikonfigurasi jika Anda mau. Tetapi parameter ini mengurangi jumlah memori yang tersedia di VM sebesar 128 MB atau lebih, yang mungkin menjadi masalah untuk ukuran VM yang lebih kecil.

  9. Setelah Selesai mengedit /etc/default/grub, bangun kembali konfigurasi grub:

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

    Catatan

    Jika Anda mengunggah VM berkemampuan UEFI, perintah untuk memperbarui grub adalah grub2-mkconfig -o /boot/efi/EFI/centos/grub.cfg. Selain itu, modul kernel vfat harus diaktifkan di kernel. Jika tidak, provisi gagal.

    Pastikan modul udf diaktifkan. Menghapus atau menonaktifkannya akan menyebabkan kegagalan provisi atau boot. (_Cloud-init >= 21.2 menghapus persyaratan udf. Untuk informasi selengkapnya, baca bagian atas dokumen.)

  10. Jika Anda membangun gambar dari VMware, VirtualBox, atau KVM, pastikan bahwa driver Hyper-V disertakan dalam initramf:

    1. Edit /etc/dracut.conf dan tambahkan konten:

      add_drivers+=" hv_vmbus hv_netvsc hv_storvsc "
      
    2. Bangun kembali initramfs:

      sudo dracut -f -v
      
  11. Instal agen Dan dependensi Azure Linux untuk ekstensi Azure VM:

    sudo yum install python-pyasn1 WALinuxAgent
    sudo systemctl enable waagent
    
  12. Instal cloud-init untuk menangani provisi:

    sudo yum install -y cloud-init cloud-utils-growpart gdisk hyperv-daemons
    
    • Konfigurasikan waagent untuk 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
    
    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
    
    sudo echo "Allow only Azure datasource, disable fetching network setting via IMDS"
    sudo cat > /etc/cloud/cloud.cfg.d/91-azure_datasource.cfg <<EOF
    datasource_list: [ Azure ]
    datasource:
        Azure:
            apply_network_config: False
    EOF
    
    if [[ -f /mnt/swapfile ]]; then
    echo Removing swapfile - RHEL uses a swapfile by default
    swapoff /mnt/swapfile
    rm /mnt/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. Konfigurasi pertukaran:

    1. Jangan membuat ruang swap pada disk OS.

      Sebelumnya, agen Azure Linux digunakan untuk mengonfigurasi ruang pertukaran secara otomatis dengan menggunakan disk sumber daya lokal yang dilampirkan ke VM setelah VM disediakan di Azure. Namun, cloud-init sekarang menangani langkah ini. Anda tidak boleh menggunakan agen Linux untuk memformat disk sumber daya untuk membuat file swap. Ubah parameter /etc/waagent.conf berikut dengan tepat:

      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
      
    2. Jika Anda ingin memasang, memformat, dan membuat file swap, Anda dapat:

      • Teruskan perintah ini sebagai cloud-init konfigurasi setiap kali Anda membuat VM.

      • Gunakan direktif yang cloud-init dipanggang ke dalam gambar untuk melakukan langkah ini setiap kali VM dibuat:

        sudo echo 'DefaultEnvironment="CLOUD_CFG=/etc/cloud/cloud.cfg.d/00-azure-swap.cfg"' >> /etc/systemd/system.conf
        sudo 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,nofail,x-systemd.requires=cloud-init.service,x-systemd.device-timeout=2", "0", "0"]
        EOF
        
  14. Jalankan perintah berikut untuk mendeprovisi VM dan menyiapkannya untuk provisi di Azure.

    Catatan

    Jika Anda memigrasikan VM tertentu dan tidak ingin membuat gambar umum, lewati langkah deprovisi.

    sudo rm -f /var/log/waagent.log
    sudo cloud-init clean
    sudo waagent -force -deprovision+user
    sudo rm -f ~/.bash_history
    sudo export HISTSIZE=0
    
  15. Pilih Tindakan>Matikan di Hyper-V Manager. VHD Linux Anda sekarang siap untuk diunggah ke Azure.

Anda sekarang siap untuk menggunakan CentOS Linux VHD Anda untuk membuat VM baru di Azure. Jika ini pertama kalinya Anda mengunggah file .vhd ke Azure, lihat Buat komputer virtual Linux dari disk kustom.