Iga, kellel on kunagi elus olnud vajadus viia OpenVZ konteiner serverisse, kus on tÀieÔiguslik KVM virtualiseerimine, on silmitsi seisnud mitmete probleemidega:
- Enamik teavet on lihtsalt vananenud ja oli asjakohane juba ammu möödunud EOL tsĂŒkli jaoks.
- Erinevate operatsioonisĂŒsteemide kohta on alati erinev teave ja kunagi ei arvestata migratsiooni vĂ”imalikke vigu.
- MÔnikord tuleb tegeleda konfiguratsioonidega, mis pÀrast migratsiooni ei pruugi lihtsalt töötada.
Kui viid ĂŒhe serveri, on alati vĂ”imalik midagi jooksvalt parandada, aga kui viid terve kluster?
Selles artiklis pĂŒĂŒan ma rÀÀkida, kuidas Ă”igesti migreerida OpenVZ konteinerit KVM-ile minimaalse seisaku ja kiire probleemilahendusega.
VĂ€ike selgitus: mis on OpenVZ ja mis on KVM?
Ărme lasku terminoloogiasse, vaid ĂŒtleme ĂŒldiselt:
OpenVZ â virtualiseerimine operatsioonisĂŒsteemi tasemel, mille saab isegi mikrolaineahjus vĂ€lja arendada, kuna ei ole vajadust CPU juhiste ja virtualiseerimise tehnoloogiate jĂ€rele hostmasinas.
KVM â tĂ€ieĂ”iguslik virtualiseerimine, mis kasutab kogu CPU jĂ”udlust ja suudab virtualiseerida kĂ”ike, nagu soovib, lĂ”igata mööda ja ĂŒle.
Vaatamata levinud arvamusele, et OpenVZ ĂŒle mĂŒĂŒakse, aga KVM mitte â Ă”nneks viimaste jaoks, KVM mĂŒĂŒakse nĂŒĂŒd ĂŒle mitte vĂ€hem kui selle Ă”e. hostingu pakkujate Mida me viime?
Eksperimentideks viimiseks tuli kasutada kogu OpenVZ-s saadaval olevate operatsioonisĂŒsteemide 'metsa': CentOS (6 ja 7 versioon), Ubuntu (14, 16 ja 18 LTS), Debian 7.
Eeldati, et suuremal osal OpenVZ konteineritest töötab enam-vÀhem LAMP, ja osa neist on isegi vÀga spetsiifiline tarkvara. KÔige sagedamini olid need konfiguratsioonid ISPmanager, VestaCP juhtpaneeliga (ja kÔige sagedamini, aastaid mitte uuendatud). Tuleb arvestada ka nende nÔudmistega migratsiooni osas.
Migratsioon toimub konteineri sÀilitamisega, eeldame, et konteineri IP sÀilib VM-is ja töötab probleemideta.
Enne ĂŒleviimist veendume, et meil on kĂ”ik olemas: IP-aadressid OpenVZ server, tĂ€ielik root-juurdepÀÀs hostmasinale, vĂ”imalus peatada/montida/jaotada/kustutada konteinerid.
KVM server, tÀielik root-juurdepÀÀs hostmasinale, kÔigi sellega kaasnevate Ôigustega. Eeldatakse, et kÔik on juba seadistatud ja töökorras.
- Migratsiooni korral ensureerime, et kÔik nÔuded on tÀidetud.
- Selle kohta eeldatakse, et kÔik on juba seadistatud ja töötavat.
Alustame ĂŒleviimist
Enne ĂŒleviimise alustamist mÀÀratleme mĂ”isted, et mitte segadusse minna:
KVM_NODE â KVM hostmasin
VZ_NODE â OpenVZ hostmasin
CTID â OpenVZ konteiner
VM â KVM virtuaalserver
Valmistame ĂŒleviimiseks ette ja loome virtuaalmasinad.
Samm 1
Kuna me peame konteineri kuhugi ĂŒleviima, loome VM samade parameetritega KVM_NODE.
Oluline! Virtuaalmasin tuleb luua just selle operatsioonisĂŒsteemi peale, mis praegu töötab CTID-l. NĂ€iteks kui CTID-l on paigaldatud Ubuntu 14, siis tuleb ka VM-le paigaldada Ubuntu 14. Alaversiooni mitte ĂŒhtimine ei ole nii kriitiline, kuid pĂ”hiversioonid peavad olema samad.
PĂ€rast VM-i loomist teeme paketihaldust nii CTID-l kui ka VM-is (Ă€rge segage operatsioonisĂŒsteemi uuendamisega - seda me ei uuenda, uuendame ainult pakette ja vajadusel versiooni pĂ”hiversioonis).
CentOS-il nÀeb see protsess ohutult vÀlja:
# yum clean all
# yum update -yJa mitte vÀhem ohutult Ubuntu, Debian jaoks:
# apt-get update
# apt-get upgradeSamm 2
Paigaldame CTID, VZ_NODE ja VM utiliit rsync:
CentOS:
# yum install rsync -yDebian, Ubuntu:
# apt-get install rsync -yRoheline valik ei ole vajalik, ei seal, ega seal.
Samm 3
Teostame peatamise CTID . Tundub, et VZ_NODE kÀsklusega
vzctl stop CTIDMountimme pildi CTID:
vzctl mount CTIDLiigume kausta /vz/root/CTID ja teeme
mount --bind /dev dev && mount --bind /sys sys && mount --bind /proc proc && chroot .Chrooti all loome faili /root/exclude.txt â see sisaldab vĂ€lja jĂ€etavate objektide nimekirja, mis ei satu 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Ăhendume KVM_NODE ja kĂ€ivitame meie VM, et see töötaks ja oleks vĂ”rgus kergesti ligipÀÀsetav.
NĂŒĂŒd on kĂ”ik ĂŒleviimiseks valmis. LĂ€heme!
Samm 4
Olles endiselt chrooti all, teeme
rsync --exclude-from="/root/exclude.txt" --numeric-ids -avpogtStlHz --progress -e "ssh -T -o Compression=no -x" / root@KVM_NODE:/Rsync kĂ€sk viib ĂŒleviimise lĂ€bi, loodetavasti on vĂ”tmed arusaadavad â ĂŒleviimine toimub sĂŒmboollinkide, Ă”iguste, omanike ja gruppide sĂ€ilitamisega ning krĂŒpteerimine on vĂ€lja lĂŒlitatud suurema kiirusena (vĂ”iks kasutada mĂ”nda kiiremat cipherit, kuid see ei ole antud ĂŒlesande raames nii oluline), samas on vĂ€lja lĂŒlitatud ka kompressioon.
PÀrast rsynci kÀsku lÔpetamist vÀljumme chrootist (vajutades ctrl+d) ja teeme
umount dev && umount proc && umount sys && cd .. && vzctl umount CTIDSamm 5
Teeme mĂ”ned toimingud, mis aitavad meil VM-i kĂ€ivitamisel pĂ€rast OpenVZ ĂŒleviimist.
Serverites, kus on Systemd teeme kÀsu, mis aitab meil tavalisel konsoolil sisse logida, nÀiteks VNC serveri ekraani kaudu
mv /etc/systemd/system/getty.target.wants/getty@tty2.service /etc/systemd/system/getty.target.wants/getty@tty1.serviceCentOS 6 serverites CentOS 6 ja CentOS 7 me kindlasti installime vÀrske tuuma:
yum install kernel-$(uname -r)Server vĂ”ib olla sellest kĂ€ivitatud, kuid pĂ€rast ĂŒlekannet vĂ”ib see lĂ”petada töötamise vĂ”i olla eemaldatud.
Serveris CentOS 7 on vajalik rakendada vÀike fikseering PolkitD-le, vastasel juhul kukub server igavesse boot'i:
getent group polkitd >/dev/null && echo -e "e[1;32mpolkitd rĂŒhm 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 "Kasutaja polkitd jaoks" 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 kontroll lÀbis[e[0m" || { echo -e "e[1;33mResetime polkit* rpm kasutaja/grupi omandamise & Ôigused[e[0m"; rpm --setugids polkit polkit-pkla-compat; rpm --setperms polkit polkit-pkla-compat; }KÔikides serverites, kui Apache'ile on installeeritud mod_fcgid, teeme vÀikese fikseeringu Ôigustega, vastasel juhul kukuvad saidid, mis kasutavad mod_fcgid, 500 veaga:
chmod +s `which suexec` && apachectl restartJa viimane, mis on kasulik Ubuntu ja Debianâi distributsioonide jaoks. See opsĂŒsteem vĂ”ib langeda igavesse boot'i veaga
looping too fast. throttling execution a little
ebameeldiv, kuid kergesti parandatav, sĂ”ltuvalt opsĂŒsteemi versioonist.
Pealehe Debian 9 parandus nÀeb vÀlja selline:
teeme:
dbus-uuidgenkui saame vea
/usr/local/lib/libdbus-1.so.3: version `LIBDBUS_PRIVATE_1.10.8âČ not found
kontrollime LIBDBUS 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 <-- see on vajalik
libdbus-1.so.3.14.16kui kÔik on korras, teeme:
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 variant probleemi lahendamiseks throttling execution a little sobib praktiliselt kĂ”ikidele Ubuntu ja Debianâi distributsioonidele.
TĂ€idame
bash -x /var/lib/dpkg/info/dbus.postinst configureJa Ubuntu 14, Debian 7 lisaks teeme:
adduser --system --home /nonexistent --no-create-home --disabled-password --group messagebus
rm -rf /etc/init.d/modules_dep.sh Mida me tegime? Taastasime messagebus'i, mida ei olnud Debian'i/Ubuntu kÀivitamiseks ning eemaldasime modules_dep'i, mis tuli OpenVZ-st ja takistas paljude tuumamoodulite laadimist.
Samm 6
TaaskĂ€ivitame VM-i, kontrollime VNC-is, kuidas laadimine toimub ja ideaalis â kĂ”ik laadib ilma probleemideta. Kuigi pĂ€rast migratsiooni vĂ”ivad mĂ”ningad spetsiifilised probleemid ilmneda â kuid need ei kuulu selle artikli rikka, need lahendatakse jooksvalt.
Loodan, et see teave on kasulik! đ
Allikas: habr.com
