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.

Ostalaritza-hornitzaileen artean OpenVZ gehiegi saldu egingo dela uste denaren aurka, KVM-k ez du egingo; azken honen zorionez, gaur egun KVM ez da bere anaia baino okerrago saltzen.

Zer eramango dugu?

Transferentziarako proba-gai gisa, OpenVZn ​​eskuragarri dauden sistema eragileen baso osoa erabili behar izan dugu: 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 transferitutako edukiontziaren IP helbidea gordeta egiten da; edukiontziak zuen IPa VMn gordeta dagoela 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! Une honetan CTID-en exekutatzen ari den sistema eragilean VM bat sortu behar duzu. Adibidez, Ubuntu 14 CTIDean instalatuta badago, Ubuntu 14 instalatu behar da VMn.Bertsio txikiak ez dira garrantzitsuak eta haien desadostasuna ez da hain kritikoa, baina bertsio nagusiek 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).

CentOSentzat prozesu honek kaltegabea dirudi:

# yum clean all
# yum update -y

Eta ez da gutxiago kaltegabea Ubuntu eta Debianentzat:

# 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/[email protected] /etc/systemd/system/getty.target.wants/[email protected]

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 azken gauza erabilgarria da Ubuntu eta Debian banaketetarako. Baliteke sistema eragile hau betiko abiarazte batean huts egitea 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 Ubuntu eta Debian banaketa ia guztietarako egokia.

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? Messagebus berreskuratu genuen, Debian/Ubuntu exekutatzeko falta zena, eta OpenVZ-tik zetorren modules_dep kendu eta nukleoko modulu askoren kargatzea oztopatzen zuen.

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

Gehitu iruzkin berria