Ki jan yo transfere veso OpenVZ 6 nan sèvè KVM san tèt fè mal

Nenpòt moun ki te bezwen transfere yon veso OpenVZ nan yon sèvè ak Virtualization KVM konplè omwen yon fwa nan lavi yo te rankontre kèk pwoblèm:

  • Pifò nan enfòmasyon yo tou senpleman demode e yo te enpòtan pou OS ki te pase sik EOL depi lontan
  • Yo toujou bay enfòmasyon diferan pou sistèm opere diferan, epi erè posib pandan migrasyon yo pa janm konsidere
  • Pafwa ou gen fè fas ak konfigirasyon ki chak kounye a epi Lè sa a, pa vle travay apre migrasyon

Lè ou transfere 1 sèvè, ou ka toujou ranje yon bagay sou vole, men lè ou transfere yon grap antye?

Nan atik sa a mwen pral eseye di w ki jan yo kòrèkteman imigre yon veso OpenVZ nan KVM ak yon ti tan D 'ak yon solisyon rapid pou tout pwoblèm.

Yon ti pwogram edikasyon: ki sa ki OpenVZ ak ki sa ki KVM?

Nou pa pral antre nan fon nan tèminoloji, men nou pral di an tèm jeneral:

OpenVZ — Virtualization nan nivo sistèm operasyon an, ou ka menm deplwaye li sou yon mikwo ond, paske pa gen okenn nesesite pou CPU enstriksyon ak teknoloji Virtualization sou machin lame a.

KVM - Virtualizasyon plen véritable, lè l sèvi avèk tout pouvwa CPU a epi ki kapab virtualize anyen, nenpòt fason, koupe li longè ak travèse.

Kontrèman ak sa anpil moun kwè, nan anviwònman an founisè hosting OpenVZ twò vann, men KVM pa twò vann. Erezman pou KVM, kounye a KVM twò vann menm jan ak frè li a.

Kisa nou pral pote sou?

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

Li te sipoze ke pi fò nan resipyan OpenVZ yo te deja kouri kèk kalite LAMP, ak kèk menm te gen kèk lojisyèl trè espesifik. Pi souvan, sa yo te konfigirasyon ak ISPmanager, panèl kontwòl VestaCP (epi souvan, pa mete ajou pou ane). Demann transfè yo dwe pran an konsiderasyon tou.

Migrasyon an fèt avèk prezèvasyon adrès IP Pou yon kontenè pòtab, n ap sipoze ke adrès IP kontenè a konsève sou VM a epi l ap fonksyone san pwoblèm.

Anvan transfere, se pou nou asire w ke nou gen tout bagay nan men:

  • Sèvè OpenVZ, aksè konplè rasin nan machin lame a, kapasite pou sispann / monte / kòmanse / efase veso yo
  • Sèvè KVM, aksè konplè rasin nan machin lame a, ak tout sa li implique. Li sipoze ke tout bagay deja configuré ak pare yo ale.

Ann kòmanse transfere

Anvan nou kòmanse transfè a, ann defini tèm ki pral ede w evite konfizyon:

KVM_NODE - KVM lame machin
VZ_NODE - OpenVZ lame machin
CTID - OpenVZ veso
VM - KVM sèvè vityèl

Preparasyon pou migrasyon ak kreye machin vityèl.

Etap 1

Depi nou bezwen deplase veso a yon kote, nou pral kreye VM ak yon konfigirasyon ki sanble ak KVM_NODE.
Enpòtan! Создавать VM нужно именно на той операционной системе, которая сейчас крутится на CTID. Например, если на CTID установлена Ubuntu 14, то и на VM нужно ставить Ubuntu 14. Минорные версии не важны и их несовпадение не столь критично, а вот мажорные — должны быть одинаковыми.

Apre kreye VM a, nou pral mete ajou pakè yo sou CTID la ak sou VM a (pa dwe konfonn ak aktyalizasyon OS la - nou pa mete ajou li, nou sèlman mete ajou pakè yo epi, si li rive, vèsyon OS nan prensipal la. vèsyon).

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

# yum clean all
# yum update -y

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

# apt-get update
# apt-get upgrade

Etap 2

Enstale sou CTID, VZ_NODE и VM sèvis piblik rsync:

CentOS:

# yum install rsync -y

Debian, Ubuntu:

# apt-get install rsync -y

Nou pa enstale anyen ankò ni la ni la.

Etap 3

Nou fè yon kanpe CTID sou VZ_NODE ekip

vzctl stop CTID

Monte imaj la CTID:

vzctl mount CTID

Ale nan /vz/root/ katab laCTID epi egzekite

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

Anba rasin lan, kreye yon fichye /root/exclude.txt - li pral genyen yon lis eksepsyon ki pap rive nan nouvo sèvè a.

/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

Nou konekte ak KVM_NODE epi lanse nou VMpou li travay epi aksesib sou rezo a.

Koulye a, tout bagay pare pou transfè. Ale!

Etap 4

Toujou anba eple a, nou fè

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

Kòmandman rsync la pral fè transfè a, nou espere ke kle yo klè - transfè a fèt ak prezèvasyon lyen senbolik, dwa aksè, pwopriyetè ak gwoup, ak chifreman enfim pou pi gwo vitès (ou ta ka itilize kèk chifreman pi vit, men sa a pa tèlman enpòtan pou travay sa a), osi byen ke konpresyon se enfim.

Apre w fin ranpli rsync, sòti nan chroot (pa peze ctrl + d) epi egzekite

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

Etap 5

Ann fè plizyè etap ki pral ede nou lanse VM a apre transfere soti nan OpenVZ.
Sou serveurs ak Systemd Ann egzekite yon lòd ki pral ede nou konekte nan yon konsole regilye, pou egzanp, atravè yon ekran sèvè VNC.

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

Sou serveurs CentOS 6 и CentOS 7 Asire w ou enstale yon nwayo fre:

yum install kernel-$(uname -r)

Sèvè a ka chaje soti nan li, men apre transfè a li ka sispann travay oswa yo dwe efase.

Sou sèvè CentOS 7 ou bezwen aplike yon ti ranje pou PolkitD, otreman sèvè a pral aksidan pou tout tan:

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

Sou tout serveurs, si mod_fcgid pou Apache te enstale, nou pral fè yon ti ranje ak dwa, otreman sit ki itilize mod_fcgid pral aksidan ak erè 500:

chmod +s `which suexec` && apachectl restart

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

bouk twò vit. throttling ekzekisyon yon ti kras

dezagreyab, men fasil fiks, tou depann de vèsyon an OS.

Sou Debian 9 ranje a sanble sa a:

nou pote soti

dbus-uuidgen

si nou jwenn yon erè

/usr/local/lib/libdbus-1.so.3: vèsyon `LIBDBUS_PRIVATE_1.10.8′ pa jwenn

tcheke prezans 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

si tout bagay nan lòd, nou fè li

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

Si li pa ede, eseye dezyèm opsyon an.

Dezyèm solisyon a pwoblèm nan ak throttling ekzekisyon yon ti kras подходит практически для всех Ubuntu и Debian дистрибутивов.

Nou pote soti

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

Ak pou Ubuntu 14, Debian 7 Anplis de sa nou fè:

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 и мешал загрузки многих модулей ядра.

Etap 6

Nou rdemare VM a, tcheke nan VNC ki jan loading la ap pwogrese epi, depreferans, tout bagay pral chaje san pwoblèm. Malgre ke li posib ke kèk pwoblèm espesifik ap parèt apre migrasyon an, yo depase sijè ki abòde lan atik sa a epi yo pral korije jan yo leve.

Mwen espere enfòmasyon sa a itil! 🙂

Sous: www.habr.com

Achte hosting serye pou sit ki gen pwoteksyon DDoS, sèvè VPS VDS 🔥 Achte yon hébergement sit entènèt serye ak pwoteksyon DDoS, sèvè VPS VDS | ProHoster