Kako prenijeti OpenVZ 6 spremnik na KVM poslužitelj bez glavobolje

Svatko tko je barem jednom u životu trebao prenijeti OpenVZ spremnik na poslužitelj s potpunom KVM virtualizacijom, naišao je na neke probleme:

  • Većina informacija jednostavno je zastarjela i bila je relevantna za operativne sustave koji su odavno prošli EOL ciklus
  • Za različite operativne sustave uvijek se daju različite informacije, a moguće greške tijekom migracije nikada se ne razmatraju
  • Ponekad se morate suočiti s konfiguracijama koje s vremena na vrijeme ne žele raditi nakon migracije

Kad prenosiš 1 server uvijek možeš nešto popraviti u hodu, a kad prenosiš cijeli klaster?

U ovom ću vam članku pokušati reći kako ispravno migrirati OpenVZ spremnik na KVM s minimalnim zastojem i brzim rješenjem za sve probleme.

Mali obrazovni program: što je OpenVZ, a što KVM?

Nećemo ulaziti duboko u terminologiju, već ćemo reći općenito:

OpenVZ — virtualizacija na razini operativnog sustava, možete ga čak postaviti na mikrovalnu pećnicu, budući da nema potrebe za CPU uputama i tehnologijama virtualizacije na glavnom računalu.

KVM - puna virtualizacija, koja koristi svu snagu CPU-a i sposobna je virtualizirati bilo što, na bilo koji način, sjeći uzduž i poprijeko.

Suprotno uvriježenom mišljenju, u okolišu pružatelji usluga hostinga OpenVZ je preprodan, ali KVM nije. Srećom za potonje, KVM je sada preprodan jednako dobro kao i njegov brat.

Što ćemo prenijeti?

Cijeli niz operativnih sustava dostupnih na OpenVZ-u morao se koristiti kao testni subjekti za prijenos: CentOS (verzije 6 i 7), Ubuntu (14., 16. i 18. LTS), Debian 7.

Pretpostavljalo se da većina OpenVZ spremnika već pokreće neku vrstu LAMP-a, a neki čak imaju vrlo specifičan softver. Najčešće su to bile konfiguracije s ISPmanagerom, VestaCP kontrolnom pločom (i najčešće neažurirane godinama). Njihovi zahtjevi za transfer također se moraju uzeti u obzir.

Migracija se provodi uz očuvanje IP adrese Za prijenosni kontejner pretpostavit ćemo da je IP adresa kontejnera zadržana na virtualnom stroju i da će raditi bez problema.

Prije prijenosa provjerimo imamo li sve pri ruci:

  • OpenVZ poslužitelj, potpuni root pristup glavnom računalu, mogućnost zaustavljanja/montaže/pokretanja/brisanja spremnika
  • KVM poslužitelj, puni root pristup glavnom računalu, sa svime što to podrazumijeva. Pretpostavlja se da je sve već konfigurirano i spremno za rad.

Počnimo s prijenosom

Prije nego započnemo prijenos, definirajmo pojmove koji će vam pomoći da izbjegnete zabunu:

KVM_ČVOR - KVM host stroj
VZ_ČVOR - OpenVZ host stroj
CTID - OpenVZ spremnik
VM - KVM virtualni poslužitelj

Priprema za migraciju i stvaranje virtualnih strojeva.

Korak 1

Budući da moramo negdje premjestiti spremnik, napravit ćemo VM sa sličnom konfiguracijom KVM_ČVOR.
Važno! Morate stvoriti virtualni stroj na istom operativnom sustavu koji trenutno radi na CTID-u. Na primjer, ako je CTID pokrenut Ubuntu 14, onda ga morate instalirati i na VM Ubuntu 14. Manje verzije nisu važne i njihova razlika nije toliko kritična, ali glavne verzije moraju biti iste.

Nakon izrade VM-a, ažurirat ćemo pakete na CTID-u i na VM-u (ne treba brkati s ažuriranjem OS-a - ne ažuriramo ga, ažuriramo samo pakete i, ako stigne, verziju OS-a unutar glavnog verzija).

za CentOS Ovaj proces izgleda bezopasno:

# yum clean all
# yum update -y

I ništa manje bezopasno za Ubuntu, Debian:

# apt-get update
# apt-get upgrade

Korak 2

Instalirajte na CTID, VZ_ČVOR и VM korisnost rsync:

CentOS:

# yum install rsync -y

Debian, Ubuntu:

# apt-get install rsync -y

Ništa drugo ne ugrađujemo ni tamo ni tamo.

Korak 3

Zastajemo CTID na VZ_ČVOR Tim

vzctl stop CTID

Montaža slike CTID:

vzctl mount CTID

Idite u mapu /vz/root/CTID i izvršiti

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

Ispod korijena kreirajte datoteku /root/exclude.txt - sadržavat će popis iznimaka koji neće doći do novog poslužitelja

/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

Poveži se s KVM_ČVOR i pokrenuti naš VMtako da radi i bude dostupan preko mreže.

Sada je sve spremno za prijenos. Ići!

Korak 4

Još uvijek pod čarolijom, nastupamo

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

Naredba rsync će izvršiti prijenos, nadamo se da su ključevi jasni - prijenos se provodi uz očuvanje simboličkih poveznica, prava pristupa, vlasnika i grupa, a enkripcija je onemogućena radi veće brzine (možete koristiti neku bržu šifru, ali ovo nije toliko važno za ovaj zadatak), kao i da je kompresija onemogućena.

Nakon završetka rsync, izađite iz chroota (pritiskom na ctrl+d) i izvedite

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

Korak 5

Izvršimo nekoliko koraka koji će nam pomoći da pokrenemo VM nakon prijenosa iz OpenVZ-a.
Na poslužiteljima sa Systemd izvršimo naredbu koja će nam pomoći da se prijavimo na običnu konzolu, na primjer, preko zaslona VNC poslužitelja

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

Na serverima CentOS 6 и CentOS 7 Svakako instalirajte novi kernel:

yum install kernel-$(uname -r)

Poslužitelj se može učitati s njega, ali nakon prijenosa može prestati raditi ili biti izbrisan.

Na serveru CentOS 7 trebate primijeniti mali popravak za PolkitD, inače će se poslužitelj zauvijek srušiti:

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

Na svim poslužiteljima, ako je instaliran mod_fcgid za Apache, izvršit ćemo mali popravak s pravima, inače će se stranice koje koriste mod_fcgid srušiti s pogreškom 500:

chmod +s `which suexec` && apachectl restart

I na kraju, bit će korisno za Ubuntu, Debian distribucije. Ovaj OS može se srušiti i dovesti do trajnog pokretanja s greškom

petlja prebrzo. prigušivanje izvršenja malo

neugodno, ali lako popravljivo, ovisno o verziji OS-a.

Na Debian 9 popravak izgleda ovako:

provodimo

dbus-uuidgen

ako dobijemo grešku

/usr/local/lib/libdbus-1.so.3: verzija `LIBDBUS_PRIVATE_1.10.8' nije pronađena

provjerite prisutnost LIBDBUS-a

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

ako je sve u redu, mi to radimo

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

Ako ne pomogne, pokušajte drugu opciju.

Drugo rješenje problema sa prigušivanje izvršenja malo pogodno za gotovo sve Ubuntu и Debian distribucije.

Mi izvršavamo

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

I za Ubuntu 14, Debian 7 Dodatno izvodimo:

adduser --system --home /nonexistent --no-create-home --disabled-password --group messagebus

rm -rf /etc/init.d/modules_dep.sh 

Što smo učinili? Obnovili smo sabirnicu poruka koja je nedostajala za pokretanje. Debian/Ubuntu i uklonio modules_dep, koji je dolazio iz OpenVZ-a i sprječavao učitavanje mnogih kernel modula.

Korak 6

Restartamo VM, provjerimo u VNC-u kako napreduje učitavanje i, idealno, sve će se učitati bez problema. Iako je moguće da će se neki specifični problemi pojaviti nakon migracije, oni su izvan opsega ovog članka i bit će ispravljeni čim se pojave.

Nadam se da su ove informacije korisne! 🙂

Izvor: www.habr.com

Kupite pouzdan hosting za stranice s DDoS zaštitom, VPS VDS poslužiteljima 🔥 Kupite pouzdan web hosting sa DDoS zaštitom, VPS VDS servere | ProHoster