Ҳар касе, ки бояд ҳадди аққал як маротиба дар ҳаёти худ контейнери OpenVZ-ро ба сервер бо виртуализатсияи пурраи KVM интиқол диҳад, бо баъзе мушкилот дучор шуд:
- Аксарияти иттилоот ба таври оддӣ кӯҳна шудаанд ва барои OS, ки аз давраи EOL кайҳо гузашта буданд, мувофиқ буданд
- Барои системаҳои гуногуни оператсионӣ ҳамеша маълумоти гуногун дода мешавад ва хатогиҳои эҳтимолӣ ҳангоми муҳоҷират ҳеҷ гоҳ ба назар гирифта намешаванд
- Баъзан ба шумо лозим меояд, ки бо конфигуратсияҳое сарукор кунед, ки пас аз муҳоҷират кор кардан намехоҳед
Вақте ки шумо 1 серверро интиқол медиҳед, шумо ҳамеша метавонед чизеро дар парвоз ислоҳ кунед, аммо вақте ки шумо тамоми кластерро интиқол медиҳед?
Дар ин мақола ман кӯшиш мекунам ба шумо бигӯям, ки чӣ гуна як контейнери OpenVZ-ро ба KVM бо вақти камтарин ва ҳалли зуди ҳама мушкилот дуруст интиқол диҳед.
Барномаи хурди таълимӣ: OpenVZ чист ва KVM чист?
Мо ба истилоҳот амиқ намеравем, балки ба таври умумӣ мегӯем:
OpenVZ — виртуализатсия дар сатҳи системаи амалиётӣ, шумо ҳатто метавонед онро дар печи печи ҷойгир кунед, зеро ба дастурҳои CPU ва технологияҳои виртуализатсия дар мошини мизбон лозим нест.
KVM - виртуализатсияи мукаммал, бо истифода аз тамоми қудрати CPU ва қодир аст виртуализатсияи ҳама чизро, бо ҳар роҳ, буридани он ба дарозӣ ва салиб.
Бар хилофи эътиқоди маъмул, дар муҳити зист провайдерҳои хостинг OpenVZ аз ҳад зиёд фурӯхта мешавад, аммо KVM не. Хушбахтона, KVM ҳоло мисли бародараш аз ҳад зиёд фурӯхта мешавад.
Мо чиро мебардорем?
Барои интиқол бояд тамоми ҷангали системаҳои амалиётии дастрас дар OpenVZ ҳамчун субъектҳои санҷишӣ истифода мешуданд: CentOS (версияҳои 6 ва 7), Ubuntu (14, 16 ва 18 LTS), Debian 7.
Тахмин карда мешуд, ки аксари контейнерҳои OpenVZ аллакай як намуди LAMP-ро иҷро мекунанд ва баъзеҳо ҳатто нармафзори хеле мушаххас доранд. Аксар вақт, ин конфигуратсияҳо бо ISPmanager, панели идоракунии VestaCP буданд (ва аксар вақт, солҳо нав карда намешаванд). Дархостҳои интиқоли онҳо низ бояд ба назар гирифта шаванд.
Муҳоҷират бо нигоҳдорӣ анҷом дода мешавад суроғаҳои IP Барои контейнери сайёр, мо фарз мекунем, ки суроғаи IP-и контейнер дар VM нигоҳ дошта мешавад ва бе мушкилот кор хоҳад кард.
Пеш аз интиқол, биёед боварӣ ҳосил кунем, ки ҳама чиз дар дасти мост:
- Сервери OpenVZ, дастрасии пурраи реша ба мошини ҳост, қобилияти қатъ/васлкунӣ/оғоз/нест кардани контейнерҳо
- Сервери KVM, дастрасии пурраи реша ба мошини мизбон бо ҳама чизе, ки дар назар дорад. Тахмин меравад, ки ҳама чиз аллакай танзим шудааст ва барои рафтан омода аст.
Биёед интиқолро оғоз кунем
Пеш аз он ки интиқолро оғоз кунем, биёед шартҳоеро муайян кунем, ки ба шумо барои пешгирӣ кардани иштибоҳ кӯмак мекунанд:
KVM_NODE - мошини мизбони KVM
VZ_NODE - мошини мизбони OpenVZ
CTID - контейнери OpenVZ
VM - Сервери виртуалии KVM
Омодагӣ ба муҳоҷират ва эҷоди мошинҳои виртуалӣ.
қадам 1
Азбаски мо бояд контейнерро ба ҷое интиқол диҳем, мо эҷод мекунем VM бо конфигуратсияи шабеҳ ба KVM_NODE.
Муҳимтарин! Шумо бояд дар ҳамон системаи амалиётие, ки айни замон дар CTID кор мекунад, виртуали мошини боркаш эҷод кунед. Масалан, агар CTID кор кунад Ubuntu 14, пас шумо бояд онро дар VM низ насб кунед Ubuntu 14. Нусхаҳои хурд муҳим нестанд ва номувофиқати онҳо он қадар муҳим нест, аммо нусхаҳои асосӣ бояд якхела бошанд.
Пас аз сохтани VM, мо бастаҳоро дар CTID ва дар VM навсозӣ мекунем (бо навсозии ОС ошуфта нашавем - мо онро навсозӣ намекунем, мо танҳо бастаҳоро нав мекунем ва агар он расад, версияи OS дар дохили асосӣ версия).
барои CentOS Ин раванд безарар ба назар мерасад:
# yum clean all
# yum update -yВа барои он камтар безарар нест Ubuntu, Debian:
# apt-get update
# apt-get upgradeқадам 2
Насб кунед CTID, VZ_NODE и VM фоиданок rsync:
CentOS:
# yum install rsync -yDebian, Ubuntu:
# apt-get install rsync -yМо на дар он ҷо ва на дар он ҷо чизи дигаре насб намекунем.
қадам 3
Мо таваққуф мекунем CTID ба VZ_NODE даста
vzctl stop CTIDҶойгиркунии тасвир CTID:
vzctl mount CTIDБа папкаи /vz/root/ гузаредCTID ва иҷро кунед
mount --bind /dev dev && mount --bind /sys sys && mount --bind /proc proc && chroot .Дар зери реша файли /root/exclude.txt эҷод кунед - он рӯйхати истисноҳоро дар бар мегирад, ки ба сервери нав ворид намешаванд
/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Мо пайваст мешавем KVM_NODE ва моро ба кор андохтанд VMто ки он кор кунад ва тавассути шабака дастрас бошад.
Ҳоло ҳама чиз барои интиқол омода аст. Бирав!
қадам 4
Ҳанӯз дар зери имло, мо иҷро мекунем
rsync --exclude-from="/root/exclude.txt" --numeric-ids -avpogtStlHz --progress -e "ssh -T -o Compression=no -x" / root@KVM_NODE:/Фармони rsync интиқолро иҷро мекунад, мо умедворем, ки калидҳо равшананд - интиқол бо нигоҳ доштани аломатҳо, ҳуқуқи дастрасӣ, соҳибон ва гурӯҳҳо анҷом дода мешавад ва рамзгузорӣ барои суръати баландтар хомӯш карда мешавад (шумо метавонед рамзҳои тезтарро истифода баред, аммо ин барои ин вазифа чандон муҳим нест) , инчунин фишурдакунӣ ғайрифаъол аст.
Пас аз анҷоми rsync, аз chroot (бо пахшкунии ctrl+d) хориҷ шавед ва иҷро кунед
umount dev && umount proc && umount sys && cd .. && vzctl umount CTIDқадам 5
Биёед якчанд қадамҳоро иҷро кунем, ки ба мо пас аз интиқол аз OpenVZ дар оғоз кардани VM кӯмак мекунанд.
Дар серверҳо бо Systemd биёед фармонеро иҷро кунем, ки ба мо барои ворид шудан ба консоли муқаррарӣ кӯмак мекунад, масалан, тавассути экрани сервери VNC
mv /etc/systemd/system/getty.target.wants/getty@tty2.service /etc/systemd/system/getty.target.wants/getty@tty1.serviceДар серверҳо CentOS 6 и CentOS 7 Боварӣ ҳосил кунед, ки ядрои навро насб кунед:
yum install kernel-$(uname -r)Серверро аз он бор кардан мумкин аст, аммо пас аз интиқол он метавонад корашро қатъ кунад ё нест карда шавад.
Дар сервер CentOS 7 ба шумо лозим аст, ки барои PolkitD ислоҳи хурдеро татбиқ кунед, вагарна сервер то абад вайрон мешавад:
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; }Дар ҳама серверҳо, агар mod_fcgid барои Apache насб шуда бошад, мо ислоҳи хурдеро бо ҳуқуқҳо иҷро хоҳем кард, вагарна сайтҳое, ки mod_fcgid-ро истифода мебаранд, бо хатои 500 вайрон мешаванд:
chmod +s `which suexec` && apachectl restartВа дар ниҳоят, он барои он муфид хоҳад буд Ubuntu, Debian тақсимот. Ин системаи амалиётӣ метавонад бо хатогӣ ба боркунии доимӣ бархӯрад.
ҳалқа хеле зуд. иҷрои каме суст карда мешавад
ногувор, вале ба осонӣ ислоҳ, вобаста ба версияи OS.
Дар бораи он Debian 9 ислоҳ чунин менамояд:
ичро мекунем
dbus-uuidgenагар мо хато кунем
/usr/local/lib/libdbus-1.so.3: версияи `LIBDBUS_PRIVATE_1.10.8' ёфт нашуд
мавҷудияти LIBBUS-ро тафтиш кунед
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агар хама чиз дуруст бошад, мо инро мекунем
cd /lib/x86_64-linux-gnu
rm -rf libdbus-1.so.3
ln -s libdbus-1.so.3.14.15 libdbus-1.so.3Агар он кӯмак накунад, варианти дуюмро санҷед.
Ҳалли дуюми мушкилот бо иҷрои каме суст карда мешавад қариб барои ҳама мувофиқ аст Ubuntu и Debian тақсимот.
Мо иҷро мекунем
bash -x /var/lib/dpkg/info/dbus.postinst configureВа барои Ubuntu 14, Debian 7 Илова бар ин, мо иҷро мекунем:
adduser --system --home /nonexistent --no-create-home --disabled-password --group messagebus
rm -rf /etc/init.d/modules_dep.sh Мо чӣ кор кардем? Мо автобуси паёмнависиро барқарор кардем, ки барои оғозёбӣ намерасид. Debian/Ubuntu ва modules_dep-ро, ки аз OpenVZ пайдо шуд ва аз боркунии бисёр модулҳои ядроӣ пешгирӣ кард, хориҷ кард.
қадам 6
Мо VM-ро аз нав оғоз мекунем, дар VNC тафтиш мекунем, ки боркунӣ чӣ гуна идома дорад ва идеалӣ, ҳама чиз бе мушкилот бор мешавад. Ҳарчанд имкон дорад, ки баъзе мушкилоти мушаххас пас аз муҳоҷират ба миён оянд, онҳо аз доираи ин мақола берунанд ва дар баробари пайдо шуданашон ислоҳ мешаванд.
Ман умедворам, ки ин маълумот муфид аст! 🙂
Манбаъ: will.com
