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 upgradeEtap 2
Enstale sou CTID, VZ_NODE и VM sèvis piblik rsync:
CentOS:
# yum install rsync -yDebian, Ubuntu:
# apt-get install rsync -yNou pa enstale anyen ankò ni la ni la.
Etap 3
Nou fè yon kanpe CTID sou VZ_NODE ekip
vzctl stop CTIDMonte imaj la CTID:
vzctl mount CTIDAle 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-ens3Nou 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 CTIDEtap 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.serviceSou 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-uuidgensi 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.16si 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.3Si 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 configureAk 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
