LINSTOR اسٹوریج اور OpenNebula کے ساتھ اس کا انضمام

LINSTOR اسٹوریج اور OpenNebula کے ساتھ اس کا انضمام

کچھ عرصہ پہلے، LINBIT کے لڑکوں نے اپنا نیا SDS حل پیش کیا - Linstor۔ یہ ثابت شدہ ٹیکنالوجیز پر مبنی مکمل طور پر مفت اسٹوریج ہے: DRBD, LVM, ZFS۔ Linstor سادگی اور اچھی طرح سے ڈیزائن کردہ فن تعمیر کو یکجا کرتا ہے، جو آپ کو استحکام اور کافی متاثر کن نتائج حاصل کرنے کی اجازت دیتا ہے۔

آج میں اس کے بارے میں تھوڑی اور تفصیل سے بات کرنا چاہوں گا اور یہ بتانا چاہوں گا کہ اسے linstor_un کا استعمال کرتے ہوئے OpenNebula کے ساتھ کتنی آسانی سے مربوط کیا جا سکتا ہے - ایک نیا ڈرائیور جسے میں نے خاص طور پر اس مقصد کے لیے تیار کیا ہے۔

Linstor OpenNebula کے ساتھ مل کر آپ کو ایک تیز اور قابل اعتماد کلاؤڈ بنانے کی اجازت دیتا ہے جسے آپ کے اپنے انفراسٹرکچر پر آسانی سے تعینات کیا جا سکتا ہے۔

لنسٹر فن تعمیر

Linstor نہ تو فائل سسٹم ہے اور نہ ہی بلاک اسٹوریج فی سی، Linstor ایک آرکیسٹریٹر ہے جو ایک تجریدی پرت فراہم کرتا ہے جو آپ کو LVM یا ZFS میں حجم کی تخلیق کو خودکار کرنے اور DRBD9 کا استعمال کرتے ہوئے ان کی نقل تیار کرنے کی اجازت دیتا ہے۔

دقیانوسی تصورات کو توڑنا

لیکن انتظار کرو، DRBD؟ - اسے خود کار کیوں بنائیں اور یہ کیسے کام کر سکتا ہے؟

آئیے ماضی کو یاد کرتے ہیں، جب DRBD8 بہت مشہور تھا۔ اس کے معیاری استعمال میں ایک ہی LVM کا استعمال کرتے ہوئے ایک بڑا بلاک ڈیوائس بنانا اور اسے کئی چھوٹے ٹکڑوں میں کاٹنا شامل ہے۔ mdadm RAID-1 کی ایک قسم لیکن نیٹ ورک پر نقل کے ساتھ۔

یہ نقطہ نظر اپنی خرابیوں کے بغیر نہیں ہے، اور اس لیے، DRBD9 کی آمد کے ساتھ، اسٹوریج ڈیزائن کے اصول بدل گئے ہیں؛ اب ہر ورچوئل مشین کے لیے ایک علیحدہ DRBD ڈیوائس بنائی گئی ہے۔

آزاد بلاک آلات کے ساتھ نقطہ نظر کلسٹر میں جگہ کے بہتر استعمال کی اجازت دیتا ہے، اور کئی اضافی خصوصیات کا اضافہ بھی کرتا ہے۔ مثال کے طور پر، ہر اس طرح کے آلے کے لیے آپ نقل کی تعداد، ان کے مقام اور انفرادی ترتیبات کا تعین کر سکتے ہیں۔ وہ تخلیق/حذف کرنے، اسنیپ شاٹس لینے، سائز تبدیل کرنے، انکرپشن کو فعال کرنے اور بہت کچھ کرنے میں آسان ہیں۔ یہ بات قابل غور ہے کہ DRBD9 کورم کو بھی سپورٹ کرتا ہے، جو آپ کو تقسیم دماغی حالات سے بچنے کی اجازت دیتا ہے۔

وسائل اور بیک اینڈ

ایک نیا بلاک ڈیوائس بناتے وقت، Linstor کلسٹر میں مختلف نوڈس پر نقل کی مطلوبہ تعداد رکھتا ہے۔ ہم ایسی ہر ایک نقل کو DRBD وسیلہ کہیں گے۔

وسائل کی دو قسمیں ہیں:

  • ڈیٹا ریسورس — ایک DRBD ڈیوائس ہے جو LVM یا ZFS پول میں نوڈ پر واقع ہے۔
    اس وقت کئی بیک اینڈس کے لیے سپورٹ موجود ہے اور ان کی تعداد مسلسل بڑھ رہی ہے۔ LVM، ThinLVM اور ZFS کے لیے تعاون موجود ہے۔ آخری دو آپ کو سنیپ شاٹس بنانے اور استعمال کرنے کی اجازت دیتے ہیں۔
  • ڈسک لیس وسیلہ — ایک DRBD ڈیوائس ہے جسے بغیر بیک اینڈ کے نوڈ پر رکھا گیا ہے، لیکن اسے باقاعدہ بلاک ڈیوائس کے طور پر استعمال کرنے کی اجازت دیتا ہے؛ تمام پڑھنے/لکھنے کی کارروائیوں کو ڈیٹا کے وسائل پر بھیج دیا جائے گا۔ ڈسک لیس وسائل کا قریب ترین اینالاگ iSCSI LUN ہے۔

ہر DRBD وسائل میں 8 نقلیں ہو سکتی ہیں، اور ان میں سے صرف ایک ڈیفالٹ کے طور پر فعال ہو سکتا ہے۔ پرائمری، باقی سب ہوں گے۔ سیکنڈری اور ان کا استعمال اس وقت تک ناممکن ہو گا جب تک کہ کم از کم ایک پرائمری موجود ہو، یعنی وہ اپنے درمیان ڈیٹا کی نقل تیار کریں گے۔

سسٹم میں DRBD ڈیوائس انسٹال کرنے سے یہ خود بخود بن جاتا ہے۔ پرائمریاس طرح DRBD کی اصطلاح میں ایک Diskless وسیلہ بھی پرائمری ہو سکتا ہے۔

تو آپ کو Linstor کی ضرورت کیوں ہے؟

تمام وسائل سے متعلق کام کرنل کو سونپ کر، Linstor بنیادی طور پر ایک باقاعدہ جاوا ایپلی کیشن ہے جو آپ کو آسانی سے DRBD وسائل کی تخلیق کو خودکار کرنے کی اجازت دیتا ہے۔
مزید برآں، اس کے ذریعہ تخلیق کردہ ہر وسیلہ ایک آزاد DRBD کلسٹر ہوگا جو کنٹرول پلین اور دیگر DRBD وسائل کی حالت سے قطع نظر، آزادانہ طور پر کام کرتا ہے۔

Linstor صرف دو اجزاء پر مشتمل ہے:

  • لنسٹر کنٹرولر - مرکزی کنٹرولر، جو وسائل کی تخلیق اور انتظام کے لیے ایک API فراہم کرتا ہے۔ یہ سیٹلائٹس کے ساتھ بھی بات چیت کرتا ہے، ان پر خالی جگہ کو چیک کرتا ہے، اور نئے وسائل بنانے اور حذف کرنے کے کام بھیجتا ہے۔ یہ ایک ہی مثال میں چلتا ہے اور ایک ڈیٹا بیس کا استعمال کرتا ہے، جو اندرونی (H2) یا بیرونی (PostgreSQL، MySQL، MariaDB) ہو سکتا ہے
  • لنسٹر سیٹلائٹ — تمام سٹوریج نوڈس پر انسٹال ہوتا ہے اور کنٹرولر کو خالی جگہ کے بارے میں معلومات فراہم کرتا ہے، اور کنٹرولر سے موصول ہونے والے کاموں کو بھی انجام دیتا ہے تاکہ ان کے اوپر نئی والیوم اور DRBD ڈیوائسز بنائیں اور حذف کریں۔

Linstor مندرجہ ذیل کلیدی تصورات کے ساتھ کام کرتا ہے:

  • نوڈ - ایک فزیکل سرور جس پر DRBD وسائل بنائے اور استعمال کیے جائیں گے۔
  • اسٹوریج پول — LVM یا ZFS پول نوڈ پر بنایا گیا جس میں DRBD وسائل واقع ہوں گے۔ ایک ڈسک لیس پول بھی ممکن ہے - یہ ایک ایسا پول ہے جس میں صرف ڈسک کے بغیر وسائل موجود ہوں گے۔
  • وسائل کی تعریف - وسائل کی تعریف بنیادی طور پر ایک پروٹو ٹائپ ہے جو نام اور اس کی تمام خصوصیات کو بیان کرتی ہے۔
  • حجم کی تعریف - حجم کی تعریف۔ ہر وسیلہ متعدد جلدوں پر مشتمل ہو سکتا ہے، ہر حجم کا ایک سائز ہونا چاہیے۔
  • ریسورس — بلاک ڈیوائس کی تخلیق کردہ مثال، ہر وسیلہ کو ایک مخصوص نوڈ پر اور کچھ اسٹوریج پول میں رکھا جانا چاہیے۔

لنسٹر کی تنصیب

میں اوبنٹو کو بطور سسٹم استعمال کرنے کی تجویز کرتا ہوں، کیونکہ... اس کے لئے موجود ہے تیار پی پی اے:

add-apt-repository ppa:linbit/linbit-drbd9-stack
apt-get update

یا Debian، جہاں Linstor کو Proxmox کے سرکاری ذخیرے سے انسٹال کیا جا سکتا ہے:

wget -O- https://packages.linbit.com/package-signing-pubkey.asc | apt-key add -
PVERS=5 && echo "deb http://packages.linbit.com/proxmox/ proxmox-$PVERS drbd-9.0" > 
    /etc/apt/sources.list.d/linbit.list
apt-get update

کنٹرولر

یہاں سب کچھ آسان ہے:

apt-get install linstor-controller linstor-client
systemctl enable linstor-controller
systemctl start linstor-controller

اسٹوریج نوڈس

لینکس کرنل فی الحال ایک درخت کے کرنل ماڈیول کے ساتھ بھیجتا ہے۔ DRBD8، بدقسمتی سے یہ ہمارے مطابق نہیں ہے اور ہمیں انسٹال کرنے کی ضرورت ہے۔ DRBD9:

apt-get install drbd-dkms

جیسا کہ پریکٹس سے پتہ چلتا ہے، زیادہ تر مشکلات اس لیے پیدا ہوتی ہیں کہ DRBD8 ماڈیول سسٹم میں لوڈ ہوتا ہے، نہ کہ DRBD9 میں۔ خوش قسمتی سے، اسے چلا کر چیک کرنا آسان ہے:

modprobe drbd
cat /proc/drbd

اگر آپ دیکھیں ورژن: 9 - اس کا مطلب ہے کہ اگر سب کچھ ٹھیک ہے۔ ورژن: 8 - اس کا مطلب ہے کہ کچھ غلط ہو گیا ہے اور آپ کو وجوہات جاننے کے لیے اضافی اقدامات کرنے کی ضرورت ہے۔

اب انسٹال کرتے ہیں۔ linstor-satellite и drbd-utils:

apt-get install linstor-satellite drbd-utils
systemctl enable linstor-satellite
systemctl start linstor-satellite

ایک کلسٹر بنائیں

ذخیرہ کرنے کے تالاب اور نوڈس

بیک اینڈ کے طور پر ہم لیں گے۔ ThinLVMکیونکہ یہ سب سے آسان ہے اور سنیپ شاٹس کو سپورٹ کرتا ہے۔
سیٹ کریں lvm2، اگر آپ نے پہلے ہی ایسا نہیں کیا ہے، تو آئیے اپنے تمام اسٹوریج نوڈس پر ایک ThinLVM پول بنائیں:

sudo vgcreate drbdpool /dev/sdb
sudo lvcreate -L 800G -T drbdpool/thinpool

تمام مزید کارروائیاں براہ راست کنٹرولر پر کی جا سکتی ہیں:

آئیے اپنے نوڈس شامل کریں:

linstor node create node1 127.0.0.11
linstor node create node2 127.0.0.12
linstor node create node3 127.0.0.13

آئیے اسٹوریج پول بنائیں:

linstor storage-pool create lvmthin node1 data drbdpool/thinpool
linstor storage-pool create lvmthin node2 data drbdpool/thinpool
linstor storage-pool create lvmthin node3 data drbdpool/thinpool

اب آئیے بنائے گئے تالابوں کو چیک کرتے ہیں:

linstor storage-pool list

اگر سب کچھ صحیح طریقے سے کیا جاتا ہے، تو ہمیں کچھ اس طرح دیکھنا چاہئے:

+---------------------------------------------------------------- ------------------------------------------------------------------ ----+ | اسٹوریج پول | نوڈ | ڈرائیور | پول کا نام | مفت صلاحیت | کل صلاحیت | اسنیپ شاٹس کی حمایت کرتا ہے | |------------------------------------------------ ------------------------------------------------------------------ ---| | ڈیٹا | node1 | LVM_THIN | drbdpool/thinpool | 64 GiB | 64 GiB | سچ | | ڈیٹا | node2 | LVM_THIN | drbdpool/thinpool | 64 GiB | 64 GiB | سچ | | ڈیٹا | node3 | LVM_THIN | drbdpool/thinpool | 64 GiB | 64 GiB | سچ | +---------------------------------------------------------------- ------------------------------------------------------------------ ----+

DRBD وسائل

اب آئیے اپنا نیا DRBD وسیلہ بنانے کی کوشش کریں:

linstor resource-definition create myres
linstor volume-definition create myres 1G
linstor resource create myres --auto-place 2

آئیے تخلیق کردہ وسائل کو چیک کریں:

linstor resource list 

+---------------------------------------------------------------- ------------------------------------------------------------------ ---+ | نوڈ | وسائل | اسٹوریج پول | والیوم این آر | MinorNr | ڈیوائس کا نام | مختص | InUse | ریاست | |------------------------------------------------ ------------------------------------------------------------------ --| | node1 | myres | ڈیٹا | 0 | 1084 | /dev/drbd1084 | 52 KiB | غیر استعمال شدہ | UpToDate | | node2 | myres | ڈیٹا | 0 | 1084 | /dev/drbd1084 | 52 KiB | غیر استعمال شدہ | UpToDate | +---------------------------------------------------------------- ------------------------------------------------------------------ ---+

زبردست! - ہم دیکھتے ہیں کہ وسائل پہلے دو نوڈس پر بنائے گئے تھے، ہم تیسرے پر بھی ڈسک لیس ریسورس بنانے کی کوشش کر سکتے ہیں:

linstor resource create --diskless node3 myres

نوڈس پر آپ کو یہ آلہ ہمیشہ اس طرح ملے گا۔ /dev/drbd1084 یا /dev/drbd/by-res/myres/0

Linstor اس طرح کام کرتا ہے، آپ اس سے مزید معلومات حاصل کر سکتے ہیں۔ سرکاری دستاویزات.

اب میں آپ کو بتاؤں گا کہ اسے OpenNebula کے ساتھ کیسے ضم کیا جائے۔

OpenNebula ترتیب دینا

میں OpenNebula سیٹ اپ کے عمل میں زیادہ گہرائی میں نہیں جاؤں گا، کیونکہ... تمام مراحل میں تفصیل سے بیان کیا گیا ہے۔ سرکاری دستاویزاتجس کا میں آپ کو مشورہ دیتا ہوں کہ رابطہ کریں، میں آپ کو صرف Linstor کے ساتھ OpenNebula کے انضمام کے بارے میں بتاؤں گا۔

linstor_un

اس مسئلے کو حل کرنے کے لیے میں نے اپنے ڈرائیور کو لکھا - linstor_un، یہ فی الحال ایک پلگ ان کے طور پر دستیاب ہے اور اسے الگ سے انسٹال کرنا ضروری ہے۔

پوری تنصیب فرنٹ اینڈ اوپن نیبولا نوڈس پر کی جاتی ہے اور کمپیوٹ نوڈس پر اضافی کارروائیوں کی ضرورت نہیں ہوتی ہے۔

سب سے پہلے، ہمیں اس بات کا یقین کرنے کی ضرورت ہے کہ ہمارے پاس ہے jq и linstor-کلائنٹ:

apt-get install jq linstor-client

ٹیم linstor node list نوڈس کی فہرست ظاہر کرنی چاہیے۔ تمام OpenNebula کمپیوٹ نوڈس کو Linstor کلسٹر میں شامل کرنا ضروری ہے۔

پلگ ان کو ڈاؤن لوڈ اور انسٹال کریں:

curl -L https://github.com/OpenNebula/addon-linstor_un/archive/master.tar.gz | tar -xzvf - -C /tmp

mv /tmp/addon-linstor_un-master/vmm/kvm/* /var/lib/one/remotes/vmm/kvm/

mkdir -p /var/lib/one/remotes/etc/datastore/linstor_un
mv /tmp/addon-linstor_un-master/datastore/linstor_un/linstor_un.conf /var/lib/one/remotes/etc/datastore/linstor_un/linstor_un.conf

mv /tmp/addon-linstor_un-master/datastore/linstor_un /var/lib/one/remotes/datastore/linstor_un
mv /tmp/addon-linstor_un-master/tm/linstor_un /var/lib/one/remotes/tm/linstor_un

rm -rf /tmp/addon-linstor_un-master

اب ہمیں اسے OpenNebula config میں شامل کرنے کی ضرورت ہے، ایسا کرنے کے لیے ہم بیان کردہ آسان اقدامات پر عمل کرتے ہیں۔ یہاں.

پھر OpenNebula کو دوبارہ شروع کریں:

systemctl restart opennebula

اور ہمارے ڈیٹا اسٹورز، سسٹم کو شامل کریں:

cat > system-ds.conf <<EOT
NAME="linstor-system"
TYPE="SYSTEM_DS"
STORAGE_POOL="data"
AUTO_PLACE="2"
CLONE_MODE="snapshot"
CHECKPOINT_AUTO_PLACE="1"
BRIDGE_LIST="node1 node2 node3"
TM_MAD="linstor_un"
EOT

onedatastore create system-ds.conf

اور تصویر کی دکان:

cat > images-ds.conf <<EOT
NAME="linstor-images"
TYPE="IMAGE_DS"
STORAGE_POOL="data"
AUTO_PLACE="2"
BRIDGE_LIST="node1 node2 node3"
DISK_TYPE="BLOCK"
DS_MAD="linstor_un"
TM_MAD="linstor_un"
EOT

onedatastore create images-ds.conf

  • پیرامیٹر AUTO_PLACE ڈیٹا ریپلیکس کی تعداد دکھاتا ہے جو OpenNebula میں ہر نئی تصویر کے لیے بنائے جائیں گے۔
  • پیرامیٹر CLONE_MODE بالکل اس بات کی نشاندہی کرتا ہے کہ نئی ورچوئل مشینیں بناتے وقت تصاویر کو کس طرح کلون کیا جائے گا، snapshot - تصویر کا ایک سنیپ شاٹ بنائے گا اور اسنیپ شاٹ سے ایک ورچوئل مشین تعینات کرے گا، copy - ہر ورچوئل مشین کے لیے تصویر کی مکمل کاپی بنائے گا۔
  • В BRIDGE_LIST ان تمام نوڈس کی وضاحت کرنے کی سفارش کی جاتی ہے جو امیج کلوننگ کی کارروائیوں کو انجام دینے کے لیے استعمال کیے جائیں گے۔

معاون پیرامیٹرز کی مکمل فہرست کے لیے، دیکھیں پڑھیں پروجیکٹ

یہ سیٹ اپ مکمل کرتا ہے، اب آپ آفیشل سے کچھ آلات ڈاؤن لوڈ کر سکتے ہیں۔ اوپن نیبولا مارکیٹ پلیس اور اس سے ورچوئل مشینیں بنائیں۔

پروجیکٹ لنک:
https://github.com/OpenNebula/addon-linstor_un

ماخذ: www.habr.com

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