Saha waé anu peryogi pikeun mindahkeun wadah OpenVZ ka server kalayan virtualisasi KVM pinuh sahenteuna sakali dina kahirupanna parantos ngalaman sababaraha masalah:
- Seuseueurna inpormasi ngan saukur luntur sareng relevan pikeun OS anu parantos lami ngalangkungan siklus EOL
- Inpormasi anu béda-béda sok disayogikeun pikeun sistem operasi anu béda, sareng kamungkinan kasalahan nalika migrasi henteu pernah dianggap
- Kadang-kadang anjeun kedah ngurus konfigurasi anu unggal ayeuna teras henteu hoyong damel saatos hijrah
Lamun anjeun nransper 1 server, Anjeun salawasna bisa ngalereskeun hal on laleur nu, tapi mun anjeun mindahkeun hiji sakabéh klaster?
Dina tulisan ieu kuring bakal nyobian nyarioskeun ka anjeun kumaha leres migrasi wadah OpenVZ ka KVM kalayan downtime minimal sareng solusi anu gancang pikeun sadaya masalah.
Program atikan leutik: naon OpenVZ sareng naon KVM?
Kami moal lebet kana terminologi, tapi bakal nyarios sacara umum:
OpenVZ - virtualization dina tingkat sistem operasi, anjeun malah bisa nyebarkeun eta dina microwave a, saprak aya teu kudu parentah CPU jeung téhnologi virtualization dina mesin host.
KVM - virtualization full-fledged, ngagunakeun sagala kakuatan CPU jeung sanggup virtualizing nanaon, sagala cara, motong eta lengthwise na crosswise.
Sabalikna tina kapercayaan umum, dina lingkungan panyadia hosting OpenVZ oversold, tapi KVM henteu. Untungna pikeun anu terakhir, KVM ayeuna oversold sapertos dulurna.
Naon anu bakal urang bawa?
В качестве подопытных для переноса пришлось использовать весь лес операционных систем, которые доступны на OpenVZ: CentOS (6 и 7 версии), Ubuntu (14, 16 и 18 LTS), Debian 7.
Dianggap yén kalolobaan wadah OpenVZ parantos ngajalankeun sababaraha jinis LAMP, sareng sababaraha ogé ngagaduhan parangkat lunak anu khusus. Seringna, ieu mangrupikeun konfigurasi sareng ISPmanager, panel kontrol VestaCP (sareng paling sering, henteu diropéa mangtaun-taun). Paménta transferna ogé kedah dipertimbangkeun.
Migrasi dilaksanakeun kalawan ngajaga alamat IP Pikeun wadah portabel, urang bakal nganggap yén alamat IP wadahna disimpen dina VM sareng bakal tiasa dianggo tanpa masalah.
Sateuacan mindahkeun, hayu urang pastikeun yén urang gaduh sagalana dina leungeun:
- server OpenVZ, aksés root pinuh kana mesin host, kamampuhan pikeun ngeureunkeun / Gunung / ngamimitian / ngahapus peti
- server KVM, aksés root pinuh kana mesin host, kalayan sagala rupa nu eta ngakibatkeun. Hal ieu dianggap yén sagalana geus ngonpigurasi sarta siap balik.
Hayu urang mimitian mindahkeun
Sateuacan urang ngamimitian mindahkeun, hayu urang ngartikeun istilah anu bakal ngabantosan anjeun ngahindarkeun kabingungan:
KVM_NODE - mesin host KVM
VZ_NODE - Mesin host OpenVZ
CTID - wadahna OpenVZ
VM - server virtual KVM
Nyiapkeun pikeun migrasi sareng nyiptakeun mesin virtual.
lengkah 1
Kusabab urang kudu mindahkeun wadahna wae, urang bakal nyieun VM kalawan konfigurasi sarupa KVM_NODE.
Penting! Создавать VM нужно именно на той операционной системе, которая сейчас крутится на CTID. Например, если на CTID установлена Ubuntu 14, то и на VM нужно ставить Ubuntu 14. Минорные версии не важны и их несовпадение не столь критично, а вот мажорные — должны быть одинаковыми.
Saatos nyiptakeun VM, kami bakal ngamutahirkeun bungkusan dina CTID sareng VM (henteu bingung sareng ngamutahirkeun OS - kami henteu ngamutahirkeun, kami ngan ukur ngapdet bungkusan sareng, upami sumping, versi OS dina bagian utama. versi).
keur CentOS этот процесс выглядит безобидно:
# yum clean all
# yum update -yИ не менее безобидно для Ubuntu, Debian:
# apt-get update
# apt-get upgradelengkah 2
Pasang dina CTID, VZ_NODE и VM utilitas rsync:
CentOS:
# yum install rsync -yDebian, Ubuntu:
# apt-get install rsync -ySimkuring teu masang nanaon sejenna boh aya atanapi aya.
lengkah 3
Urang eureun CTID dina VZ_NODE tim
vzctl stop CTIDPamasangan gambar CTID:
vzctl mount CTIDPindah ka folder /vz/root/CTID jeung laksana
mount --bind /dev dev && mount --bind /sys sys && mount --bind /proc proc && chroot .Dina akar, jieun file /root/exclude.txt - éta bakal ngandung daptar pengecualian anu moal dugi ka server énggal
/boot
/proc
/sys
/tmp
/dev
/var/lock
/etc/fstab
/etc/mtab
/etc/resolv.conf
/etc/conf.d/net
/etc/network/interfaces
/etc/networks
/etc/sysconfig/network*
/etc/sysconfig/hwconf
/etc/sysconfig/ip6tables-config
/etc/sysconfig/kernel
/etc/hostname
/etc/HOSTNAME
/etc/hosts
/etc/modprobe*
/etc/modules
/net
/lib/modules
/etc/rc.conf
/usr/share/nova-agent*
/usr/sbin/nova-agent*
/etc/init.d/nova-agent*
/etc/ips
/etc/ipaddrpool
/etc/ips.dnsmaster
/etc/resolv.conf
/etc/sysconfig/network-scripts/ifcfg-eth0
/etc/sysconfig/network-scripts/ifcfg-ens3Urang sambungkeun ka KVM_NODE sarta ngajalankeun kami VMsupados tiasa dianggo sareng tiasa diaksés dina jaringan.
Ayeuna sagalana geus siap pikeun mindahkeun. indit!
lengkah 4
Masih dina mantra, urang ngalakukeun
rsync --exclude-from="/root/exclude.txt" --numeric-ids -avpogtStlHz --progress -e "ssh -T -o Compression=no -x" / root@KVM_NODE:/Paréntah rsync bakal ngalaksanakeun transfer, kami ngarepkeun yén konci éta jelas - transfer dilaksanakeun kalayan pelestarian symlinks, hak aksés, pamilik sareng grup, sareng enkripsi ditumpurkeun pikeun laju anu langkung ageung (anjeun tiasa nganggo sababaraha cipher anu langkung gancang, tapi ieu teu jadi penting pikeun tugas ieu), kitu ogé komprési ditumpurkeun.
Saatos réngsé rsync, kaluar tina chroot (ku mencét ctrl + d) sareng laksanakeun.
umount dev && umount proc && umount sys && cd .. && vzctl umount CTIDlengkah 5
Hayu urang ngalakukeun sababaraha léngkah anu bakal nulungan urang ngajalankeun VM sanggeus mindahkeun tina OpenVZ.
Dina server kalawan Systemd hayu urang laksanakeun paréntah anu bakal ngabantosan urang asup kana konsol biasa, contona, ngaliwatan layar server VNC
mv /etc/systemd/system/getty.target.wants/getty@tty2.service /etc/systemd/system/getty.target.wants/getty@tty1.serviceDina server CentOS 6 и CentOS 7 Pastikeun masang kernel seger:
yum install kernel-$(uname -r)Pangladén tiasa dimuat tina éta, tapi saatos transfer éta tiasa lirén damel atanapi dihapus.
Dina server CentOS 7 Anjeun kedah nerapkeun perbaikan leutik pikeun PolkitD, upami henteu server bakal nabrak salamina:
getent group polkitd >/dev/null && echo -e "e[1;32mpolkitd group already existse[0m" || { groupadd -r polkitd && echo -e "e[1;33mAdded missing polkitd groupe[0m" || echo -e "e[1;31mAdding polkitd group FAILEDe[0m"; }
getent passwd polkitd >/dev/null
&& echo -e "e[1;32mpolkitd user already existse[0m" || { useradd -r -g polkitd -d / -s /sbin/nologin -c "User for polkitd" polkitd && echo -e "e[1;33mAdded missing polkitd usere[0m" || echo -e "e[1;31mAdding polkitd user FAILEDe[0m"; }
rpm -Va polkit* && echo -e "e[1;32mpolkit* rpm verification passede[0m" || { echo -e "e[1;33mResetting polkit* rpm user/group ownership & permse[0m"; rpm --setugids polkit polkit-pkla-compat; rpm --setperms polkit polkit-pkla-compat; }Dina sadaya server, upami mod_fcgid pikeun Apache dipasang, urang bakal ngalakukeun perbaikan leutik sareng hak, upami henteu situs anu nganggo mod_fcgid bakal nabrak sareng kasalahan 500:
chmod +s `which suexec` && apachectl restartИ последнее, пригодится для Ubuntu, Debian дистрибутивов. Эта ОС может упасть в вечный бут с ошибкой
looping gancang teuing. palaksanaan throttling saeutik
teu pikaresepeun, tapi gampang dibereskeun, gumantung kana versi OS.
on Debian 9 fix Sigana mah kieu:
urang laksanakeun
dbus-uuidgenlamun urang meunang kasalahan
/usr/local/lib/libdbus-1.so.3: versi `LIBDBUS_PRIVATE_1.10.8′ teu kapanggih
pariksa ayana LIBDBUS
ls -la /lib/x86_64-linux-gnu | grep dbus
libdbus-1.so.3 -> libdbus-1.so.3.14.15
libdbus-1.so.3.14.15 <-- нужен этот
libdbus-1.so.3.14.16lamun sagalana aya dina urutan, urang ngalakukeun eta
cd /lib/x86_64-linux-gnu
rm -rf libdbus-1.so.3
ln -s libdbus-1.so.3.14.15 libdbus-1.so.3Upami éta henteu ngabantosan, cobian pilihan kadua.
Solusi kadua pikeun masalah jeung palaksanaan throttling saeutik подходит практически для всех Ubuntu и Debian дистрибутивов.
Urang ngalaksanakeun
bash -x /var/lib/dpkg/info/dbus.postinst configureSareng pikeun Ubuntu 14, Debian 7 Salaku tambahan urang ngalaksanakeun:
adduser --system --home /nonexistent --no-create-home --disabled-password --group messagebus
rm -rf /etc/init.d/modules_dep.sh Что мы сделали? Восстановили messagebus, которого не хватало для запуска Debian/Ubuntu и удалили modules_dep, который пришел от OpenVZ и мешал загрузки многих модулей ядра.
lengkah 6
Urang reboot VM, pariksa di VNC kumaha loading ieu progressing na, ideally, sagalana bakal muka tanpa masalah. Sanajan kasebut nyaéta dimungkinkeun yén sababaraha masalah husus bakal muncul sanggeus migrasi, aranjeunna saluareun ruang lingkup artikel ieu sarta bakal dilereskeun sakumaha aranjeunna timbul.
Kuring miharep informasi ieu mangpaat! 🙂
sumber: www.habr.com
