Menyiapkan komputer virtual berbasis CentOS untuk Azure
Perhatian
Artikel ini mereferensikan CentOS, distribusi Linux yang mendekati status End Of Life (EOL). Harap pertimbangkan penggunaan dan rencanakan 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 Azure (VHD) yang berisi berbasis CentOS sistem operasi Linux.
Prasyarat
Artikel ini mengasumsikan bahwa Anda telah menginstal sistem operasi Linux CentOS (atau turunan serupa) ke hard disk virtual. Beberapa alat ada untuk membuat file .vhd, misalnya solusi virtualisasi seperti Hyper-V. Untuk petunjuk penggunaan, lihatPasang Peran Hyper-V dan konfigurasikan Komputer Virtual.
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 menggunakan Hyper-V Manager atau cmdlet convert-vhd. Jika Anda menggunakan VirtualBox, ini berarti memilih Ukuran tetap dibandingkan dengan default yang dialokasikan secara dinamis saat membuat disk.
- Modul kernel vfat harus diaktifkan di kernel
- Saat menginstal sistem Linux, kami sarankan Anda menggunakan partisi standar daripada LVM (seringkali default untuk banyak penginstalan). Ini menghindari konflik nama LVM dengan VM kloning, terutama jika disk OS perlu dilampirkan ke VM lain yang identik untuk pemecahan masalah. LVM atau RAID dapat digunakan pada disk data jika diinginkan.
- Dukungan kernel untuk memasang sistem file UDF diperlukan. Pada boot pertama di Azure konfigurasi penyediaan diteruskan ke Linux VM dengan menggunakan media berformat UDF yang melekat pada 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 berdampak pada 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 2.6.37 atau kernel berbasis 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 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. Namun, tanpa modul udf diaktifkan, cdrom tidak akan dipasang selama provisi, mencegah data kustom diterapkan. Solusi untuk ini adalah menerapkan data kustom menggunakan data pengguna. Namun, tidak seperti data kustom, data pengguna tidak dienkripsi. https://cloudinit.readthedocs.io/en/latest/topics/format.html
CentOS 6.x
Penting
Harap dicatat bahwa CentOS 6 telah mencapai End Of Life (EOL) dan tidak lagi didukung oleh komunitas CentOS. Ini berarti bahwa tidak ada pembaruan lebih lanjut atau patch keamanan yang akan dirilis untuk versi ini, sehingga rentan terhadap potensi risiko keamanan. Sebaiknya tingkatkan ke versi terbaru CentOS untuk memastikan keamanan dan stabilitas sistem Anda. Silakan berkonsultasi dengan departemen IT atau administrator sistem Anda untuk bantuan lebih lanjut.
Di Hyper-V Manager, pilih komputer virtual.
Klik Sambungkan untuk membuka jendela konsol untuk komputer virtual.
Di CentOS 6, NetworkManager dapat mengganggu agen Azure Linux. Hapus instalan paket ini dengan menjalankan perintah berikut:
sudo rpm -e --nodeps NetworkManager
Buat atau edit file
/etc/sysconfig/network
dan tambahkan teks berikut:NETWORKING=yes HOSTNAME=localhost.localdomain
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
Ubah aturan udev untuk menghindari pembuatan aturan statis untuk antarmuka Ethernet. Aturan ini dapat menyebabkan masalah saat mengkloning komputer virtual di Microsoft 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
Pastikan layanan jaringan dimulai pada waktu boot dengan menjalankan perintah berikut:
sudo chkconfig network on
Jika Anda ingin menggunakan cermin OpenLogic yang dihosting di dalam pusat data Azure, maka ganti file
/etc/yum.repos.d/CentOS-Base.repo
dengan repositori berikut. Ini juga akan menambahkan repositori [openlogic] yang mencakup paket tambahan seperti 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-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
Catatan
Sisa panduan ini akan mengasumsikan Anda menggunakan setidaknya
[openlogic]
repositori, yang akan digunakan untuk menginstal agen Linux Azure di bawah ini.Tambahkan baris berikut ini ke /etc/ntp.conf:
http_caching=packages
Jalankan perintah berikut untuk menghapus metadata yum saat ini dan perbarui sistem dengan paket terbaru:
sudo yum clean all
Kecuali Anda membuat gambar untuk versi CentOS yang lebih lama, sebaiknya perbarui semua paket ke yang terbaru:
sudo yum -y update
Reboot mungkin diperlukan setelah menjalankan perintah ini.
(Opsional) Instal driver untuk Layanan Integrasi Linux (LIS).
Penting
Langkah ini diperlukan untuk CentOS 6.3 dan versi lebih lama, dan opsional untuk rilis yang akan datang.
sudo rpm -e hypervkvpd ## (may return 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.
Instal Agen Azure Linux dan dependensi. Mulai dan aktifkan layanan waagent:
sudo yum install python-pyasn1 WALinuxAgent sudo service waagent start sudo chkconfig waagent on
Paket WALinuxAgent menghapus paket NetworkManager dan NetworkManager-gnome jika belum dihapus seperti yang dijelaskan pada langkah 3.
Ubah baris boot kernel dalam konfigurasi grub Anda untuk menyertakan parameter kernel tambahan untuk Azure. Untuk melakukan ini, buka
/boot/grub/menu.lst
di editor teks dan pastikan bahwa kernel default menyertakan parameter berikut:console=ttyS0 earlyprintk=ttyS0 rootdelay=300
Ini akan memastikan semua pesan konsol dikirim ke port serial pertama, yang dapat membantu dukungan Azure dengan masalah penelusuran kesalahan.
Selain hal di atas, sebaiknya hapus parameter berikut:
rhgb quiet crashkernel=auto
Grafis dan
quiet boot
tidak berguna di lingkungan cloud tempat kita ingin semua log dikirim ke port serial. Opsicrashkernel
ini dapat dibiarkan dikonfigurasi jika diinginkan, tetapi perhatikan bahwa parameter ini akan mengurangi jumlah memori yang tersedia di VM sebesar 128 MB atau lebih, yang mungkin bermasalah pada ukuran VM yang lebih kecil.Penting
CentOS 6.5 dan versi yang lebih lama juga harus mengatur parameter kernel
numa=off
. Lihat Red Hat KB 436883.Pastikan server SSH diinstal dan dikonfigurasi untuk memulai pada saat boot. Biasanya hal ini merupakan penyebabnya.
Jangan membuat ruang swap pada disk OS.
Azure Linux Agent dapat secara otomatis mengonfigurasi ruang swap menggunakan disk sumber daya lokal yang dilampirkan ke VM setelah penyediaan di Azure. Disk sumber daya lokal adalah disk sementara dan mungkin dikosongkan ketika VM dideprovisi. Setelah menginstal Azure Linux Agent (lihat langkah sebelumnya), ubah parameter berikut di
/etc/waagent.conf
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.
Jalankan perintah berikut untuk membatalkan penyediaan komputer virtual dan persiapkan komputer virtual untuk disediakan di Azure:
sudo waagent -force -deprovision+user sudo export HISTSIZE=0
Catatan
Jika Anda memigrasikan komputer virtual yang spesifik dan tidak ingin membuat gambar umum, lewati langkah pembatalan penyediaan ini.
- Klik Tindakan -> Matikan di Hyper-V Manager. VHD Linux Anda sekarang siap untuk diunggah ke Azure.
CentOS 7.0+
Perubahan di CentOS 7 (dan turunan serupa)
Menyiapkan komputer virtual CentOS 7 untuk Azure mirip dengan CentOS 6, namun ada beberapa perbedaan signifikan yang perlu diperhatikan:
Paket NetworkManager tidak lagi bertentangan dengan agen Azure Linux. Paket ini diinstal secara default, dan kami sarankan tidak dihapus.
GRUB2 sekarang digunakan sebagai bootloader default, sehingga prosedur untuk mengedit parameter kernel telah berubah (lihat di bawah).
XFS sekarang menjadi sistem file default. Sistem file ext4 masih dapat digunakan jika diinginkan.
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
Di Hyper-V Manager, pilih komputer virtual.
Klik Sambungkan untuk membuka jendela konsol untuk komputer virtual.
Buat atau edit file
/etc/sysconfig/network
dan tambahkan teks berikut:NETWORKING=yes HOSTNAME=localhost.localdomain
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
Ubah aturan udev untuk menghindari pembuatan aturan statis untuk antarmuka Ethernet. Aturan ini dapat menyebabkan masalah saat mengkloning komputer virtual di Microsoft Azure atau Hyper-V:
sudo ln -s /dev/null /etc/udev/rules.d/75-persistent-net-generator.rules
Jika Anda ingin menggunakan cermin OpenLogic yang dihosting di dalam pusat data Azure, maka ganti file
/etc/yum.repos.d/CentOS-Base.repo
dengan repositori berikut. Upaya ini juga akan menambahkan repositori [openlogic] yang menyertakan paket tambahan seperti 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 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
Catatan
Sisa panduan ini akan mengasumsikan Anda menggunakan setidaknya
[openlogic]
repositori, yang akan digunakan untuk menginstal agen Linux Azure di bawah ini.Jalankan perintah berikut untuk menghapus metadata yum saat ini dan instal semua pembaruan:
sudo yum clean all
Kecuali Anda membuat gambar untuk versi CentOS yang lebih lama, sebaiknya perbarui semua paket ke yang terbaru:
sudo yum -y update
Reboot mungkin diperlukan setelah menjalankan perintah ini.
Ubah baris boot kernel dalam konfigurasi grub Anda untuk menyertakan parameter kernel tambahan untuk Azure. Untuk melakukan ini, buka
/etc/default/grub
di editor teks dan edit parameterGRUB_CMDLINE_LINUX
, misalnya:GRUB_CMDLINE_LINUX="rootdelay=300 console=ttyS0 earlyprintk=ttyS0 net.ifnames=0"
Ini akan memastikan 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 NIC. Selain hal di atas, sebaiknya hapus parameter berikut:
rhgb quiet crashkernel=auto
Boot grafis dan tenang tidak berguna di lingkungan cloud di mana kita ingin semua log dikirim ke port serial. Opsi
crashkernel
ini dapat dibiarkan dikonfigurasi jika diinginkan, tetapi perhatikan bahwa parameter ini akan mengurangi jumlah memori yang tersedia di VM sebesar 128 MB atau lebih, yang mungkin bermasalah pada ukuran VM yang lebih kecil.Setelah Selesai mengedit
/etc/default/grub
per di atas, jalankan perintah berikut untuk membangun kembali konfigurasi grub:sudo grub2-mkconfig -o /boot/grub2/grub.cfg
Catatan
Jika mengunggah komputer virtual yang mengaktifkan 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 akan gagal.
Pastikan modul 'udf' diaktifkan. Menghapus/menonaktifkannya akan menyebabkan kegagalan provisi/boot. (_Cloud-init >= 21.2 menghapus persyaratan udf. Baca bagian atas dokumen untuk detail selengkapnya.)
Jika membangun gambar dari VMware, VirtualBox atau KVM: Pastikan driver Hyper-V disertakan dalam initramfs:
Edit
/etc/dracut.conf
, tambahkan konten:add_drivers+=" hv_vmbus hv_netvsc hv_storvsc "
Bangun kembali initramfs:
sudo dracut -f -v
Instal Azure Linux Agent dan dependensi untuk Azure VM Extensions:
sudo yum install python-pyasn1 WALinuxAgent sudo systemctl enable waagent
Instal cloud-init untuk menangani penyediaan
sudo yum install -y cloud-init cloud-utils-growpart gdisk hyperv-daemons
- Mengonfigurasi 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
Konfigurasi swap
Jangan membuat ruang pertukaran pada disk sistem operasi.
Sebelumnya, Azure Linux Agent digunakan untuk mengonfigurasi ruang pertukaran secara otomatis dengan menggunakan disk sumber daya lokal yang dilampirkan ke komputer virtual setelah komputer virtual disediakan di Azure. Namun, upaya ini sekarang ditangani oleh cloud-init, Anda tidak boleh menggunakan Linux Agent untuk memformat disk sumber daya, membuat file pertukaran, mengubah parameter berikut di
/etc/waagent.conf
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
Jika Anda ingin memasang, memformat, dan membuat pertukaran, Anda dapat:
Meneruskannya sebagai konfigurasi cloud-init setiap kali Anda membuat komputer virtual
Menggunakan direktif cloud-init yang dimasukkan ke dalam gambar yang akan melakukan hal ini setiap kali komputer virtual 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
Jalankan perintah berikut untuk membatalkan penyediaan komputer virtual dan persiapkan komputer virtual untuk disediakan di Azure:
Catatan
Jika Anda memigrasikan komputer virtual 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
Klik Tindakan -> Matikan di Hyper-V Manager. VHD Linux Anda sekarang siap untuk diunggah ke Azure.
Langkah berikutnya
Anda sekarang siap menggunakan hard disk virtual CentOS Linux Anda untuk membuat komputer virtual baru di Azure. Jika ini pertama kalinya Anda mengunggah file .vhd ke Azure, lihat Buat komputer virtual Linux dari disk kustom.