Hvernig á að flytja OpenVZ 6 gám yfir á KVM miðlara án höfuðverks

Allir sem hafa þurft að flytja OpenVZ gám yfir á netþjón með fullri KVM sýndarvæðingu að minnsta kosti einu sinni á ævinni hefur lent í nokkrum vandamálum:

  • Flestar upplýsingarnar eru einfaldlega úreltar og áttu við um stýrikerfi sem höfðu lengi staðist EOL hringrásina
  • Mismunandi upplýsingar eru alltaf gefnar fyrir mismunandi stýrikerfi og hugsanlegar villur við flutning eru aldrei teknar til greina
  • Stundum þarftu að takast á við stillingar sem annað slagið vilja ekki virka eftir flutning

Þegar þú flytur 1 server geturðu alltaf lagað eitthvað á flugu, en þegar þú flytur heilan klasa?

Í þessari grein mun ég reyna að segja þér hvernig á að flytja OpenVZ ílát rétt yfir í KVM með lágmarks niður í miðbæ og skjót lausn á öllum vandamálum.

Lítið fræðsluforrit: hvað er OpenVZ og hvað er KVM?

Við munum ekki fara djúpt í hugtök, en munum segja almennt:

OpenVZ — sýndarvæðing á stýrikerfisstigi, þú getur jafnvel sett hana á örbylgjuofn, þar sem engin þörf er á örgjörvaleiðbeiningum og sýndarvæðingartækni á hýsingarvélinni.

KVM - fullgild sýndarvæðing, sem notar allan kraft örgjörvans og fær um að virkja hvað sem er, hvernig sem er, klippa það langsum og þversum.

Ólíkt því sem almennt er talið, í umhverfinu hýsingaraðilar OpenVZ er ofselt, en KVM ekki. Sem betur fer fyrir hið síðarnefnda er KVM nú ofselt alveg eins vel og bróðir sinn.

Hvað munum við bera yfir?

В качестве подопытных для переноса пришлось использовать весь лес операционных систем, которые доступны на OpenVZ: CentOS (6 и 7 версии), Ubuntu (14, 16 и 18 LTS), Debian 7.

Gert var ráð fyrir að flestir OpenVZ gámana væru nú þegar í gangi einhvers konar LAMPA og sumir voru jafnvel með mjög sérstakan hugbúnað. Oftast voru þetta stillingar með ISPmanager, VestaCP stjórnborði (og oftast ekki uppfært í mörg ár). Einnig þarf að taka tillit til flutningsbeiðna þeirra.

Flutningur fer fram með varðveislu IP tölur Fyrir flytjanlegan ílát gerum við ráð fyrir að IP-tala ílátsins sé varðveitt á sýndarvélinni og virki án vandræða.

Áður en þú flytur, skulum við ganga úr skugga um að við höfum allt við höndina:

  • OpenVZ netþjónn, fullur rótaraðgangur að hýsingarvélinni, getu til að stöðva/tengja/ræsa/eyða gámum
  • KVM þjónn, fullur rótaraðgangur að hýsingarvélinni, með öllu sem það gefur til kynna. Gert er ráð fyrir að allt sé þegar stillt og tilbúið til notkunar.

Byrjum að flytja

Áður en við byrjum flutninginn skulum við skilgreina hugtök sem hjálpa þér að forðast rugling:

KVM_NODE - KVM gestgjafi vél
VZ_NODE - OpenVZ hýsingarvél
CTID - OpenVZ gámur
VM - KVM sýndarþjónn

Að undirbúa flutning og búa til sýndarvélar.

Skref 1

Þar sem við þurfum að flytja ílátið eitthvert, munum við búa til VM með svipaða uppsetningu og KVM_NODE.
Mikilvægt! Создавать VM нужно именно на той операционной системе, которая сейчас крутится на CTID. Например, если на CTID установлена Ubuntu 14, то и на VM нужно ставить Ubuntu 14. Минорные версии не важны и их несовпадение не столь критично, а вот мажорные — должны быть одинаковыми.

Eftir að VM er búið til munum við uppfæra pakkana á CTID og á VM (ekki að rugla saman við uppfærslu stýrikerfisins - við uppfærum það ekki, við uppfærum aðeins pakkana og, ef það kemur, stýrikerfisútgáfan innan aðal útgáfa).

Fyrir CentOS этот процесс выглядит безобидно:

# yum clean all
# yum update -y

И не менее безобидно для Ubuntu, Debian:

# apt-get update
# apt-get upgrade

Skref 2

Settu upp á CTID, VZ_NODE и VM gagnsemi rsync:

CentOS:

# yum install rsync -y

Debian, Ubuntu:

# apt-get install rsync -y

Við erum ekki að setja neitt annað upp hvorki þar né þar.

Skref 3

Við stoppum CTID á VZ_NODE teymið

vzctl stop CTID

Að setja myndina upp CTID:

vzctl mount CTID

Farðu í /vz/root/ möppunaCTID og framkvæma

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

Undir rótinni skaltu búa til skrá /root/exclude.txt - hún mun innihalda lista yfir undantekningar sem munu ekki komast á nýja netþjóninn

/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

Við tengjumst KVM_NODE og ræstu okkar VMþannig að það virki og sé aðgengilegt yfir netið.

Nú er allt tilbúið til flutnings. Farðu!

Skref 4

Enn á töfum, við framkvæmum

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

rsync skipunin mun framkvæma flutninginn, við vonum að lyklarnir séu skýrir - flutningurinn fer fram með varðveislu tákntengla, aðgangsréttinda, eigenda og hópa og dulkóðun er óvirk til að auka hraða (þú gætir notað hraðari dulmál, en þetta er ekki svo mikilvægt fyrir þetta verkefni), auk þess sem þjöppun er óvirk.

Eftir að hafa lokið rsync skaltu hætta úr chroot (með því að ýta á ctrl+d) og keyra

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

Skref 5

Við skulum framkvæma nokkur skref sem munu hjálpa okkur að ræsa VM eftir flutning frá OpenVZ.
Á netþjónum með Systemd við skulum framkvæma skipun sem mun hjálpa okkur að skrá okkur inn á venjulega leikjatölvu, til dæmis í gegnum VNC netþjónsskjá

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

Á netþjónum CentOS 6 и CentOS 7 Vertu viss um að setja upp ferskan kjarna:

yum install kernel-$(uname -r)

Hægt er að hlaða þjóninum af honum, en eftir flutninginn gæti hann hætt að virka eða verið eytt.

Á server CentOS 7 þú þarft að setja smá lagfæringu fyrir PolkitD, annars mun þjónninn hrynja að eilífu:

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

Á öllum netþjónum, ef mod_fcgid fyrir Apache var sett upp, munum við framkvæma smá lagfæringu með réttindum, annars munu síður sem nota mod_fcgid hrynja með villu 500:

chmod +s `which suexec` && apachectl restart

И последнее, пригодится для Ubuntu, Debian дистрибутивов. Эта ОС может упасть в вечный бут с ошибкой

lykkja of hratt. inngjöf framkvæmd smá

óþægilegt, en auðvelt að laga, fer eftir stýrikerfisútgáfunni.

Á Debian 9 lagfæringin lítur svona út:

við framkvæmum

dbus-uuidgen

ef við fáum villu

/usr/local/lib/libdbus-1.so.3: útgáfa `LIBDBUS_PRIVATE_1.10.8′ fannst ekki

athugaðu tilvist 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

ef allt er í lagi þá gerum við það

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

Ef það hjálpar ekki skaltu prófa seinni valkostinn.

Önnur lausnin á vandamálinu með inngjöf framkvæmd smá подходит практически для всех Ubuntu и Debian дистрибутивов.

Við framkvæmum

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

Og fyrir Ubuntu 14, Debian 7 Að auki framkvæmum við:

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

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

Что мы сделали? Восстановили messagebus, которого не хватало для запуска Debian/Ubuntu и удалили modules_dep, который пришел от OpenVZ и мешал загрузки многих модулей ядра.

Skref 6

Við endurræsum VM, athugum í VNC hvernig hleðslan gengur og helst mun allt hlaðast án vandræða. Þó að það sé mögulegt að einhver sérstök vandamál komi upp eftir flutninginn eru þau utan gildissviðs þessarar greinar og verða leiðrétt þegar þau koma upp.

Ég vona að þessar upplýsingar séu gagnlegar! 🙂

Heimild: www.habr.com

Kauptu áreiðanlega hýsingu fyrir síður með DDoS vernd, VPS VDS netþjónum 🔥 Kauptu áreiðanlega vefhýsingu með DDoS vörn, VPS VDS netþjónum | ProHoster