هر هغه څوک چې لږترلږه د دوی په ژوند کې یو ځل د بشپړ KVM مجازی کولو سره سرور ته د OpenVZ کانټینر لیږدولو ته اړتیا لري د ځینې ستونزو سره مخ شوي:
- ډیری معلومات په ساده ډول زاړه دي او د 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 چلوي، او ځینې حتی یو څه خورا ځانګړي سافټویر درلود. ډیری وختونه، دا د ISP مدیر، VestaCP کنټرول پینل سره تشکیلات وو (او ډیری وختونه، د کلونو لپاره نوي شوي ندي). د دوی د لیږد غوښتنې هم باید په پام کې ونیول شي.
مهاجرت د ساتنې سره ترسره کیږي IP پتې د پورټ ایبل کانټینر لپاره، موږ به فرض کړو چې د کانټینر IP پته په VM کې ساتل شوې ده او پرته له کومې ستونزې به کار وکړي.
د لیږد دمخه، راځئ ډاډ ترلاسه کړو چې موږ هرڅه په لاس کې لرو:
- د OpenVZ سرور، کوربه ماشین ته بشپړ روټ لاسرسی، د کانټینرونو د بندولو/ماؤنټ/پیل/ړنګولو وړتیا
- د KVM سرور، کوربه ماشین ته بشپړ روټ لاسرسی، د هغه څه سره چې دا معنی لري. داسې انګیرل کیږي چې هرڅه دمخه تنظیم شوي او د تګ لپاره چمتو دي.
راځئ چې لیږد پیل کړو
مخکې لدې چې موږ لیږد پیل کړو ، راځئ هغه شرایط تعریف کړو چې تاسو سره به د ګډوډۍ مخنیوي کې مرسته وکړي:
KVM_NODE - د KVM کوربه ماشین
VZ_NODE - د OpenVZ کوربه ماشین
CTID - OpenVZ کانتینر
VM - د KVM مجازی سرور
د مهاجرت لپاره چمتو کول او د مجازی ماشینونو رامینځته کول.
1 ګام
له هغه ځایه چې موږ اړتیا لرو کانټینر کوم ځای ته انتقال کړو، موږ به یې جوړ کړو VM د ورته ترتیب سره KVM_NODE.
مهم! Создавать VM нужно именно на той операционной системе, которая сейчас крутится на CTID. Например, если на CTID установлена Ubuntu 14, то и на VM нужно ставить Ubuntu 14. Минорные версии не важны и их несовпадение не столь критично, а вот мажорные — должны быть одинаковыми.
د VM رامینځته کولو وروسته ، موږ به کڅوړې په CTID او VM کې تازه کړو (د OS تازه کولو سره مغشوش نه شئ - موږ دا تازه نه کوو ، موږ یوازې کڅوړې تازه کوو او که چیرې دا راشي ، د OS نسخه په اصلي کې دننه. نسخه).
لپاره CentOS этот процесс выглядит безобидно:
# yum clean all
# yum update -yИ не менее безобидно для Ubuntu, Debian:
# apt-get update
# apt-get upgrade2 ګام
نصب کړئ 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 بشپړولو وروسته، له کروټ څخه وځئ (د ctrl+d په فشارولو سره) او اجرا کړئ
umount dev && umount proc && umount sys && cd .. && vzctl umount CTID5 ګام
راځئ چې څو مرحلې ترسره کړو چې د OpenVZ څخه لیږدولو وروسته به موږ سره د VM پیلولو کې مرسته وکړي.
سره په سرورونو کې سیسټم راځئ چې یو کمانډ اجرا کړو چې موږ سره به منظم کنسول ته ننوتلو کې مرسته وکړي ، د مثال په توګه ، د 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 نصب شوی وي، موږ به د حقونو سره یو کوچنی حل ترسره کړو، که نه نو د mod_fcgid کارولو سایټونه به د 500 غلطۍ سره خراب شي:
chmod +s `which suexec` && apachectl restartИ последнее, пригодится для Ubuntu, Debian дистрибутивов. Эта ОС может упасть в вечный бут с ошибкой
ډیر ګړندی کول. د throttling اعدام لږ څه
ناخوښه، مګر په اسانۍ سره ټاکل شوی، د OS نسخه پورې اړه لري.
په Debian 9 اصلاح داسې ښکاري:
موږ ترسره کوو
dbus-uuidgenکه موږ تېروتنه ترلاسه کړو
/usr/local/lib/libdbus-1.so.3: نسخه `LIBDBUS_PRIVATE_1.10.8′ ونه موندل شو
د 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که هرڅه سم وي، موږ یې کوو
cd /lib/x86_64-linux-gnu
rm -rf libdbus-1.so.3
ln -s libdbus-1.so.3.14.15 libdbus-1.so.3که دا مرسته ونه کړي، دوهم انتخاب هڅه وکړئ.
د ستونزې دوهم حل د throttling اعدام لږ څه подходит практически для всех 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 کې وګورئ چې بار کول څنګه پرمخ ځي او په مثالي توګه ، هرڅه به پرته له ستونزو بار شي. که څه هم دا ممکنه ده چې ځینې ځانګړي ستونزې به د مهاجرت وروسته راڅرګند شي، هغه د دې مادې له دائرې څخه بهر دي او د دوی د رامنځته کیدو سره سم به سم شي.
زه هیله لرم چې دا معلومات ګټور وي! 🙂
سرچینه: www.habr.com
