اوپن وی زیڈ 6 کنٹینر کو بغیر سر درد کے KVM سرور میں کیسے منتقل کیا جائے۔

کوئی بھی شخص جسے اپنی زندگی میں کم از کم ایک بار مکمل KVM ورچوئلائزیشن کے ساتھ ایک OpenVZ کنٹینر کو سرور میں منتقل کرنے کی ضرورت ہے، اسے کچھ مسائل کا سامنا کرنا پڑا ہے:

  • زیادہ تر معلومات صرف پرانی ہیں اور OS کے لیے متعلقہ تھیں جنہوں نے EOL سائیکل کو طویل عرصے سے گزارا تھا۔
  • مختلف آپریٹنگ سسٹمز کے لیے ہمیشہ مختلف معلومات فراہم کی جاتی ہیں، اور منتقلی کے دوران ممکنہ غلطیوں پر کبھی غور نہیں کیا جاتا
  • کبھی کبھی آپ کو کنفیگریشنز سے نمٹنا پڑتا ہے جو ہجرت کے بعد کام نہیں کرنا چاہتے

جب آپ 1 سرور کو منتقل کرتے ہیں، تو آپ ہمیشہ پرواز پر کچھ ٹھیک کر سکتے ہیں، لیکن جب آپ پورے کلسٹر کو منتقل کرتے ہیں؟

اس آرٹیکل میں میں آپ کو یہ بتانے کی کوشش کروں گا کہ اوپن وی زیڈ کنٹینر کو کم سے کم ٹائم ٹائم اور تمام مسائل کے فوری حل کے ساتھ KVM میں کیسے منتقل کیا جائے۔

ایک چھوٹا تعلیمی پروگرام: اوپن وی زیڈ کیا ہے اور کے وی ایم کیا ہے؟

ہم اصطلاحات کی گہرائی میں نہیں جائیں گے، لیکن عام اصطلاحات میں کہیں گے:

اوپن ویز - آپریٹنگ سسٹم کی سطح پر ورچوئلائزیشن، آپ اسے مائکروویو پر بھی تعینات کر سکتے ہیں، کیونکہ میزبان مشین پر CPU ہدایات اور ورچوئلائزیشن ٹیکنالوجیز کی ضرورت نہیں ہے۔

KVM - مکمل ورچوئلائزیشن، سی پی یو کی تمام طاقت کا استعمال کرتے ہوئے اور کسی بھی چیز کو ورچوئلائز کرنے کے قابل، کسی بھی طرح، اسے لمبائی اور کراس کی طرف کاٹ کر۔

عام خیال کے برعکس کہ ہوسٹنگ فراہم کرنے والوں میں OpenVZ زیادہ فروخت ہو جائے گا، لیکن KVM نہیں ہو گا - خوش قسمتی سے بعد کے لیے، KVM اب اپنے بھائی سے زیادہ زیادہ فروخت نہیں ہو رہا ہے۔

ہم کیا لے جائیں گے؟

ٹرانسفر کے ٹیسٹ مضامین کے طور پر، ہمیں آپریٹنگ سسٹمز کے پورے جنگل کو استعمال کرنا پڑا جو OpenVZ پر دستیاب ہیں: CentOS (6 اور 7 ورژن)، Ubuntu (14, 16 اور 18 LTS)، Debian 7۔

یہ فرض کیا گیا تھا کہ OpenVZ کے زیادہ تر کنٹینرز پہلے سے ہی کسی نہ کسی قسم کے LAMP چلا رہے تھے، اور کچھ کے پاس کچھ خاص سافٹ ویئر بھی تھے۔ اکثر، یہ آئی ایس پی مینیجر، ویسٹا سی پی کنٹرول پینل کے ساتھ کنفیگریشنز ہوتے تھے (اور اکثر، سالوں سے اپ ڈیٹ نہیں ہوتے)۔ ان کی منتقلی کی درخواستوں کو بھی مدنظر رکھا جانا چاہیے۔

منتقلی کنٹینر کے IP ایڈریس کو محفوظ رکھتے ہوئے منتقلی کی جاتی ہے؛ ہم فرض کریں گے کہ کنٹینر کے پاس موجود IP VM پر محفوظ ہے اور بغیر کسی پریشانی کے کام کرے گا۔

منتقل کرنے سے پہلے، آئیے یقینی بنائیں کہ ہمارے پاس سب کچھ ہے:

  • اوپن وی زیڈ سرور، میزبان مشین تک مکمل جڑ تک رسائی، کنٹینرز کو روکنے/ماؤنٹ/اسٹارٹ/ڈیلیٹ کرنے کی صلاحیت
  • KVM سرور، میزبان مشین تک مکمل جڑ تک رسائی، ان تمام چیزوں کے ساتھ جو اس کا مطلب ہے۔ یہ فرض کیا جاتا ہے کہ سب کچھ پہلے سے ترتیب دیا گیا ہے اور جانے کے لئے تیار ہے۔

آئیے منتقلی شروع کریں۔

اس سے پہلے کہ ہم منتقلی شروع کریں، آئیے ایسی شرائط کی وضاحت کریں جو آپ کو الجھن سے بچنے میں مدد کریں گی۔

KVM_NODE - KVM میزبان مشین
VZ_NODE - اوپن وی زیڈ ہوسٹ مشین
سی ٹی آئی ڈی - اوپن وی زیڈ کنٹینر
VM - KVM ورچوئل سرور

ہجرت کی تیاری اور ورچوئل مشینیں بنانا۔

1 مرحلہ

چونکہ ہمیں کنٹینر کو کہیں منتقل کرنے کی ضرورت ہے، ہم بنائیں گے۔ VM سے ملتی جلتی ترتیب کے ساتھ KVM_NODE.
اہم! آپ کو آپریٹنگ سسٹم پر ایک VM بنانے کی ضرورت ہے جو فی الحال CTID پر چل رہا ہے۔ مثال کے طور پر، اگر Ubuntu 14 CTID پر انسٹال ہے، تو Ubuntu 14 VM پر انسٹال ہونا ضروری ہے۔ چھوٹے ورژن اہم نہیں ہیں اور ان میں تضاد اتنا اہم نہیں ہے، لیکن بڑے ورژن ایک جیسے ہونے چاہئیں۔

VM بنانے کے بعد، ہم پیکجوں کو CTID اور VM پر اپ ڈیٹ کریں گے (OS کو اپ ڈیٹ کرنے میں الجھن میں نہ پڑیں - ہم اسے اپ ڈیٹ نہیں کرتے ہیں، ہم صرف پیکجز کو اپ ڈیٹ کرتے ہیں اور، اگر یہ آتا ہے تو OS ورژن کو مین کے اندر۔ ورژن)۔

CentOS کے لئے یہ عمل بے ضرر لگتا ہے:

# yum clean all
# yum update -y

اور Ubuntu اور Debian کے لیے کم نقصان دہ نہیں:

# apt-get update
# apt-get upgrade

2 مرحلہ

پر انسٹال کریں۔ سی ٹی آئی ڈی, VZ_NODE и VM افادیت rsync:

CentOS:

# yum install rsync -y

Debian، Ubuntu:

# apt-get install rsync -y

ہم وہاں یا وہاں کچھ اور انسٹال نہیں کر رہے ہیں۔

3 مرحلہ

ہم ایک سٹاپ بناتے ہیں سی ٹی آئی ڈی پر VZ_NODE ٹیم

vzctl stop CTID

تصویر لگانا سی ٹی آئی ڈی:

vzctl mount CTID

/vz/root/ فولڈر پر جائیں۔سی ٹی آئی ڈی اور پھانسی

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 انسٹال کیا گیا تھا، تو ہم حقوق کے ساتھ ایک چھوٹا سا حل کریں گے، بصورت دیگر mod_fcgid استعمال کرنے والی سائٹیں خرابی 500 کے ساتھ کریش ہو جائیں گی۔

chmod +s `which suexec` && apachectl restart

اور آخری چیز Ubuntu اور Debian کی تقسیم کے لیے مفید ہے۔ یہ OS غلطی کے ساتھ ابدی بوٹ میں کریش ہو سکتا ہے۔

بہت تیزی سے looping. تھوڑا سا پھانسی تھروٹلنگ

ناخوشگوار، لیکن آسانی سے طے شدہ، OS ورژن پر منحصر ہے۔

پر ڈیبیان 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

اگر اس سے مدد نہیں ملتی ہے تو، دوسرا آپشن آزمائیں۔

کے ساتھ مسئلہ کا دوسرا حل تھوڑا سا پھانسی تھروٹلنگ تقریباً تمام Ubuntu اور Debian کی تقسیم کے لیے موزوں ہے۔

ہم انجام دیتے ہیں۔

bash -x /var/lib/dpkg/info/dbus.postinst configure

اور کے لئے اوبنٹو 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

نیا تبصرہ شامل کریں