Sut i drosglwyddo cynhwysydd OpenVZ 6 i weinydd KVM heb gur pen

Mae unrhyw un sydd wedi gorfod trosglwyddo cynhwysydd OpenVZ i weinydd gyda rhithwiroli KVM llawn o leiaf unwaith yn eu bywyd wedi cael rhai problemau:

  • Mae'r rhan fwyaf o'r wybodaeth yn hen ffasiwn ac roedd yn berthnasol i OSes a oedd wedi pasio'r cylch EOL ers tro
  • Darperir gwybodaeth wahanol bob amser ar gyfer systemau gweithredu gwahanol, ac nid yw gwallau posibl yn ystod mudo byth yn cael eu hystyried
  • Weithiau mae'n rhaid i chi ddelio â chyfluniadau nad ydynt bob hyn a hyn am weithio ar ôl mudo

Pan fyddwch chi'n trosglwyddo 1 gweinydd, gallwch chi bob amser drwsio rhywbeth ar y hedfan, ond pan fyddwch chi'n trosglwyddo clwstwr cyfan?

Yn yr erthygl hon byddaf yn ceisio dweud wrthych sut i fudo cynhwysydd OpenVZ i KVM yn gywir heb fawr o amser segur ac ateb cyflym i bob problem.

Rhaglen addysgol fach: beth yw OpenVZ a beth yw KVM?

Ni fyddwn yn mynd yn ddwfn i derminoleg, ond byddwn yn dweud yn gyffredinol:

OpenVZ - rhithwiroli ar lefel y system weithredu, gallwch hyd yn oed ei ddefnyddio ar ficrodon, gan nad oes angen cyfarwyddiadau CPU a thechnolegau rhithwiroli ar y peiriant gwesteiwr.

KVM - rhithwiroli cyflawn, gan ddefnyddio holl bŵer y CPU ac sy'n gallu rhithwiroli unrhyw beth, unrhyw ffordd, gan ei dorri'n hyd ac yn groesffordd.

Yn groes i'r gred boblogaidd y bydd OpenVZ ymhlith darparwyr cynnal yn cael ei or-werthu, ond ni fydd KVM - yn ffodus i'r olaf, mae KVM bellach wedi'i or-werthu dim gwaeth na'i frawd.

Beth fyddwn ni'n ei gario drosodd?

Fel pynciau prawf ar gyfer trosglwyddo, roedd yn rhaid i ni ddefnyddio'r goedwig gyfan o systemau gweithredu sydd ar gael ar OpenVZ: CentOS (fersiynau 6 a 7), Ubuntu (14, 16 a 18 LTS), Debian 7.

Tybiwyd bod y rhan fwyaf o'r cynwysyddion OpenVZ eisoes yn rhedeg rhyw fath o LAMP, ac roedd gan rai feddalwedd penodol iawn hyd yn oed. Yn fwyaf aml, roedd y rhain yn gyfluniadau gyda'r ISPmanager, panel rheoli VestaCP (ac yn fwyaf aml, heb ei ddiweddaru ers blynyddoedd). Rhaid ystyried eu ceisiadau trosglwyddo hefyd.

Mae mudo yn cael ei wneud wrth gadw cyfeiriad IP y cynhwysydd a drosglwyddir; byddwn yn cymryd yn ganiataol bod yr IP a oedd gan y cynhwysydd yn cael ei arbed ar y VM a bydd yn gweithio heb broblemau.

Cyn trosglwyddo, gadewch i ni wneud yn siŵr bod gennym bopeth wrth law:

  • Gweinydd OpenVZ, mynediad gwraidd llawn i'r peiriant gwesteiwr, y gallu i stopio / gosod / cychwyn / dileu cynwysyddion
  • Gweinydd KVM, mynediad gwraidd llawn i'r peiriant gwesteiwr, gyda phopeth y mae'n ei awgrymu. Tybir bod popeth eisoes wedi'i ffurfweddu ac yn barod i fynd.

Gadewch i ni ddechrau trosglwyddo

Cyn i ni ddechrau trosglwyddo, gadewch i ni ddiffinio termau a fydd yn eich helpu i osgoi dryswch:

KVM_NODE - peiriant cynnal KVM
VZ_NODE - Peiriant gwesteiwr OpenVZ
CTID - OpenVZ cynhwysydd
VM - gweinydd rhithwir KVM

Paratoi ar gyfer mudo a chreu peiriannau rhithwir.

Cam 1

Gan fod angen i ni symud y cynhwysydd i rywle, byddwn yn creu VM gyda chyfluniad tebyg i KVM_NODE.
Pwysig! Mae angen i chi greu VM ar y system weithredu sy'n rhedeg ar CTID ar hyn o bryd. Er enghraifft, os yw Ubuntu 14 wedi'i osod ar y CTID, yna rhaid gosod Ubuntu 14 ar y VM. Nid yw fersiynau bach yn bwysig ac nid yw eu anghysondeb mor hanfodol, ond dylai fersiynau mawr fod yr un peth.

Ar ôl creu'r VM, byddwn yn diweddaru'r pecynnau ar y CTID ac ar y VM (na ddylid ei gymysgu â diweddaru'r OS - nid ydym yn ei ddiweddaru, dim ond y pecynnau rydyn ni'n eu diweddaru ac, os yw'n cyrraedd, y fersiwn OS o fewn y prif fersiwn).

Ar gyfer CentOS mae'r broses hon yn edrych yn ddiniwed:

# yum clean all
# yum update -y

A dim llai diniwed i Ubuntu a Debian:

# apt-get update
# apt-get upgrade

Cam 2

Gosod ar CTID, VZ_NODE и VM cyfleustodau rsync:

CentOS:

# yum install rsync -y

Debian, Ubuntu:

# apt-get install rsync -y

Nid ydym yn gosod unrhyw beth arall yn y fan a'r lle.

Cam 3

Rydyn ni'n stopio CTID ar VZ_NODE tîm

vzctl stop CTID

Mowntio'r ddelwedd CTID:

vzctl mount CTID

Ewch i'r ffolder /vz/root/CTID a gweithredu

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

O dan y gwraidd, creu ffeil /root/exclude.txt - bydd yn cynnwys rhestr o eithriadau na fydd yn cyrraedd y gweinydd newydd

/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

Cysylltwch â KVM_NODE a lansio ein VMfel ei fod yn gweithio ac yn hygyrch dros y rhwydwaith.

Nawr mae popeth yn barod i'w drosglwyddo. Ewch!

Cam 4

Dal o dan y swyn, rydym yn perfformio

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

Bydd y gorchymyn rsync yn cyflawni'r trosglwyddiad, rydym yn gobeithio bod yr allweddi'n glir - mae'r trosglwyddiad yn cael ei wneud gyda chadwraeth symlinks, hawliau mynediad, perchnogion a grwpiau, ac mae amgryptio wedi'i analluogi ar gyfer mwy o gyflymder (gallwch ddefnyddio rhai seiffr cyflymach, ond nid yw hyn mor bwysig ar gyfer y dasg hon) , yn ogystal â cywasgu yn anabl.

Ar ôl cwblhau rsync, gadewch o chroot (trwy wasgu ctrl + d) a gweithredu

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

Cam 5

Gadewch i ni berfformio sawl cam a fydd yn ein helpu i lansio'r VM ar ôl trosglwyddo o OpenVZ.
Ar weinyddion gyda Systemd gadewch i ni weithredu gorchymyn a fydd yn ein helpu i fewngofnodi i gonsol arferol, er enghraifft, trwy sgrin gweinydd VNC

mv /etc/systemd/system/getty.target.wants/[email protected] /etc/systemd/system/getty.target.wants/[email protected]

Ar weinyddion CentOS 6 и CentOS 7 Byddwch yn siwr i osod cnewyllyn ffres:

yum install kernel-$(uname -r)

Gellir llwytho'r gweinydd ohono, ond ar ôl y trosglwyddiad gall roi'r gorau i weithio neu gael ei ddileu.

Ar y gweinydd CentOS 7 mae angen i chi gymhwyso atgyweiriad bach ar gyfer PolkitD, fel arall bydd y gweinydd yn chwalu am byth:

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

Ar bob gweinydd, os gosodwyd mod_fcgid ar gyfer Apache, byddwn yn perfformio atgyweiriad bach gyda hawliau, fel arall bydd gwefannau sy'n defnyddio mod_fcgid yn chwalu gyda gwall 500:

chmod +s `which suexec` && apachectl restart

Ac mae'r peth olaf yn ddefnyddiol ar gyfer dosbarthiadau Ubuntu a Debian. Efallai y bydd yr OS hwn yn cwympo i gist tragwyddol gyda gwall

dolennu yn rhy gyflym. throtling dienyddio ychydig

annymunol, ond yn hawdd sefydlog, yn dibynnu ar y fersiwn OS.

Ar Debian 9 mae'r atgyweiriad yn edrych fel hyn:

rydym yn cyflawni

dbus-uuidgen

os cawn gamgymeriad

/usr/local/lib/libdbus-1.so.3: fersiwn `LIBDBUS_PRIVATE_1.10.8′ heb ei ganfod

gwirio presenoldeb 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

os yw popeth mewn trefn, rydyn ni'n ei wneud

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

Os nad yw'n helpu, rhowch gynnig ar yr ail opsiwn.

Yr ail ateb i'r broblem gyda throtling dienyddio ychydig Yn addas ar gyfer bron pob dosbarthiad Ubuntu a Debian.

Rydym yn cyflawni

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

Ac ar gyfer Ubuntu 14, Debian 7 Yn ogystal, rydym yn perfformio:

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

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

Beth ydyn ni wedi'i wneud? Fe wnaethom adfer messagebus, a oedd ar goll i redeg Debian/Ubuntu, a thynnu modiwlau_dep, a ddaeth o OpenVZ ac a oedd yn ymyrryd â llwytho llawer o fodiwlau cnewyllyn.

Cam 6

Rydym yn ailgychwyn y VM, yn gwirio yn VNC sut mae'r llwytho yn dod yn ei flaen ac, yn ddelfrydol, bydd popeth yn llwytho heb broblemau. Er ei bod yn bosibl y bydd rhai problemau penodol yn ymddangos ar ôl yr ymfudiad, maent y tu hwnt i gwmpas yr erthygl hon a byddant yn cael eu cywiro wrth iddynt godi.

Rwy'n gobeithio bod y wybodaeth hon yn ddefnyddiol! 🙂

Ffynhonnell: hab.com

Ychwanegu sylw