Чӣ тавр контейнери OpenVZ 6-ро ба сервери KVM бе дарди сар интиқол додан мумкин аст

Ҳар касе, ки бояд ҳадди аққал як маротиба дар ҳаёти худ контейнери 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.
Муҳимтарин! Шумо бояд дар системаи оператсионии VM эҷод кунед, ки ҳоло дар CTID кор мекунад. Масалан, агар Ubuntu 14 дар CTID насб шуда бошад, пас Ubuntu 14 бояд дар VM насб карда шавад. Версияҳои хурд муҳим нестанд ва ихтилофи онҳо он қадар муҳим нест, аммо версияҳои асосӣ бояд якхела бошанд.

Пас аз сохтани 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 -y

Debian, 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/[email protected] /etc/systemd/system/getty.target.wants/[email protected]

Дар серверҳо 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 метавонад бо хатогӣ ба боркунии абадӣ бархӯрад

ҳалқа хеле зуд. иҷрои каме суст карда мешавад

ногувор, вале ба осонӣ ислоҳ, вобаста ба версияи 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 

Мо чӣ кор кардаем? Мо messagebus-ро, ки барои иҷро кардани Debian/Ubuntu гум шуда буд, барқарор кардем ва modules_dep-ро, ки аз OpenVZ омадааст ва ба боркунии бисёр модулҳои ядро ​​​​монеъ мешуд, хориҷ кардем.

қадам 6

Мо VM-ро аз нав оғоз мекунем, дар VNC тафтиш мекунем, ки боркунӣ чӣ гуна идома дорад ва идеалӣ, ҳама чиз бе мушкилот бор мешавад. Ҳарчанд имкон дорад, ки баъзе мушкилоти мушаххас пас аз муҳоҷират ба миён оянд, онҳо аз доираи ин мақола берунанд ва дар баробари пайдо шуданашон ислоҳ мешаванд.

Ман умедворам, ки ин маълумот муфид аст! 🙂

Манбаъ: will.com

Илова Эзоҳ