IgaĂŒks, kes on kunagi pidanud migreerima OpenVZ konteineri tĂ”eliselt virtuaalsesse KVM serverisse, on silmitsi seisnud mitmete probleemidega:
- Enamik teavet on lihtsalt vananenud ja tundub olevat asjakohane juba ammu möödunud EOL-i tsĂŒkli jaoks.
- Erinevate operatsioonisĂŒsteemide kohta on alati erinevat teavet ning migreerimise vĂ”imalikke vigu arutatakse kunagi.
- MÔnikord tuleb tegeleda konfigureerimisega, mis migratsiooni pÀrast ei tööta.
Kui migreerida ĂŒks server, on alati vĂ”imalik midagi jooksu pealt parandada, aga mis siis, kui migreeritakse terve klaster?
Selles artiklis pĂŒĂŒan selgitada, kuidas migreerida OpenVZ konteinerit KVM-ile minimaalsete seisakute ja kiirete probleemilahendustega.
LĂŒhike ĂŒlevaade: mis on OpenVZ ja mis on KVM?
Ărme sĂŒvene terminoloogiasse, vaid ĂŒtleme ĂŒldiselt:
OpenVZ â virtualiseerimine operatsioonisĂŒsteemi tasemel, mida saab kĂ€ivitada isegi mikrolaineahjus, kuna ei ole vaja CPU juhiseid ja virtualiseerimiseks tehnoloogiaid hostmasinas.
KVM â tĂ€iuslik virtualiseerimine, mis kasutab kogu CPU vĂ”imsust ja suudab virtualiseerida kĂ”ike, nagu soovitakse, lĂ”igates nii edasi-tagasi.
Vastupidiselt levinud arvamusele, et hĂ”lvab teenusepakkujate OpenVZ, samas kui KVM ei ole â Ă”nneks viimasel ajal on KVM samuti hakanud ĂŒletama oma konkurente.
Mida me hakkame ĂŒmber kolima?
Experimentideks ĂŒmberkolimiseks kasutasime kogu avatud sĂŒsteemide metsa, mis on saada OpenVZ-l: CentOS (6 ja 7 versioon), Ubuntu (14, 16 ja 18 LTS), Debian 7.
Oletati, et suurem osa OpenVZ konteineritest töötavad juba mingisuguse LAMP-i peal, ja mĂ”nedel on isegi vĂ€ga spetsiifiline tarkvara. Enamasti olid need konfiguratsioonid ISPmanageri, VestaCP juhtpaneeliga (ja tavaliselt mitte aastaid uuendatud). Tuleb arvestada ka nende ĂŒmberkolimise nĂ”udmisi.
Migratsioon toimub IP-aadressid ĂŒmberkantava konteineri sĂ€ilitamisega, oletame, et IP, mis oli konteineril, jÀÀb VM-ile ja töötab probleemideta.
Enne kolimist veendume, et meil on kÔik kÀepÀrast:
- OpenVZ server, tÀielik root-juurdepÀÀs hostmasinale, vÔimalus peatada/mountida/kÀivitada/kustutada konteinerid.
- KVM-server, tÀielik root-juurdepÀÀs host-masinale, koos kÔigi sellest tulenevate funktsioonidega. Eeldatakse, et kÔik on juba seadistatud ja valmis kasutamiseks.
Hakkame ĂŒleviimisega pihta
Enne ĂŒleviimise alustamist mÀÀratlegime mĂ”isted, mis aitavad segadusse sattumisel:
KVM_NODE â KVM host-masin
VZ_NODE â OpenVZ host-masin
CTID â OpenVZ konteiner
VM â virtuaalne KVM-server
Valmistume ĂŒleviimiseks ja virtuaalmasinate loomiseks.
Samm 1
Kuna meil on vaja konteiner kuhugi ĂŒle viia, loome VM sarnase konfiguratsiooniga KVM_NODE.
Oluline! VM peab olema loodud just selle operatsioonisĂŒsteemiga, mis praegu CTID-l töötab. NĂ€iteks, kui CTID-l on installitud Ubuntu 14, siis peab ka VM-le olema paigaldatud Ubuntu 14. VĂ€iksemad versioonid ei ole olulised ja nende mitteĂŒhtlustamine ei ole nii kriitiline, kuid peamised versioonid peavad olema samad.
PĂ€rast VM loomist uuendame pakette nii CTID-l kui ka VM-l ( Ă€ra ajada segamini operatsioonisĂŒsteemi uuendamisega - seda ei uuendata, uuendame vaid pakette ja, kui tuleb, OS-i versiooni peamise versiooni piires).
CentOS-i puhul nÀeb see protsess kahjutuna vÀlja:
# yum clean all
# yum update -yJa mitte vÀhem kahjutuna Ubuntu, Debian puhul:
# apt-get update
# apt-get upgradeSamm 2
Paigaldame CTID, VZ_NODE ja VM utiliidi rsync:
CentOS:
# yum install rsync -yDebian, Ubuntu:
# apt-get install rsync -yEi installi seal ega seal midagi muud.
Samm 3
Teostame peatamise CTID jÀrgnevaga VZ_NODE kÀsku
vzctl stop CTIDSeame pilt CTID:
vzctl mount CTIDLiigume kausta /vz/root/CTID ja teeme
mount --bind /dev dev && mount --bind /sys sys && mount --bind /proc proc && chroot .Chrootis loome faili /root/exclude.txt â see sisaldab nimekirja eranditest, mis ei jĂ”ua uuele serverile
/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-ens3Ăhendame KVM_NODE ja kĂ€ivitame meie VM, et see töötaks ja oleks vĂ”rgu kaudu ligipÀÀsetav.
NĂŒĂŒd on kĂ”ik valmis ĂŒlekolimiseks. Alustame!
Samm 4
Endiselt chrootis, tÀidame
rsync --exclude-from="/root/exclude.txt" --numeric-ids -avpogtStlHz --progress -e "ssh -T -o Compression=no -x" / root@KVM_NODE:/Rsynci kĂ€sk viib ĂŒle kolimise lĂ€bi, loodame, et vĂ”tmed on arusaadavad â ĂŒle kolimine toimub sĂŒmboolsete linkide, Ă”iguste, omanikute ja gruppide sĂ€ilitamisega ning krĂŒptimine on vĂ€lja lĂŒlitatud suurema kiirus saavutamiseks (kuigi oleks vĂ”inud kasutada mĂ”nda kiiremat cipherit, pole see antud ĂŒlesande kontekstis nii oluline), samuti on vĂ€lja lĂŒlitatud kompressioon.
PÀrast rsynci lÔpetamist vÀljuge chrootist (vajutades ctrl+d) ja tÀidame
umount dev && umount proc && umount sys && cd .. && vzctl umount CTIDSamm 5
Teeme mitu toimingut, mis aitavad meil VM-i kĂ€ivitada pĂ€rast OpenVZ-st ĂŒleviimist.
Serverites, kus Systemd KÀivitame kÀsu, mis aitab meil siseneda tavalisesse konsolisse, nÀiteks serveri VNC-ekraani kaudu.
mv /etc/systemd/system/getty.target.wants/getty@tty2.service /etc/systemd/system/getty.target.wants/getty@tty1.serviceServerites CentOS 6 ja CentOS 7 kindlasti installime vÀrske tuuma:
yum install kernel-$(uname -r)Server vĂ”ib sellelt kĂ€ivituda, kuid pĂ€rast ĂŒleviimist vĂ”ib see lĂ”petada töötamise vĂ”i olla kustutatud.
Serveril CentOS 7 on vaja rakendada vÀike paranduste PolkitD jaoks, vastasel juhul kukub server lÔputusse buutimiseks:
getent group polkitd >/dev/null && echo -e "e[1;32mpolkitd rĂŒhma juba eksisteerib e[0m" || { groupadd -r polkitd && echo -e "e[1;33mLisatud puuduv polkitd rĂŒhm e[0m" || echo -e "e[1;31mPolkitd rĂŒhma lisamine EBAĂNNESTUS e[0m"; }
getent passwd polkitd >/dev/null
&& echo -e "e[1;32mpolkitd kasutaja juba eksisteerib e[0m" || { useradd -r -g polkitd -d / -s /sbin/nologin -c "PolkitD kasutaja" polkitd && echo -e "e[1;33mLisatud puuduv polkitd kasutaja e[0m" || echo -e "e[1;31mPolkitd kasutaja lisamine EBAĂNNESTUS e[0m"; }
rpm -Va polkit* && echo -e "e[1;32mpolkit* rpm verifitseerimine lĂ€bitud e[0m" || { echo -e "e[1;33mPolkit* rpm kasutaja/grupi omandi ja Ă”iguste taastamine e[0m"; rpm --setugids polkit polkit-pkla-compat; rpm --setperms polkit polkit-pkla-compat; }Kuna kĂ”ikidel ŃĐ”ŃĐČĐ”Ńites, kui mod_fcgid Apache'ile on installitud, teeme vĂ€ikese paranduse Ă”igustes, vastasel juhul kukuvad mod_fcgid'i kasutavad saidid 500 veaga:
chmod +s `which suexec` && apachectl restartJa viimane, tuleb kasuks Ubuntu ja Debian'i distributsioonidele. See operatsioonisĂŒsteem vĂ”ib sattuda lĂ”putusse buutimise vea tĂ”ttu.
liigselt kiiresti. aeglusta kÀivitamist natuke
ebameeldiv, kuid lihtsalt lahendatav, olenevalt operatsioonisĂŒsteemi versioonist.
VDS-l on vÔimalik installida: Debian 9 lahendus nÀeb vÀlja selline:
tÀidame
dbus-uuidgenkui saame vea
/usr/local/lib/libdbus-1.so.3: version `LIBDBUS_PRIVATE_1.10.8âČ not found
kontrollime LIBDBUS'i olemasolu
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 <-- seda on vaja
libdbus-1.so.3.14.16kui kÔik on korras, tÀidame
cd /lib/x86_64-linux-gnu
rm -rf libdbus-1.so.3
ln -s libdbus-1.so.3.14.15 libdbus-1.so.3Kui ei aita â proovime teist varianti.
Teine lahendus probleemile liigselt kiiresti sobib praktiliselt kÔigile Ubuntu ja Debian'i distributsioonidele.
TĂ€idame
bash -x /var/lib/dpkg/info/dbus.postinst configureJa jaoks Ubuntu 14, Debian 7 tÀiendavalt tÀidame:
adduser --system --home /nonexistent --no-create-home --disabled-password --group messagebus
rm -rf /etc/init.d/modules_dep.sh Mida me tegime? Taastasin messagebus'i, mida oli puudu Debian'i/Ubuntu kÀivitamiseks ja eemaldasin modules_dep'i, mis tuli OpenVZ-st ja takistas paljude tuumamoodulite laadimist.
Samm 6
Kaustame VM-i, kontrollime VNC-s, kuidas kĂ€ivitamine lĂ€heb, ja ideaalis â kĂ”ik kĂ€ivitub probleemideta. Kuigi vĂ”ivad esineda mĂ”ned spetsiifilised probleemid pĂ€rast migratsiooni â kuid need on vĂ€ljaspool selle artikli ulatust ja lahendatakse ilmnemisel.
Loodan, et see teave on kasulik! đ
Allikas: habr.com
