Cumu trasferisce u container OpenVZ 6 à u servitore KVM senza mal di testa

Qualchidunu chì hà bisognu di trasferisce un containeru OpenVZ à un servitore cù virtualizazione KVM cumpleta almenu una volta in a so vita hà scontru alcuni prublemi:

  • A maiò parte di l'infurmazione hè simplicemente obsoleta è era pertinente per i OS chì avianu longu passatu u ciculu EOL
  • Differenti infurmazioni sò sempre furnite per diversi sistemi operativi, è i pussibuli errori durante a migrazione ùn sò mai cunsiderati
  • Calchì volta vi tocca à trattà cun cunfigurazioni chì ogni tantu ùn vulete travaglià dopu a migrazione

Quandu si trasfirìu 1 servitore, pudete sempre riparà qualcosa nantu à a mosca, ma quandu trasferete un cluster sanu?

In questu articulu, pruvaraghju à dì cumu migrate currettamente un containeru OpenVZ à KVM cù un minimu di downtime è una soluzione rapida à tutti i prublemi.

Un picculu prugramma educativu: chì hè OpenVZ è chì hè KVM?

Ùn andemu micca in a terminologia, ma diceremu in termini ginirali:

OpenVZ - virtualizazione à u livellu di u sistema operatore, pudete ancu implementà nantu à un micru, postu chì ùn ci hè micca bisognu di struzzioni di CPU è tecnulugia di virtualizazione in a macchina host.

KVM - virtualizazione cumpleta, utilizendu tutta a putenza di u CPU è capace di virtualizà qualsiasi cosa, in ogni modu, tagliendu longu è trasversale.

Contrariamente à a credenza pupulare, in l'ambiente fornitori di hosting OpenVZ hè sopravvendutu, ma KVM ùn hè micca. Per furtuna per quest'ultimu, KVM hè avà sopravvendutu cum'è u so fratellu.

Chì ci purteremu ?

В качестве подопытных для переноса пришлось использовать весь лес операционных систем, которые доступны на OpenVZ: CentOS (6 и 7 версии), Ubuntu (14, 16 и 18 LTS), Debian 7.

Hè stata presunta chì a maiò parte di i cuntenituri OpenVZ eranu digià in esecuzione di un tipu di LAMP, è alcuni avianu ancu un software assai specificu. A maiò spessu, questi eranu cunfigurazioni cù l'ISPmanager, u pannellu di cuntrollu VestaCP (è più spessu, micca aghjurnatu per anni). E so dumande di trasferimentu deve ancu esse cunsideratu.

A migrazione hè realizata cù a preservazione indirizzi IP Per un container portatile, supponeremu chì l'indirizzu IP di u container hè cunservatu nantu à a VM è chì funziona senza prublemi.

Prima di trasferimentu, assicuremu chì avemu tuttu in manu:

  • Servitore OpenVZ, accessu radicale cumpletu à a macchina host, capacità di piantà / muntà / principià / sguassate cuntenituri
  • Servitore KVM, accessu radicali cumpletu à a macchina host, cù tuttu ciò chì implica. Si assume chì tuttu hè digià cunfiguratu è pronta per andà.

Cuminciamu a trasferimentu

Prima di principià u trasferimentu, definiscemu i termini chì vi aiutanu à evità a cunfusione:

KVM_NODE - Macchina host KVM
VZ_NODE - Macchina host OpenVZ
CTID - Container OpenVZ
VM - Servitore virtuale KVM

Preparazione per a migrazione è creazione di macchine virtuali.

mossa 1

Siccomu avemu bisognu di spustà u cuntinuu in un locu, avemu da creà VM cù una cunfigurazione simile à KVM_NODE.
Impurtante! Создавать VM нужно именно на той операционной системе, которая сейчас крутится на CTID. Например, если на CTID установлена Ubuntu 14, то и на VM нужно ставить Ubuntu 14. Минорные версии не важны и их несовпадение не столь критично, а вот мажорные — должны быть одинаковыми.

Dopu avè creatu a VM, aghjurneremu i pacchetti nantu à u CTID è in a VM (da micca esse cunfusu cù l'aghjurnamentu di u SO - ùn l'aghjurnà micca, aghjurnemu solu i pacchetti è, s'ellu ghjunghje, a versione di u SO in u principale). versione).

di CentOS этот процесс выглядит безобидно:

# yum clean all
# yum update -y

И не менее безобидно для Ubuntu, Debian:

# apt-get update
# apt-get upgrade

mossa 2

Installa nantu CTID, VZ_NODE и VM utilità rsync:

CentOS:

# yum install rsync -y

Debian, Ubuntu:

# apt-get install rsync -y

Ùn installemu nunda altru nè quì nè quì.

mossa 3

Facemu una fermata CTID nantu VZ_NODE squadra

vzctl stop CTID

Muntà l'imaghjini CTID:

vzctl mount CTID

Andà à u cartulare /vz/root/CTID è eseguisce

mount --bind /dev dev && mount --bind /sys sys && mount --bind /proc proc && chroot .

Sottu a radica, crea un schedariu /root/exclude.txt - cuntene una lista di eccezzioni chì ùn ghjunghjeranu micca à u novu servitore.

/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

Cunnette vi KVM_NODE è lanciate u nostru VMcusì chì travaglia è hè accessibile nantu à a reta.

Avà tuttu hè prontu per u trasferimentu. Vai !

mossa 4

Sempre sottu à l'incantu, facemu

rsync --exclude-from="/root/exclude.txt" --numeric-ids -avpogtStlHz --progress -e "ssh -T -o Compression=no -x" / root@KVM_NODE:/

U cumandamentu rsync farà u trasferimentu, speremu chì i chjavi sò chjaru - u trasferimentu hè realizatu cù a preservazione di ligami simbolichi, diritti d'accessu, pruprietarii è gruppi, è a criptografia hè disattivata per una più veloce (pudete aduprà un cifru più veloce, ma questu ùn hè micca cusì impurtante per questu compitu), è ancu a compressione hè disattivata.

Dopu avè finitu rsync, esce da chroot (pressendu ctrl + d) è eseguite

umount dev && umount proc && umount sys && cd .. && vzctl umount CTID

mossa 5

Facemu parechji passi chì ci aiuteranu à lancià a VM dopu u trasferimentu da OpenVZ.
Nantu à i servitori cù Systemd eseguite un cumandamentu chì ci aiuterà à login in una cunsola regulare, per esempiu, attraversu una schermu di u servitore VNC

mv /etc/systemd/system/getty.target.wants/getty@tty2.service /etc/systemd/system/getty.target.wants/getty@tty1.service

Nantu à i servitori CentOS 6 и CentOS 7 Assicuratevi di stallà un novu kernel:

yum install kernel-$(uname -r)

U servitore pò esse caricatu da ellu, ma dopu u trasferimentu pò esse cessatu di travaglià o esse sguassati.

À u servitore CentOS 7 avete bisognu di applicà una piccula correzione per PolkitD, altrimenti u servitore crash per sempre:

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; }

In tutti i servitori, se mod_fcgid per Apache hè statu installatu, faremu una piccula correzione cù diritti, altrimenti i siti chì utilizanu mod_fcgid crash with error 500:

chmod +s `which suexec` && apachectl restart

И последнее, пригодится для Ubuntu, Debian дистрибутивов. Эта ОС может упасть в вечный бут с ошибкой

loop troppu veloce. stringendu un pocu l'esecuzione

spiacevoli, ma facilmente riparati, secondu a versione di u SO.

nantu Debian 9 a correzione si vede cusì:

realicemu

dbus-uuidgen

si avemu un errore

/usr/local/lib/libdbus-1.so.3: a versione `LIBDBUS_PRIVATE_1.10.8′ ùn hè micca trovu

verificate a prisenza di 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.16

se tuttu hè in ordine, facemu

cd /lib/x86_64-linux-gnu
rm -rf libdbus-1.so.3
ln -s libdbus-1.so.3.14.15  libdbus-1.so.3

Se ùn aiuta micca, pruvate a seconda opzione.

A seconda suluzione à u prublema cù stringendu un pocu l'esecuzione подходит практически для всех Ubuntu и Debian дистрибутивов.

Facemu

bash -x /var/lib/dpkg/info/dbus.postinst configure

E per Ubuntu 14, Debian 7 Inoltre, realicemu:

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 и мешал загрузки многих модулей ядра.

mossa 6

Riavvia a VM, verificate in VNC cumu si avanza a carica è, idealmente, tuttu carica senza prublemi. Ancu s'ellu hè pussibule chì certi prublemi specifichi apparisceranu dopu à a migrazione, sò fora di u scopu di stu articulu è seranu curretti quandu si sviluppanu.

Spergu chì sta infurmazione hè utile! 🙂

Source: www.habr.com

Cumprate un hosting affidabile per i siti cù prutezzione DDoS, servitori VPS VDS 🔥 Cumprate un hosting di siti web affidabile cù prutezzione DDoS, servitori VPS VDS | ProHoster