Nola transferitu OpenVZ 6 edukiontzia KVM zerbitzarira buruko minik gabe

KVM birtualizazio osoa duen zerbitzari batera OpenVZ edukiontzi bat bere bizitzan gutxienez behin transferitu behar izan duenak arazo batzuk izan ditu:

  • Informazio gehiena zaharkituta dago eta garrantzitsua zen EOL zikloa aspaldi gainditu zuten OSetarako
  • Sistema eragile desberdinetarako informazio ezberdina beti ematen da, eta migrazioan egon daitezkeen akatsak ez dira inoiz kontuan hartzen
  • Batzuetan, migrazioaren ondoren funtzionatu nahi ez duten konfigurazioei aurre egin behar diezu batzuetan

Zerbitzari bat transferitzen duzunean, beti konpondu dezakezu zerbait berehala, baina kluster osoa transferitzen duzunean?

Artikulu honetan OpenVZ edukiontzi bat KVMra nola migratu behar den esaten saiatuko naiz gutxieneko geldialdiarekin eta arazo guztien konponbide azkar batekin.

Hezkuntza-programa txiki bat: zer da OpenVZ eta zer da KVM?

Ez dugu terminologian sakonduko, baina orokorrean esango dugu:

OpenVZ — birtualizazioa sistema eragilearen mailan, mikrouhinean ere zabaldu dezakezu, ez baitago PUZaren argibiderik eta birtualizazio teknologien beharrik makina ostalarian.

KVM - birtualizazio osoa, PUZaren potentzia guztia erabiliz eta edozer edozer modura birtualizatzeko gai dena, luzera eta zeharka moztuz.

Jendeak uste duenaren aurka, ingurumenean ostatu-hornitzaileak OpenVZ gehiegi salduta dago, baina KVM ez. Zorionez azken honentzat, KVM orain gehiegi salduta dago, bere anaia bezala.

Zer eramango dugu?

OpenVZ-n eskuragarri zeuden sistema eragile guztiak erabili behar izan ziren transferentziarako proba-gai gisa: CentOS (6 eta 7 bertsioak), Ubuntu (14, 16 eta 18 LTS), Debian 7.

Uste zen OpenVZ edukiontzi gehienek LAMP motaren bat exekutatzen zutela jada, eta batzuek software oso zehatz bat ere bazuten. Gehienetan, ISPmanager, VestaCP kontrol panelaren konfigurazioak ziren (eta gehienetan, urtetan eguneratu gabe). Haien transferentzia eskaerak ere kontuan hartu behar dira.

Migrazioa kontserbazioarekin egiten da IP helbideak Edukiontzi eramangarri batentzat, edukiontziaren IP helbidea makina birtualan gordetzen dela eta arazorik gabe funtzionatuko duela suposatuko dugu.

Transferitu aurretik, ziurtatu dena eskura dugula:

  • OpenVZ zerbitzaria, makina ostalarirako root sarbide osoa, edukiontziak gelditzeko/muntatzeko/hasteko/ezabatzeko gaitasuna
  • KVM zerbitzaria, ostalari-makinerako root sarbide osoa, horrek dakarren guztiarekin. Suposatzen da dena jada konfiguratuta dagoela eta prest dagoela.

Has gaitezen transferitzen

Transferitzen hasi aurretik, defini ditzagun nahasmena saihesten lagunduko dizuten terminoak:

KVM_NODE - KVM ostalariaren makina
VZ_NODE - OpenVZ ostalariaren makina
CTID - OpenVZ edukiontzia
VM - KVM zerbitzari birtuala

Migraziorako prestatzea eta makina birtualak sortzea.

Urratsera 1

Edukiontzia nonbaitera eraman behar dugunez, sortuko dugu VM antzeko konfigurazioarekin KVM_NODE.
Garrantzitsua da! CTID-an exekutatzen ari den sistema eragile berean VM bat sortu behar duzu. Adibidez, CTID exekutatzen ari bada Ubuntu 14, orduan VM-n ere instalatu behar duzu Ubuntu 14. Bertsio txikiak ez dira garrantzitsuak eta haien arteko desadostasuna ez da hain kritikoa, baina bertsio nagusiak berdinak izan behar dute.

VM sortu ondoren, paketeak eguneratuko ditugu CTID-n eta VM-n (ez nahastu behar OS-a eguneratzearekin - ez dugu eguneratzen, paketeak soilik eguneratzen ditugu eta, iristen bada, OS bertsioa nagusiaren barruan). bertsioa).

For CentOS Prozesu hau kaltegabea dirudi:

# yum clean all
# yum update -y

Eta ez gutxiago kaltegabea Ubuntu, Debian:

# apt-get update
# apt-get upgrade

Urratsera 2

Instalatu aktibatuta CTID, VZ_NODE и VM erabilgarritasuna rsync:

CentOS:

# yum install rsync -y

Debian, Ubuntu:

# apt-get install rsync -y

Ez dugu ez han eta ez han beste ezer instalatzen.

Urratsera 3

Geldialdia egiten dugu CTID on VZ_NODE taldeak

vzctl stop CTID

Irudia muntatzea CTID:

vzctl mount CTID

Joan /vz/root/ karpetaraCTID eta exekutatu

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

Erroaren azpian, sortu /root/exclude.txt fitxategi bat - zerbitzari berrira iritsiko ez diren salbuespenen zerrenda izango du.

/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

Lotzen gara KVM_NODE eta martxan jarri gure VMfuntziona dezan eta sarean eskuragarri egon dadin.

Orain dena prest dago transferitzeko. Joan!

Urratsera 4

Sorginpean oraindik, antzezten dugu

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

Rsync komandoak transferentzia egingo du, gakoak argiak izatea espero dugu - transferentzia esteka sinbolikoak, sarbide-eskubideak, jabeak eta taldeak gordeta egiten da, eta enkriptatzea desgaituta dago abiadura handiagoa izateko (zifratze azkarrago batzuk erabil ditzakezu, baina hau ez da hain garrantzitsua zeregin honetarako) , baita konpresioa desgaituta dago.

Rsync osatu ondoren, irten chroot-etik (ctrl+d sakatuz) eta exekutatu

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

Urratsera 5

Egin ditzagun hainbat urrats OpenVZ-tik transferitu ondoren VM-a abiarazten lagunduko digutenak.
duten zerbitzarietan Systemd exekuta dezagun ohiko kontsola batean saioa hasten lagunduko digun komando bat, adibidez, VNC zerbitzariaren pantaila baten bidez

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

Zerbitzarietan CentOS 6 и CentOS 7 Ziurtatu kernel berri bat instalatzen duzula:

yum install kernel-$(uname -r)

Zerbitzaria bertatik kargatu daiteke, baina transferentziaren ondoren funtzionatzeari utzi edo ezabatu egin daiteke.

Zerbitzarian CentOS 7 PolkitD-rako konponketa txiki bat aplikatu behar duzu, bestela zerbitzaria betiko huts egingo du:

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

Zerbitzari guztietan, Apacherako mod_fcgid instalatuta badago, eskubideekin konponketa txiki bat egingo dugu, bestela mod_fcgid erabiltzen duten guneek 500 errorearekin huts egingo dute:

chmod +s `which suexec` && apachectl restart

Eta azkenik, baliagarria izango da Ubuntu, Debian banaketak. Sistema eragile honek abio iraunkor batean huts egin dezake errore batekin

looping azkarregi. exekuzioa apur bat murriztea

desatsegina, baina erraz konpontzen da, OS bertsioaren arabera.

On Debian 9 konponketak honelako itxura du:

burutzen dugu

dbus-uuidgen

akatsen bat jasotzen badugu

/usr/local/lib/libdbus-1.so.3: `LIBDBUS_PRIVATE_1.10.8′ bertsioa ez da aurkitu

egiaztatu LIBDBUS-en presentzia

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

dena ondo badago, egiten dugu

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

Ez badu laguntzen, saiatu bigarren aukerarekin.

Arazoaren bigarren irtenbidea exekuzioa apur bat murriztea ia guztiontzat egokia Ubuntu и Debian banaketak.

Burutzen dugu

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

Eta horretarako Ubuntu 14, Debian 7 Gainera, honako hauek egiten ditugu:

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

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

Zer egin dugu? Abiarazteko falta zen mezu-busa leheneratu dugu. Debian/Ubuntu eta modules_dep kendu zuen, OpenVZ-tik zetorrena eta kernel-modulu asko kargatzea eragozten zuena.

Urratsera 6

VM berrabiaraziko dugu, VNCn egiaztatuko dugu kargak nola egiten duen aurrera eta, hoberena, dena arazorik gabe kargatuko da. Migrazioaren ondoren arazo zehatz batzuk agertzea posible bada ere, artikulu honen esparrutik kanpo daude eta sortu ahala zuzenduko dira.

Informazio hau erabilgarria izatea espero dut! 🙂

Iturria: www.habr.com

Erosi hosting fidagarria DDoS babesa duten guneetarako, VPS VDS zerbitzariak 🔥 Erosi webguneentzako ostatu fidagarria DDoS babesarekin, VPS VDS zerbitzariak | ProHoster