Hur man överför OpenVZ 6-behÄllare till KVM-server utan huvudvÀrk

Alla som har behövt överföra en OpenVZ-behÄllare till en server med full KVM-virtualisering minst en gÄng i sitt liv har stött pÄ nÄgra problem:

  • Det mesta av informationen Ă€r helt enkelt förĂ„ldrad och var relevant för operativsystem som lĂ€nge hade passerat EOL-cykeln
  • Olika information tillhandahĂ„lls alltid för olika operativsystem, och eventuella fel under migreringen beaktas aldrig
  • Ibland mĂ„ste man hantera konfigurationer som dĂ„ och dĂ„ inte vill fungera efter migreringen

NÀr du överför 1 server kan du alltid fixa nÄgot i farten, men nÀr du överför ett helt kluster?

I den hÀr artikeln kommer jag att försöka berÀtta hur du korrekt migrerar en OpenVZ-behÄllare till KVM med minimal driftstopp och en snabb lösning pÄ alla problem.

Ett litet utbildningsprogram: vad Àr OpenVZ och vad Àr KVM?

Vi kommer inte att gÄ djupt in i terminologin, utan kommer att sÀga i allmÀnna termer:

OpenVZ — virtualisering pĂ„ operativsystemnivĂ„, du kan till och med distribuera den pĂ„ en mikrovĂ„gsugn, eftersom det inte finns nĂ„got behov av CPU-instruktioner och virtualiseringstekniker pĂ„ vĂ€rddatorn.

KVM - FullfjÀdrad virtualisering, som anvÀnder all kraft frÄn CPU:n och kan virtualisera vad som helst, hur som helst, skÀra det pÄ lÀngden och tvÀren.

I motsats till vad mĂ„nga tror, ​​i miljön webbhotellleverantörer OpenVZ Ă€r översĂ„lt, men det Ă€r inte KVM. Lyckligtvis för den senare Ă€r KVM nu lika översĂ„lt som sin bror.

Vad ska vi bÀra över?

Hela skogen av operativsystem som finns tillgÀngliga pÄ OpenVZ var tvungna att anvÀndas som testpersoner för överföringen: CentOS (versionerna 6 och 7), Ubuntu (14, 16 och 18 LTS), Debian 7.

Det antogs att de flesta av OpenVZ-behÄllarna redan körde nÄgon form av LAMPA, och vissa hade till och med mycket specifik programvara. Oftast var dessa konfigurationer med ISPmanager, VestaCP kontrollpanel (och oftast inte uppdaterade pÄ flera Är). Deras önskemÄl om överföring mÄste ocksÄ beaktas.

Migrering utförs med bevarande IP-adresser För en portabel behÄllare antar vi att behÄllarens IP-adress bevaras pÄ den virtuella datorn och fungerar utan problem.

Innan du överför, lÄt oss se till att vi har allt till hands:

  • OpenVZ-server, full root-Ă„tkomst till vĂ€rddatorn, möjlighet att stoppa/montera/starta/ta bort behĂ„llare
  • KVM-server, full root-Ă„tkomst till vĂ€rddatorn, med allt vad det innebĂ€r. Det antas att allt redan Ă€r konfigurerat och redo att gĂ„.

LÄt oss börja överföra

Innan vi börjar överföringen, lÄt oss definiera termer som hjÀlper dig att undvika förvirring:

KVM_NODE - KVM-vÀrdmaskin
VZ_NODE - OpenVZ vÀrdmaskin
CTID - OpenVZ container
VM - Virtuell KVM-server

Förbereder migrering och skapar virtuella maskiner.

Steg 1

Eftersom vi behöver flytta behÄllaren nÄgonstans skapar vi VM med en liknande konfiguration som KVM_NODE.
Viktigt! Du mÄste skapa en virtuell maskin pÄ samma operativsystem som för nÀrvarande körs pÄ CTID:t. Om till exempel CTID:t körs Ubuntu 14, dÄ mÄste du installera det pÄ den virtuella maskinen ocksÄ Ubuntu 14. Mindre versioner Àr inte viktiga och deras avvikelser Àr inte sÄ kritiska, men större versioner mÄste vara desamma.

Efter att ha skapat den virtuella datorn kommer vi att uppdatera paketen pÄ CTID och pÄ den virtuella datorn (inte att förvÀxla med uppdatering av operativsystemet - vi uppdaterar inte det, vi uppdaterar bara paketen och, om det kommer, OS-versionen i huvudet version).

för CentOS Denna process ser harmlös ut:

# yum clean all
# yum update -y

Och inte mindre ofarlig för Ubuntu, Debian:

# apt-get update
# apt-get upgrade

Steg 2

Installera pÄ CTID, VZ_NODE О VM verktyg rsync:

CentOS:

# yum install rsync -y

Debian, Ubuntu:

# apt-get install rsync -y

Vi installerar inget annat varken dÀr eller dÀr.

Steg 3

Vi gör ett stopp CTID pÄ VZ_NODE team

vzctl stop CTID

Montering av bilden CTID:

vzctl mount CTID

GÄ till mappen /vz/root/CTID och verkstÀlla

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

Under roten, skapa en fil /root/exclude.txt - den kommer att innehÄlla en lista med undantag som inte kommer till den nya servern

/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

Koppla till KVM_NODE och lansera vÄr VMsÄ att den fungerar och Àr tillgÀnglig över nÀtverket.

Nu Àr allt klart för överföring. GÄ!

Steg 4

Fortfarande under förtrollning upptrÀder vi

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

Kommandot rsync kommer att utföra överföringen, vi hoppas att nycklarna Àr tydliga - överföringen utförs med bevarande av symboliska lÀnkar, ÄtkomstrÀttigheter, Àgare och grupper, och kryptering Àr inaktiverad för högre hastighet (du kan anvÀnda nÄgot snabbare chiffer, men detta Àr inte sÄ viktigt för den hÀr uppgiften), liksom komprimering Àr inaktiverat.

NÀr du har slutfört rsync, avsluta frÄn chroot (genom att trycka pÄ ctrl+d) och kör

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

Steg 5

LÄt oss utföra flera steg som hjÀlper oss att starta den virtuella datorn efter överföring frÄn OpenVZ.
PÄ servrar med SYSTEMD lÄt oss köra ett kommando som hjÀlper oss att logga in pÄ en vanlig konsol, till exempel via en VNC-serverskÀrm

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

PÄ servrar CentOS 6 О CentOS 7 Se till att installera en ny kÀrna:

yum install kernel-$(uname -r)

Servern kan laddas frÄn den, men efter överföringen kan den sluta fungera eller tas bort.

PÄ servern CentOS 7 du mÄste tillÀmpa en liten fix för PolkitD, annars kommer servern att krascha för alltid:

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

PÄ alla servrar, om mod_fcgid för Apache installerades, kommer vi att utföra en liten fix med rÀttigheter, annars kommer webbplatser som anvÀnder mod_fcgid att krascha med fel 500:

chmod +s `which suexec` && apachectl restart

Och slutligen kommer det att vara anvÀndbart för Ubuntu, Debian distributioner. Detta operativsystem kan krascha och starta permanent med ett felmeddelande

loopar för snabbt. strypande utförande lite

obehagligt, men lÀtt att fixa, beroende pÄ OS-versionen.

PÄ Debian 9 fixen ser ut sÄ hÀr:

vi genomför

dbus-uuidgen

om vi fÄr ett fel

/usr/local/lib/libdbus-1.so.3: version `LIBDBUS_PRIVATE_1.10.8' hittades inte

kontrollera förekomsten av 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

om allt Àr i sin ordning gör vi det

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

Om det inte hjÀlper, prova det andra alternativet.

Den andra lösningen pÄ problemet med strypande utförande lite lÀmplig för nÀstan alla Ubuntu О Debian utdelningar.

Vi genomför

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

Och för Ubuntu 14, Debian 7 Dessutom utför vi:

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

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

Vad gjorde vi? Vi ÄterstÀllde meddelandebussen, som saknades vid uppstart. Debian/Ubuntu och tog bort modules_dep, som kom frÄn OpenVZ och förhindrade att mÄnga kÀrnmoduler laddades.

Steg 6

Vi startar om den virtuella datorn, kontrollerar i VNC hur laddningen fortskrider och, idealiskt, kommer allt att laddas utan problem. Även om det Ă€r möjligt att vissa specifika problem kommer att dyka upp efter migreringen ligger de utanför denna artikels omfattning och kommer att korrigeras nĂ€r de uppstĂ„r.

Jag hoppas att denna information Ă€r anvĂ€ndbar! 🙂

KĂ€lla: will.com

Köp pĂ„litlig hosting för webbplatser med DDoS-skydd, VPS VDS-servrar đŸ”„ Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar | ProHoster