Sapa wae sing kudu mindhah wadhah OpenVZ menyang server kanthi virtualisasi KVM lengkap wis nemoni sawetara masalah:
- Umume informasi mung ketinggalan jaman lan cocog kanggo OS sing wis suwe ngliwati siklus EOL
- OS sing beda-beda tansah nyedhiyakake informasi sing beda-beda lan ora nate nimbang kemungkinan kesalahan migrasi
- Kadhangkala sampeyan kudu ngatasi konfigurasi sing ora pengin digunakake sawise migrasi.
Nalika migrasi 1 server, sampeyan bisa tansah ndandani soko ing fly, nanging apa yen migrasi kabeh kluster?
Ing artikel iki aku bakal nyoba kanggo pitutur marang kowe carane mlaku migrasi wadhah OpenVZ kanggo KVM karo downtime minimal lan solusi cepet kanggo kabeh masalah.
Sepisanan cepet: apa OpenVZ lan apa KVM?
Ayo ora menyang terminologi, nanging mung ngomong ing istilah umum:
OpenVZ - virtualisasi ing tingkat sistem operasi, bisa disebarake malah ing open gelombang mikro, wiwit ana ora perlu kanggo instruksi CPU lan teknologi virtualization ing mesin inang.
KVM - virtualisasi lengkap, nggunakake kekuwatan lengkap CPU lan bisa nggawe virtualisasi apa wae, kanthi cara apa wae, nglereni dawa lan silang.
Beda karo kapercayan umum, ing lingkungan panyedhiya hosting OpenVZ wis oversold, nanging KVM ora. Untunge kanggo sing terakhir, KVM saiki wis oversold kaya sedulure.
Apa sing arep kita transfer?
Kabeh sistem operasi sing kasedhiya ing OpenVZ kudu digunakake minangka subjek uji coba kanggo transfer kasebut: CentOS (6 lan 7 versi), Ubuntu (14, 16 lan 18 LTS), Debian 7.
Dianggep umume kontaner OpenVZ wis duwe LAMP sing mlaku, lan sawetara uga duwe piranti lunak khusus. Paling asring, iki padha konfigurasi karo panel kontrol ISPmanager, VestaCP (lan paling asring, ora dianyari kanggo taun). Sampeyan perlu kanggo njupuk menyang akun panjalukan kanggo transfer.
Migrasi ditindakake kanthi pelestarian alamat IP Kanggo wadhah portabel, kita bakal nganggep yen alamat IP wadhah kasebut disimpen ing VM lan bakal bisa digunakake tanpa masalah.
Sadurunge nransfer, ayo priksa manawa kabeh wis ana:
- Server OpenVZ, akses root lengkap menyang mesin inang, kemampuan kanggo mungkasi / gunung / miwiti / mbusak wadhah
- server KVM, akses ROOT lengkap kanggo mesin inang, karo kabeh sing entails. Dianggep kabeh wis dikonfigurasi lan siap digunakake.
Ayo dadi miwiti transfer
Sadurunge miwiti transfer, ayo nemtokake istilah sing bakal mbantu supaya ora kebingungan:
KVM_NODE - mesin host KVM
VZ_NODE - mesin inang OpenVZ
CTID - Wadhah OpenVZ
VM - server virtual KVM
Nyiapake migrasi lan nggawe mesin virtual.
langkah 1
Awit kita kudu mindhah wadhah nang endi wae, kita bakal nggawe VM karo konfigurasi padha ing KVM_NODE.
Penting! Sampeyan kudu nggawe VM ing sistem operasi sing padha sing lagi mlaku ing CTID. Contone, yen CTID lagi mlaku Ubuntu 14, mula sampeyan kudu nginstal ing VM uga Ubuntu 14. Versi cilik ora penting lan bedane ora pati penting, nanging versi utama kudu padha.
Sawise nggawe VM, kita bakal nganyari paket ing CTID lan ing VM (ora bakal bingung karo nganyari OS - kita ora nganyari, mung nganyari paket lan, yen perlu, versi OS ing versi utama).
Kanggo CentOS Proses iki katon ora mbebayani:
# yum clean all
# yum update -yLan ora kurang mbebayani kanggo Ubuntu, Debian:
# apt-get update
# apt-get upgradelangkah 2
Kita nginstal ing CTID, VZ_NODE и VM sarana rsync:
CentOS:
# yum install rsync -yDebian, Ubuntu:
# apt-get install rsync -yKita ora nginstal apa-apa ing kene utawa ing kana.
langkah 3
We sing nggawe mandeg CTID ing VZ_NODE tim
vzctl stop CTIDPasang gambar CTID:
vzctl mount CTIDPindhah menyang folder /vz/root/CTID lan kita nindakake
mount --bind /dev dev && mount --bind /sys sys && mount --bind /proc proc && chroot .Ing chroot, nggawe file /root/exclude.txt — bakal ngemot dhaptar pangecualian sing ora bakal kalebu ing server anyar
/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-ens3Ayo nyambung menyang KVM_NODE lan miwiti kita VMsupaya bisa dianggo lan bisa diakses liwat jaringan.
Saiki kabeh wis siyap kanggo transfer. Ayo budal!
langkah 4
Isih ing pengaruh, kita nindakake
rsync --exclude-from="/root/exclude.txt" --numeric-ids -avpogtStlHz --progress -e "ssh -T -o Compression=no -x" / root@KVM_NODE:/Printah rsync bakal nindakake transfer, kita ngarep-arep sing tombol cetha - transfer wis digawa metu karo pengawetan saka symlinks, hak akses, nduweni lan klompok, lan enkripsi dipatèni kanggo kacepetan luwih (bisa nggunakake sawetara cipher luwih cepet, nanging iki ora dadi penting ing framework saka tugas iki), uga komprèsi dipatèni.
Sawise rsync rampung, metu saka chroot (kanthi mencet ctrl + d) lan eksekusi
umount dev && umount proc && umount sys && cd .. && vzctl umount CTIDlangkah 5
Ayo nindakake sawetara tumindak sing bakal mbantu kita miwiti VM sawise migrasi saka OpenVZ.
Ing server karo Systemd ayo mbukak printah sing bakal bantuan kita mlebu menyang console biasa, ngomong, liwat layar server VNC
mv /etc/systemd/system/getty.target.wants/getty@tty2.service /etc/systemd/system/getty.target.wants/getty@tty1.serviceIng server CentOS 6 и CentOS 7 manawa kanggo nginstal kernel seger:
yum install kernel-$(uname -r)Server bisa diundhuh saka iku, nanging sawise transfer bisa mandheg utawa dibusak.
Ing server CentOS 7 sampeyan kudu aplikasi fix cilik kanggo PolkitD, yen server bakal tiba menyang boot langgeng:
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; }Ing kabeh server, yen mod_fcgid diinstal kanggo Apache, kita bakal nindakake perbaikan cilik kanthi hak, yen situs sing nggunakake mod_fcgid bakal nabrak kanthi kesalahan 500:
chmod +s `which suexec` && apachectl restartLan pungkasanipun, badhe migunani kangge Ubuntu, Debian distribusi. OS iki bisa nabrak boot permanen kanthi kesalahan
looping cepet banget. eksekusi throttling sethitik
ora nyenengake, nanging gampang diatasi, gumantung saka versi OS.
Ing Debian 9 fix katon kaya iki:
kita nindakake
dbus-uuidgenyen kita entuk kesalahan
/usr/local/lib/libdbus-1.so.3: versi `LIBDBUS_PRIVATE_1.10.8′ ora ditemokake
mriksa 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.16yen kabeh iku ok, kita nglakokaké
cd /lib/x86_64-linux-gnu
rm -rf libdbus-1.so.3
ln -s libdbus-1.so.3.14.15 libdbus-1.so.3Yen ora mbantu, coba pilihan kapindho.
Pilihan kapindho kanggo ngatasi masalah karo eksekusi throttling sethitik cocok kanggo meh kabeh wong Ubuntu и Debian distribusi.
Kita nindakake
bash -x /var/lib/dpkg/info/dbus.postinst configureLan kanggo Ubuntu 14, Debian 7 Kajaba iku, kita nindakake:
adduser --system --home /nonexistent --no-create-home --disabled-password --group messagebus
rm -rf /etc/init.d/modules_dep.sh Apa sing wis ditindakake? Kita mulihake messagebus, sing ilang nalika miwiti maneh. Debian/Ubuntu lan mbusak modules_dep, sing asale saka OpenVZ lan nyegah akeh modul kernel supaya ora dimuat.
langkah 6
Urip maneh VM, priksa VNC carane loading lan saenipun - kabeh bakal mbukak tanpa masalah. Senajan, mbok menawa, sawetara masalah tartamtu bakal katon sawise migrasi - nanging padha ngluwihi orane katrangan saka artikel iki lan tetep nalika padha katon.
Mugi informasi iki bakal migunani! 🙂
Source: www.habr.com
