Жашоосунда жок дегенде бир жолу OpenVZ контейнерин толук KVM виртуалдаштыруусу бар серверге өткөрүүгө муктаж болгон ар бир адам кээ бир көйгөйлөргө туш болгон:
- Маалыматтын көбү жөн эле эскирип калган жана EOL циклинен эчак өткөн ОС үчүн актуалдуу болгон
- Ар кандай операциялык системалар үчүн ар кандай маалымат ар дайым берилет жана миграция учурунда мүмкүн болуучу каталар эч качан каралбайт
- Кээде сиз азыр жана андан кийин миграциядан кийин иштегиңиз келбеген конфигурациялар менен күрөшүүгө туура келет
1 серверди өткөргөндө, сиз дайыма бир нерсени тез арада оңдой аласыз, бирок бүтүндөй кластерди өткөргөндө?
Бул макалада мен сизге OpenVZ контейнерин минималдуу токтоп калуу жана бардык көйгөйлөрдү тез чечүү менен KVMге кантип туура көчүрүү керектигин айтып берүүгө аракет кылам.
Чакан билим берүү программасы: OpenVZ деген эмне жана KVM деген эмне?
Терминологияга терең кирбей, жалпысынан айта кетели:
OpenVZ — операциялык тутумдун деңгээлинде виртуалдаштыруу, сиз аны микротолкундуу мешке да жайгаштырсаңыз болот, анткени башкы машинада CPU көрсөтмөлөрүнүн жана виртуалдаштыруу технологияларынын кереги жок.
KVM - толук кандуу виртуалдаштыруу, процессордун бардык күчүн колдонуу жана каалаган нерсени виртуалдаштырууга, аны узунунан жана кайчылаш кесип салууга жөндөмдүү.
Көпчүлүктүн ишенимине карама-каршы, айлана-чөйрөдө хостинг провайдерлери OpenVZ ашыкча сатылууда, бирок KVM андай эмес. Бактыга жараша, акыркысы үчүн KVM азыр өзүнүн бир тууганы сыяктуу эле ашыкча сатылууда.
Биз эмнени көтөрөбүз?
OpenVZде жеткиликтүү болгон операциялык системалардын бүтүндөй токою өткөрүп берүү үчүн сыноо объектилери катары колдонулушу керек болчу: CentOS (6 жана 7 версиялары), Ubuntu (14, 16 жана 18 LTS), Debian 7.
OpenVZ контейнерлеринин көбү LAMPдин кандайдыр бир түрүн иштетип жаткан, ал эми кээ бирлеринде өзгөчө программалык камсыздоо бар деп болжолдонгон. Көбүнчө, бул ISPmanager, VestaCP башкаруу панели менен конфигурациялар болгон (жана көбүнчө жылдар бою жаңыртылган эмес). Алардын өткөрүп берүү өтүнүчтөрү да эске алынууга тийиш.
Миграция сактоо менен жүргүзүлөт IP даректери Көчмө контейнер үчүн, контейнердин IP дареги виртуалдык машинада сакталып калган жана көйгөйсүз иштейт деп болжолдойбуз.
Которуудан мурун, колубузда бардыгы бар экенине ынаналы:
- 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ал иштейт жана тармак аркылуу жеткиликтүү болушу үчүн.
Азыр баары которууга даяр. Go!
кадам 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; }Бардык серверлерде, эгерде Apache үчүн mod_fcgid орнотулган болсо, анда биз укуктар менен кичинекей оңдоолорду аткарабыз, антпесе 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 жана OpenVZден келген жана көптөгөн ядро модулдарынын жүктөлүшүнө тоскоол болгон modules_dep файлын алып салды.
кадам 6
Биз VMди кайра жүктөйбүз, VNCде жүктөө кандай жүрүп жатканын текшеребиз жана идеалдуу түрдө баары көйгөйсүз жүктөлөт. Миграциядан кийин кээ бир спецификалык көйгөйлөр пайда болушу мүмкүн болсо да, алар бул макаланын алкагына кирбейт жана пайда болгон сайын оңдолот.
Бул маалымат пайдалуу деп үмүттөнөм! 🙂
Source: www.habr.com
