OpenVZ 6 ڪنٽينر کي KVM سرور تي بغير سر درد جي منتقلي ڪيئن ڪجي

ڪو به ماڻهو جنهن کي OpenVZ ڪنٽينر کي سرور ڏانهن منتقل ڪرڻ جي ضرورت آهي مڪمل KVM ورچوئلائيزيشن سان گهٽ ۾ گهٽ هڪ ڀيرو پنهنجي زندگي ۾ ڪجهه مسئلن کي منهن ڏنو آهي:

  • اڪثر معلومات صرف پراڻي آهي ۽ OS لاء لاڳاپيل هئي جيڪي گهڻو وقت گذري چڪا هئا EOL چڪر
  • مختلف معلومات هميشه مختلف آپريٽنگ سسٽم لاءِ مهيا ڪئي ويندي آهي، ۽ لڏپلاڻ دوران ممڪن غلطيون ڪڏهن به نه سمجهيو ويندو آهي
  • ڪڏهن ڪڏهن توهان کي ترتيب ڏيڻ سان معاملو ڪرڻو پوندو ته هر هاڻي ۽ پوء لڏپلاڻ کان پوء ڪم ڪرڻ نٿا چاهيون

جڏهن توهان 1 سرور کي منتقل ڪيو ٿا، توهان هميشه پرواز تي ڪجهه درست ڪري سگهو ٿا، پر جڏهن توهان هڪ مڪمل ڪلستر کي منتقل ڪيو ٿا؟

هن آرٽيڪل ۾ آئون توهان کي ٻڌائڻ جي ڪوشش ڪندس ته ڪيئن صحيح طريقي سان هڪ OpenVZ ڪنٽينر کي KVM ڏانهن منتقل ڪيو وڃي گهٽ ۾ گهٽ وقت سان ۽ سڀني مسئلن جو تڪڙو حل.

هڪ ننڍڙو تعليمي پروگرام: OpenVZ ڇا آهي ۽ KVM ڇا آهي؟

اسان اصطلاحن ۾ نه وينداسين، پر عام اصطلاحن ۾ چونداسين:

OpenVZ - آپريٽنگ سسٽم جي سطح تي ورچوئلائيزيشن، توهان ان کي مائڪرو ويڪرو تي به ترتيب ڏئي سگهو ٿا، ڇو ته ميزبان مشين تي 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 تي هلندڙ آهي. مثال طور، جيڪڏهن Ubuntu 14 CTID تي انسٽال ٿيل آهي ته پوءِ Ubuntu 14 کي VM تي انسٽال ڪرڻ لازمي آهي. ننڍا ورجن اهم نه آهن ۽ انهن ۾ فرق ايترو نازڪ نه آهي، پر مکيه ورجن ساڳيون هجڻ گهرجن.

VM ٺاهڻ کان پوءِ، اسان پيڪيجز کي CTID ۽ VM تي تازه ڪاري ڪنداسين (او ايس کي اپڊيٽ ڪرڻ سان پريشان نه ٿيو - اسان ان کي اپڊيٽ نه ڪندا آهيون، اسان صرف پيڪيجز کي اپڊيٽ ڪندا آهيون ۽، جيڪڏهن اهو اچي ٿو، او ايس ورزن جي اندر اندر. نسخو).

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

ديبين، يوبنچو:

# 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 لانچ ڪرڻ ۾ مدد ڏين ٿيون.
سان سرورز تي سسٽم اچو ته هڪ حڪم تي عمل ڪريو جيڪو اسان کي باقاعده ڪنسول ۾ لاگ ان ڪرڻ ۾ مدد ڪندو، مثال طور، 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; }

سڀني سرورن تي، جيڪڏهن Apache لاءِ mod_fcgid نصب ڪيو ويو، اسان حقن سان گڏ هڪ ننڍڙو حل ڪنداسين، ٻي صورت ۾ سائيٽون mod_fcgid استعمال ڪندي غلطي 500 سان خراب ٿي وينديون:

chmod +s `which suexec` && apachectl restart

۽ آخري شيء Ubuntu ۽ Debian تقسيم لاء مفيد آهي. هي او ايس هڪ غلطي سان دائمي بوٽ ۾ حادثو ٿي سگهي ٿو

تمام تيز ڦرڻ. throttling عملدرآمد ٿورڙو

ناپسنديده، پر آساني سان طئي ٿيل، او ايس ورزن تي منحصر آهي.

تي ديبين 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, ديبين 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 ۾ چيڪ ڪريو ته لوڊشيڊنگ ڪيئن ٿي رهي آهي ۽، مثالي طور تي، هر شي بغير ڪنهن مسئلن جي لوڊ ڪندي. جيتوڻيڪ اهو ممڪن آهي ته لڏپلاڻ کان پوءِ ڪي خاص مسئلا سامهون اچن، پر اهي هن مضمون جي دائري کان ٻاهر آهن ۽ جيئن ئي پيدا ٿيندا ته انهن کي درست ڪيو ويندو.

مون کي اميد آهي ته هي معلومات مفيد آهي! 🙂

جو ذريعو: www.habr.com

تبصرو شامل ڪريو