Menyiapkan komputer virtual berbasis CentOS untuk Azure
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 berasumsi bahwa Anda telah memasang sistem operasi Linux CentOS (atau turunannya yang serupa) ke hard disk virtual. Beberapa alat hadir untuk membuat file .vhd, misalnya solusi virtualisasi seperti Hyper-V. Untuk petunjuk penggunaan, lihat Instal Peran Hyper-V dan Konfigurasikan Komputer Virtual.
Catatan instalasi CentOS
- Harap lihat juga Catatan Instalasi Linux Umum untuk tips lebih lanjut tentang persiapan Linux untuk Azure.
- 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.
- Saat menginstal sistem Linux, disarankan untuk menggunakan partisi standar, bukan LVM (seringkali default untuk berbagai instalasi). Hal ini akan menghindari konflik nama LVM dengan VM kloning, terutama jika disk OS perlu dipasang ke VM identik lainnya untuk pemecahan masalah. LVM atau RAID dapat digunakan pada disk data.
- Dukungan kernel untuk memasang sistem file UDF diperlukan. Pada boot pertama di Azure konfigurasi provisi diteruskan ke Linux VM dengan menggunakan media berformat UDF yang dipasang pada tamu. Agen Azure Linux harus memasang sistem file UDF untuk membaca konfigurasinya dan menyediakan VM.
- Versi kernel Linux yang lebih lama dari 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 2.6.32 Red Hat hulu, dan diperbaiki di RHEL 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 boot
numa=offpada baris perintah kernel di grub.conf. Untuk informasi selengkapnya lihat Red Hat KB 436883. - Jangan mengonfigurasi partisi pertukaran pada disk OS. Informasi lebih lanjut dapat ditemukan dalam langkah-langkah di bawah ini.
- 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 1MB sebelum konversi. Lihat Catatan Instalasi Linux untuk informasi selengkapnya.
CentOS 6.x
Di Hyper-V Manager, pilih komputer virtual.
Klik Sambungkan untuk membuka jendela untuk komputer virtual.
Di CentOS 6, NetworkManager dapat mengganggu agen Azure Linux. Hapus instalan paket ini dengan menjalankan perintah berikut ini:
sudo rpm -e --nodeps NetworkManagerBuat atau edit file
/etc/sysconfig/networkdan tambahkan teks berikut:NETWORKING=yes HOSTNAME=localhost.localdomainBuat atau edit file
/etc/sysconfig/network-scripts/ifcfg-eth0dan tambahkan teks berikut:DEVICE=eth0 ONBOOT=yes BOOTPROTO=dhcp TYPE=Ethernet USERCTL=no PEERDNS=yes IPV6INIT=noUbah 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.rulesPastikan layanan jaringan akan dimulai pada waktu boot dengan menjalankan perintah berikut:
sudo chkconfig network onJika Anda ingin menggunakan cermin OpenLogic yang dihosting di dalam pusat data Azure, maka ganti file
/etc/yum.repos.d/CentOS-Base.repodengan 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-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-6Catatan
Sisa panduan ini akan menganggap Anda menggunakan setidaknya repo
[openlogic], yang akan digunakan untuk menginstal agen Azure Linux di bawah ini.Tambahkan baris berikut ini ke /etc/ntp.conf:
http_caching=packagesJalankan perintah berikut untuk menghapus metadata yum saat ini dan perbarui sistem dengan paket terbaru:
yum clean allKecuali Anda membuat gambar untuk versi CentOS yang lebih lama, disarankan untuk memperbarui semua paket ke versi terbaru:
sudo yum -y updateReboot 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-vAtau 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 onPaket WALinuxAgent akan menghapus paket NetworkManager dan NetworkManager-gnome jika belum dihapus seperti yang dijelaskan di langkah 3.
Ubah baris boot kernel dalam konfigurasi grub Anda untuk menyertakan parameter kernel tambahan untuk Azure. Untuk melakukan ini, buka
/boot/grub/menu.lstdi editor teks dan pastikan bahwa kernel default menyertakan parameter berikut:console=ttyS0 earlyprintk=ttyS0 rootdelay=300Ini akan memastikan semua pesan konsol dikirim ke port serial pertama, yang dapat membantu dukungan Azure dengan masalah penelusuran kesalahan.
Selain hal-hal di atas, disarankan untuk menghapus parameter berikut:
rhgb quiet crashkernel=autoBoot grafis dan tenang tidak berguna di lingkungan cloud, ketika kita ingin semua log dikirim ke port serial. Opsi
crashkernelini mungkin dibiarkan dikonfigurasi jika diinginkan, tetapi perhatikan bahwa parameter ini akan mengurangi jumlah memori yang tersedia di VM sebesar 128MB atau lebih, sehingga 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 bahwa server SSH diinstal dan dikonfigurasi untuk memulai pada waktu 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. Perhatikan bahwa disk sumber daya lokal adalah disk sementara, dan mungkin dikosongkan ketika VM dicabut aksesnya. Setelah menginstal Azure Linux Agent (lihat langkah sebelumnya), ubah parameter berikut di
/etc/waagent.confdengan 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 mencabut akses komputer virtual dan persiapkan untuk penyediaan di Azure:
sudo waagent -force -deprovision+user export HISTSIZE=0 logoutKlik Tindakan -> Matikan di Hyper-V Manager. VHD Linux Anda kini siap diunggah ke Azure.
CentOS 7.0+
Perubahan di CentOS 7 (dan turunan serupa)
Menyiapkan komputer virtual CentOS 7 untuk Azure sangat mirip dengan CentOS 6, namun ada beberapa perbedaan penting yang perlu diperhatikan:
- Paket NetworkManager tidak lagi bertentangan dengan agen Azure Linux. Paket ini dipasang secara default dan kami menyarankan agar paket ini 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.
Langkah-Langkah Konfigurasi
Di Hyper-V Manager, pilih komputer virtual.
Klik Sambungkan untuk membuka jendela untuk komputer virtual.
Buat atau edit file
/etc/sysconfig/networkdan tambahkan teks berikut:NETWORKING=yes HOSTNAME=localhost.localdomainBuat atau edit file
/etc/sysconfig/network-scripts/ifcfg-eth0dan tambahkan teks berikut:DEVICE=eth0 ONBOOT=yes BOOTPROTO=dhcp TYPE=Ethernet USERCTL=no PEERDNS=yes IPV6INIT=no NM_CONTROLLED=noUbah 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.rulesJika Anda ingin menggunakan cermin OpenLogic yang dihosting di dalam pusat data Azure, maka ganti file
/etc/yum.repos.d/CentOS-Base.repodengan 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-7Catatan
Sisa panduan ini akan menganggap Anda menggunakan setidaknya repo
[openlogic], yang akan digunakan untuk menginstal agen Azure Linux di bawah ini.Jalankan perintah berikut untuk menghapus metadata yum saat ini dan instal semua pembaruan:
sudo yum clean allKecuali Anda membuat gambar untuk versi CentOS yang lebih lama, disarankan untuk memperbarui semua paket ke versi terbaru:
sudo yum -y updateReboot 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/grubdi 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-hal di atas, disarankan untuk menghapus parameter berikut:
rhgb quiet crashkernel=autoBoot grafis dan tenang tidak berguna di lingkungan cloud, ketika kita ingin semua log dikirim ke port serial. Opsi
crashkernelini mungkin dibiarkan dikonfigurasi jika diinginkan, tetapi perhatikan bahwa parameter ini akan mengurangi jumlah memori yang tersedia di VM sebesar 128MB atau lebih, sehingga mungkin bermasalah pada ukuran VM yang lebih kecil.Setelah Anda selesai mengedit
/etc/default/grubsesuai di atas, jalankan perintah berikut untuk membangun kembali konfigurasi grub:sudo grub2-mkconfig -o /boot/grub2/grub.cfgJika 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 -vInstal Azure Linux Agent dan dependensi untuk Azure VM Extensions:
sudo yum install python-pyasn1 WALinuxAgent sudo systemctl enable waagentInstal cloud-init untuk menangani penyediaan
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'} EOFTukarkan konfigurasi Jangan membuat ruang pertukaran pada disk sistem operasi.
Sebelumnya, Azure Linux Agent digunakan secara otomatis untuk mengonfigurasikan ruang pertukaran dengan menggunakan disk sumber daya lokal yang dipasang pada komputer virtual setelah komputer virtual diprovisikan di Azure. Namun upaya ini sekarang ditangani oleh cloud-init, Anda tidak boleh menggunakan Agen Linux untuk melakukan format disk sumber daya membuat file pertukaran, memodifikasi parameter berikut di
/etc/waagent.confdengan tepat: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.confJika Anda ingin memasang, melakukan format, dan membuat pertukaran, Anda dapat:
Meneruskan hal ini 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:
echo 'DefaultEnvironment="CLOUD_CFG=/etc/cloud/cloud.cfg.d/00-azure-swap.cfg"' >> /etc/systemd/system.conf 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 mencabut akses komputer virtual dan persiapkan untuk penyediaan di Azure:
Catatan: jika Anda memigrasikan mesin virtual yang spesifik dan tidak ingin membuat gambar umum, lewati langkah pembatalan penyediaan ini
# sudo rm -f /var/log/waagent.log # sudo cloud-init clean # waagent -force -deprovision+user # rm -f ~/.bash_history # export HISTSIZE=0 # logoutKlik Tindakan -> Matikan di Hyper-V Manager. VHD Linux Anda kini siap 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 Linux VM dari disk kustom.