Kuidas migreerida OpenVZ 6 konteinerit KVM serverisse murede vabalt

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 -y

Ja mitte vÀhem kahjutuna Ubuntu, Debian puhul:

# apt-get update
# apt-get upgrade

Samm 2

Paigaldame CTID, VZ_NODE ja VM utiliidi rsync:

CentOS:

# yum install rsync -y

Debian, Ubuntu:

# apt-get install rsync -y

Ei installi seal ega seal midagi muud.

Samm 3

Teostame peatamise CTID jÀrgnevaga VZ_NODE kÀsku

vzctl stop CTID

Seame pilt CTID:

vzctl mount CTID

Liigume 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 CTID

Samm 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.service

Serverites 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 restart

Ja 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-uuidgen

kui 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.16

kui 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.3

Kui 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 configure

Ja 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

Osta usaldusvÀÀrne veebihosting DDoS kaitsega, VPS VDS serverid đŸ”„ Osta usaldusvÀÀrne veebihosting DDoS kaitsega, VPS VDS serverid | ProHoster