Kuidas edastada OpenVZ 6 konteiner KVM serverisse murevabalt

Iga, kellel on kunagi elus olnud vajadus viia OpenVZ konteiner serverisse, kus on tÀieÔiguslik KVM virtualiseerimine, on silmitsi seisnud mitmete probleemidega:

  • Enamik teavet on lihtsalt vananenud ja oli asjakohane juba ammu möödunud EOL tsĂŒkli jaoks.
  • Erinevate operatsioonisĂŒsteemide kohta on alati erinev teave ja kunagi ei arvestata migratsiooni vĂ”imalikke vigu.
  • MĂ”nikord tuleb tegeleda konfiguratsioonidega, mis pĂ€rast migratsiooni ei pruugi lihtsalt töötada.

Kui viid ĂŒhe serveri, on alati vĂ”imalik midagi jooksvalt parandada, aga kui viid terve kluster?

Selles artiklis pĂŒĂŒan ma rÀÀkida, kuidas Ă”igesti migreerida OpenVZ konteinerit KVM-ile minimaalse seisaku ja kiire probleemilahendusega.

VĂ€ike selgitus: mis on OpenVZ ja mis on KVM?

Ärme lasku terminoloogiasse, vaid ĂŒtleme ĂŒldiselt:

OpenVZ — virtualiseerimine operatsioonisĂŒsteemi tasemel, mille saab isegi mikrolaineahjus vĂ€lja arendada, kuna ei ole vajadust CPU juhiste ja virtualiseerimise tehnoloogiate jĂ€rele hostmasinas.

KVM — tĂ€ieĂ”iguslik virtualiseerimine, mis kasutab kogu CPU jĂ”udlust ja suudab virtualiseerida kĂ”ike, nagu soovib, lĂ”igata mööda ja ĂŒle.

Vaatamata levinud arvamusele, et OpenVZ ĂŒle mĂŒĂŒakse, aga KVM mitte — Ă”nneks viimaste jaoks, KVM mĂŒĂŒakse nĂŒĂŒd ĂŒle mitte vĂ€hem kui selle Ă”e. hostingu pakkujate Mida me viime?

Eksperimentideks viimiseks tuli kasutada kogu OpenVZ-s saadaval olevate operatsioonisĂŒsteemide 'metsa': CentOS (6 ja 7 versioon), Ubuntu (14, 16 ja 18 LTS), Debian 7.

Eeldati, et suuremal osal OpenVZ konteineritest töötab enam-vÀhem LAMP, ja osa neist on isegi vÀga spetsiifiline tarkvara. KÔige sagedamini olid need konfiguratsioonid ISPmanager, VestaCP juhtpaneeliga (ja kÔige sagedamini, aastaid mitte uuendatud). Tuleb arvestada ka nende nÔudmistega migratsiooni osas.

Migratsioon toimub konteineri sÀilitamisega, eeldame, et konteineri IP sÀilib VM-is ja töötab probleemideta.

Enne ĂŒleviimist veendume, et meil on kĂ”ik olemas: IP-aadressid OpenVZ server, tĂ€ielik root-juurdepÀÀs hostmasinale, vĂ”imalus peatada/montida/jaotada/kustutada konteinerid.

KVM server, tÀielik root-juurdepÀÀs hostmasinale, kÔigi sellega kaasnevate Ôigustega. Eeldatakse, et kÔik on juba seadistatud ja töökorras.

  • Migratsiooni korral ensureerime, et kĂ”ik nĂ”uded on tĂ€idetud.
  • Selle kohta eeldatakse, et kĂ”ik on juba seadistatud ja töötavat.

Alustame ĂŒleviimist

Enne ĂŒleviimise alustamist mÀÀratleme mĂ”isted, et mitte segadusse minna:

KVM_NODE — KVM hostmasin
VZ_NODE — OpenVZ hostmasin
CTID — OpenVZ konteiner
VM — KVM virtuaalserver

Valmistame ĂŒleviimiseks ette ja loome virtuaalmasinad.

Samm 1

Kuna me peame konteineri kuhugi ĂŒleviima, loome VM samade parameetritega KVM_NODE.
Oluline! Virtuaalmasin tuleb luua just selle operatsioonisĂŒsteemi peale, mis praegu töötab CTID-l. NĂ€iteks kui CTID-l on paigaldatud Ubuntu 14, siis tuleb ka VM-le paigaldada Ubuntu 14. Alaversiooni mitte ĂŒhtimine ei ole nii kriitiline, kuid pĂ”hiversioonid peavad olema samad.

PĂ€rast VM-i loomist teeme paketihaldust nii CTID-l kui ka VM-is (Ă€rge segage operatsioonisĂŒsteemi uuendamisega - seda me ei uuenda, uuendame ainult pakette ja vajadusel versiooni pĂ”hiversioonis).

CentOS-il nÀeb see protsess ohutult vÀlja:

# yum clean all
# yum update -y

Ja mitte vÀhem ohutult Ubuntu, Debian jaoks:

# apt-get update
# apt-get upgrade

Samm 2

Paigaldame CTID, VZ_NODE ja VM utiliit rsync:

CentOS:

# yum install rsync -y

Debian, Ubuntu:

# apt-get install rsync -y

Roheline valik ei ole vajalik, ei seal, ega seal.

Samm 3

Teostame peatamise CTID . Tundub, et VZ_NODE kÀsklusega

vzctl stop CTID

Mountimme pildi CTID:

vzctl mount CTID

Liigume kausta /vz/root/CTID ja teeme

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

Chrooti all loome faili /root/exclude.txt — see sisaldab vĂ€lja jĂ€etavate objektide nimekirja, mis ei satu uuele serverile

/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

Ühendume KVM_NODE ja kĂ€ivitame meie VM, et see töötaks ja oleks vĂ”rgus kergesti ligipÀÀsetav.

NĂŒĂŒd on kĂ”ik ĂŒleviimiseks valmis. LĂ€heme!

Samm 4

Olles endiselt chrooti all, teeme

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

Rsync kĂ€sk viib ĂŒleviimise lĂ€bi, loodetavasti on vĂ”tmed arusaadavad — ĂŒleviimine toimub sĂŒmboollinkide, Ă”iguste, omanike ja gruppide sĂ€ilitamisega ning krĂŒpteerimine on vĂ€lja lĂŒlitatud suurema kiirusena (vĂ”iks kasutada mĂ”nda kiiremat cipherit, kuid see ei ole antud ĂŒlesande raames nii oluline), samas on vĂ€lja lĂŒlitatud ka kompressioon.

PÀrast rsynci kÀsku lÔpetamist vÀljumme chrootist (vajutades ctrl+d) ja teeme

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

Samm 5

Teeme mĂ”ned toimingud, mis aitavad meil VM-i kĂ€ivitamisel pĂ€rast OpenVZ ĂŒleviimist.
Serverites, kus on Systemd teeme kÀsu, mis aitab meil tavalisel konsoolil sisse logida, nÀiteks VNC serveri ekraani kaudu

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

CentOS 6 serverites CentOS 6 ja CentOS 7 me kindlasti installime vÀrske tuuma:

yum install kernel-$(uname -r)

Server vĂ”ib olla sellest kĂ€ivitatud, kuid pĂ€rast ĂŒlekannet vĂ”ib see lĂ”petada töötamise vĂ”i olla eemaldatud.

Serveris CentOS 7 on vajalik rakendada vÀike fikseering PolkitD-le, vastasel juhul kukub server igavesse boot'i:

getent group polkitd >/dev/null && echo -e "e[1;32mpolkitd rĂŒhm juba eksisteerib[e[0m" || { groupadd -r polkitd && echo -e "e[1;33mLisatud puuduv polkitd rĂŒhm[e[0m" || echo -e "e[1;31mPolkitd rĂŒhma lisamine ebaĂ”nnestus[e[0m"; }

getent passwd polkitd >/dev/null 
&& echo -e "e[1;32mpolkitd kasutaja juba eksisteerib[e[0m" || { useradd -r -g polkitd -d / -s /sbin/nologin -c "Kasutaja polkitd jaoks" polkitd && echo -e "e[1;33mLisatud puuduv polkitd kasutaja[e[0m" || echo -e "e[1;31mPolkitd kasutaja lisamine ebaÔnnestus[e[0m"; }

rpm -Va polkit* && echo -e "e[1;32mpolkit* rpm kontroll lÀbis[e[0m" || { echo -e "e[1;33mResetime polkit* rpm kasutaja/grupi omandamise & Ôigused[e[0m"; rpm --setugids polkit polkit-pkla-compat; rpm --setperms polkit polkit-pkla-compat; }

KÔikides serverites, kui Apache'ile on installeeritud mod_fcgid, teeme vÀikese fikseeringu Ôigustega, vastasel juhul kukuvad saidid, mis kasutavad mod_fcgid, 500 veaga:

chmod +s `which suexec` && apachectl restart

Ja viimane, mis on kasulik Ubuntu ja Debian’i distributsioonide jaoks. See opsĂŒsteem vĂ”ib langeda igavesse boot'i veaga

looping too fast. throttling execution a little

ebameeldiv, kuid kergesti parandatav, sĂ”ltuvalt opsĂŒsteemi versioonist.

Pealehe Debian 9 parandus nÀeb vÀlja selline:

teeme:

dbus-uuidgen

kui saame vea

/usr/local/lib/libdbus-1.so.3: version `LIBDBUS_PRIVATE_1.10.8â€Č not found

kontrollime LIBDBUS olemasolu

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 <-- see on vajalik
libdbus-1.so.3.14.16

kui kÔik on korras, teeme:

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

Kui ei aita — proovime teist varianti.

Teine variant probleemi lahendamiseks throttling execution a little sobib praktiliselt kĂ”ikidele Ubuntu ja Debian’i distributsioonidele.

TĂ€idame

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

Ja Ubuntu 14, Debian 7 lisaks teeme:

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

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

Mida me tegime? Taastasime messagebus'i, mida ei olnud Debian'i/Ubuntu kÀivitamiseks ning eemaldasime modules_dep'i, mis tuli OpenVZ-st ja takistas paljude tuumamoodulite laadimist.

Samm 6

TaaskĂ€ivitame VM-i, kontrollime VNC-is, kuidas laadimine toimub ja ideaalis — kĂ”ik laadib ilma probleemideta. Kuigi pĂ€rast migratsiooni vĂ”ivad mĂ”ningad spetsiifilised probleemid ilmneda — kuid need ei kuulu selle artikli rikka, need lahendatakse jooksvalt.

Loodan, et see teave on kasulik! 🙂

Allikas: habr.com

Osta usaldusvÀÀrne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid đŸ”„ Osta usaldusvÀÀrne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid | ProHoster