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 -yI ništa manje bezopasno za Ubuntu, Debian:
# apt-get update
# apt-get upgradeKorak 2
Instalirajte na CTID, VZ_ČVOR и VM korisnost rsync:
CentOS:
# yum install rsync -yDebian, Ubuntu:
# apt-get install rsync -yNišta drugo ne ugrađujemo ni tamo ni tamo.
Korak 3
Zastajemo CTID na VZ_ČVOR Tim
vzctl stop CTIDMontaža slike CTID:
vzctl mount CTIDIdite 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-ens3Povež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 CTIDKorak 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.serviceNa 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 restartI 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-uuidgenako 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.16ako 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.3Ako 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 configureI 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
