drbd+ocfs2 پر مبنی چھوٹے ویب کلسٹرز کے لیے کلسٹر اسٹوریج

جس کے بارے میں ہم بات کریں گے:
drbd+ocfs2 حل پر مبنی دو سرورز کے لیے مشترکہ اسٹوریج کو تیزی سے کیسے تعینات کیا جائے۔

یہ کس کے لیے مفید ہو گا:
یہ ٹیوٹوریل سسٹم ایڈمنسٹریٹرز اور ہر اس شخص کے لیے مفید ہو گا جو سٹوریج پر عمل درآمد کا طریقہ منتخب کرتا ہے یا حل کو آزمانا چاہتا ہے۔

ہم نے کن فیصلوں سے انکار کیا اور کیوں؟

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

  • Glusterfs نے پڑھنے اور لکھنے کی کارکردگی سے ہمیں مطمئن نہیں کیا؛ فائلوں کی ایک بڑی تعداد کو بیک وقت پڑھنے میں مسائل تھے، اور CPU پر بہت زیادہ بوجھ تھا۔ فائلوں کو پڑھنے کا مسئلہ اینٹوں سے براہ راست ان تک رسائی حاصل کر کے حل کیا جا سکتا ہے، لیکن یہ ہمیشہ لاگو نہیں ہوتا اور عام طور پر غلط ہوتا ہے۔

  • سیف کو ضرورت سے زیادہ پیچیدگی پسند نہیں تھی، جو 2-4 سرورز والے پروجیکٹس پر نقصان دہ ہو سکتی ہے، خاص طور پر اگر پروجیکٹ کو بعد میں برقرار رکھا جائے۔ ایک بار پھر، کارکردگی کی سنگین حدود ہیں جو ہمیں علیحدہ اسٹوریج کلسٹرز بنانے پر مجبور کرتی ہیں، جیسا کہ گلسٹرفس کے ساتھ۔

  • مشترکہ اسٹوریج کو لاگو کرنے کے لئے ایک NFS سرور کا استعمال غلطی رواداری کے لحاظ سے سوالات کو جنم دیتا ہے۔

  • s3 کاموں کی ایک خاص حد کے لیے ایک بہترین مقبول حل ہے، لیکن یہ کوئی فائل سسٹم نہیں ہے، جو اس کے دائرہ کار کو کم کرتا ہے۔

  • lsyncd. اگر ہم نے پہلے ہی "نان فائل سسٹمز" کے بارے میں بات کرنا شروع کر دی ہے، تو یہ اس مقبول حل پر جانے کے قابل ہے۔ نہ صرف یہ دو طرفہ تبادلے کے لیے موزوں نہیں ہے (لیکن اگر آپ واقعی چاہتے ہیں، تو آپ کر سکتے ہیں)، یہ فائلوں کی ایک بڑی تعداد پر بھی مستحکم طور پر کام نہیں کرتا ہے۔ پوری چیز میں ایک اچھا اضافہ یہ ہے کہ یہ سنگل تھریڈڈ ہے۔ اس کی وجہ پروگرام کے فن تعمیر میں ہے: یہ کام کی اشیاء کی نگرانی کے لیے inotify کا استعمال کرتا ہے، جسے یہ اسٹارٹ اپ اور دوبارہ اسکیننگ کے دوران تفویض کرتا ہے۔ rsync کو ٹرانسفر میڈیم کے طور پر استعمال کیا جاتا ہے۔

ٹیوٹوریل: drbd+ocfs2 کی بنیاد پر مشترکہ اسٹوریج کو کیسے تعینات کیا جائے۔

ہمارے لیے سب سے آسان حل میں سے ایک لنک تھا۔ ocfs2+drbd. اب ہم آپ کو بتائیں گے کہ آپ حل ڈیٹا بیس کی بنیاد پر دو سرورز کے لیے مشترکہ اسٹوریج کو تیزی سے کیسے تعینات کر سکتے ہیں۔ لیکن پہلے، اجزاء کے بارے میں تھوڑا سا:

ڈی آر بی ڈی - معیاری لینکس ڈسٹری بیوشن کا ایک سٹوریج سسٹم جو آپ کو بلاکس میں سرورز کے درمیان ڈیٹا کو نقل کرنے کی اجازت دیتا ہے۔ بنیادی ایپلی کیشن غلطی برداشت کرنے والا اسٹوریج بنانا ہے۔

OCFS2 - ایک فائل سسٹم جو متعدد سسٹمز کے ذریعہ ایک ہی اسٹوریج کا مشترکہ استعمال فراہم کرتا ہے۔ لینکس کی تقسیم میں شامل ہے اور ایف ایس کے ساتھ کام کرنے کے لیے کرنل ماڈیول اور یوزر اسپیس ٹولز ہے۔ OCFS2 نہ صرف DRBD پر استعمال کیا جا سکتا ہے، بلکہ متعدد کنکشنز کے ساتھ iSCSI پر بھی استعمال کیا جا سکتا ہے۔ ہماری مثال میں ہم DRBD استعمال کرتے ہیں۔

تمام کارروائیاں اوبنٹو سرور 18.04 پر کم سے کم ترتیب میں کی جاتی ہیں۔

مرحلہ 1. DRBD کو ترتیب دیں:

فائل /etc/drbd.d/drbd0.res میں ہم اپنے ورچوئل بلاک ڈیوائس /dev/drbd0 کی وضاحت کرتے ہیں:

resource drbd0 {
    syncer { rate 1000M; }
    net {
        allow-two-primaries;
        after-sb-0pri discard-zero-changes;
        after-sb-1pri discard-secondary;
        after-sb-2pri disconnect;
    }
    startup { become-primary-on both; }
    on drbd1 {
        meta-disk internal;
        device /dev/drbd0;
        disk /dev/vdb1;
        address 10.10.10.192:7789;
}
    on drbd2 {
        meta-disk internal;
        device /dev/drbd0;
        disk /dev/vdb1;
        address 10.10.10.193:7789;
}
}

میٹا ڈسک اندرونی - میٹا ڈیٹا ذخیرہ کرنے کے لیے وہی بلاک ڈیوائسز استعمال کریں۔
ڈیوائس /dev/drbd0 - /dev/drbd0 کو drbd والیوم کے راستے کے طور پر استعمال کریں۔
ڈسک /dev/vdb1 - /dev/vdb1 استعمال کریں۔
مطابقت پذیری { شرح 1000M؛ } - گیگابٹ چینل بینڈوتھ کا استعمال کریں۔
اجازت دو پرائمری - ایک اہم آپشن جو دو بنیادی سرورز پر تبدیلیوں کو قبول کرنے کی اجازت دیتا ہے۔
sb-0pri کے بعد، sb-1pri کے بعد، sb-2pri کے بعد - سپلٹ برین کا پتہ چلنے پر نوڈ کے اعمال کے ذمہ دار اختیارات۔ مزید تفصیلات دستاویزات میں مل سکتی ہیں۔
دونوں پر پرائمری بنیں۔ - دونوں نوڈس کو پرائمری پر سیٹ کرتا ہے۔

ہمارے معاملے میں، ہمارے پاس 10 گیگا بٹس کے تھرو پٹ کے ساتھ ایک سرشار ورچوئل نیٹ ورک کے ساتھ، بالکل ایک جیسے دو VMs ہیں۔

ہماری مثال میں، دو کلسٹر نوڈس کے نیٹ ورک کے نام drbd1 اور drbd2 ہیں۔ مناسب آپریشن کے لیے، آپ کو /etc/hosts میں میزبانوں کے ناموں اور IP پتوں کو ملانے کی ضرورت ہے۔

10.10.10.192 drbd1
10.10.10.193 drbd2

مرحلہ 2. نوڈس ترتیب دیں:

دونوں سرورز پر ہم چلاتے ہیں:

drbdadm create-md drbd0

drbd+ocfs2 پر مبنی چھوٹے ویب کلسٹرز کے لیے کلسٹر اسٹوریج

modprobe drbd
drbdadm up drbd0
cat /proc/drbd

ہم مندرجہ ذیل حاصل کرتے ہیں:

drbd+ocfs2 پر مبنی چھوٹے ویب کلسٹرز کے لیے کلسٹر اسٹوریج

آپ مطابقت پذیری شروع کر سکتے ہیں۔ پہلے نوڈ پر آپ کو عمل کرنے کی ضرورت ہے:

drbdadm primary --force drbd0

آئیے سٹیٹس کو دیکھتے ہیں:

cat /proc/drbd

drbd+ocfs2 پر مبنی چھوٹے ویب کلسٹرز کے لیے کلسٹر اسٹوریج

زبردست، ہم آہنگی شروع ہو گئی ہے۔ ہم آخر تک انتظار کرتے ہیں اور تصویر دیکھتے ہیں:

drbd+ocfs2 پر مبنی چھوٹے ویب کلسٹرز کے لیے کلسٹر اسٹوریج

مرحلہ 3۔ دوسرے نوڈ پر مطابقت پذیری شروع کریں:

drbdadm primary --force drbd0

ہم مندرجہ ذیل حاصل کرتے ہیں:

drbd+ocfs2 پر مبنی چھوٹے ویب کلسٹرز کے لیے کلسٹر اسٹوریج

اب ہم دو سرورز سے drbd پر لکھ سکتے ہیں۔

مرحلہ 4۔ ocfs2 کو انسٹال اور کنفیگر کریں۔

ہم کافی معمولی ترتیب استعمال کریں گے:

cluster:
     node_count = 2
     name = ocfs2cluster

node:
     number = 1
     cluster = ocfs2cluster
     ip_port = 7777
     ip_address = 10.10.10.192
     name = drbd1

node:
     number = 2
     cluster = ocfs2cluster
     ip_port = 7777
     ip_address = 10.10.10.193
     name = drbd2

اس میں لکھنے کی ضرورت ہے۔ /etc/ocfs2/cluster.conf دونوں نوڈس پر.

ہم کسی بھی نوڈ پر drbd0 پر FS بناتے ہیں۔

mkfs.ocfs2 -L "testVol" /dev/drbd0

یہاں ہم نے ڈیفالٹ پیرامیٹرز کا استعمال کرتے ہوئے drbd0 پر testVol لیبل کے ساتھ ایک فائل سسٹم بنایا ہے۔

drbd+ocfs2 پر مبنی چھوٹے ویب کلسٹرز کے لیے کلسٹر اسٹوریج

/etc/default/o2cb میں آپ کو سیٹ کرنے کی ضرورت ہے (جیسا کہ ہماری کنفیگریشن فائل میں ہے)

O2CB_ENABLED=true 
O2CB_BOOTCLUSTER=ocfs2cluster 

اور ہر نوڈ پر عمل کریں:

o2cb register-cluster ocfs2cluster

پھر ہم آن کرتے ہیں اور ان تمام اکائیوں کو شامل کرتے ہیں جن کی ہمیں خود کار طریقے سے چلانے کی ضرورت ہے:

systemctl enable drbd o2cb ocfs2
systemctl start drbd o2cb ocfs2

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

مرحلہ 5۔ دونوں نوڈس پر fstab میں ماؤنٹ پوائنٹس شامل کریں:

/dev/drbd0 /media/shared ocfs2 defaults,noauto,heartbeat=local 0 0

ڈائرکٹری /media/shared یہ پہلے سے پیدا کیا جانا چاہئے.

یہاں ہم noauto آپشنز کا استعمال کرتے ہیں، جس کا مطلب ہے کہ فائل کو اسٹارٹ اپ پر نہیں لگایا جائے گا (میں systemd کے ذریعے نیٹ ورک فائلوں کو ماؤنٹ کرنے کو ترجیح دیتا ہوں) اور heartbeat=local، جس کا مطلب ہے کہ ہر نوڈ پر ہارٹ بیٹ سروس استعمال کرنا۔ عالمی دل کی دھڑکن بھی ہے، جو بڑے کلسٹرز کے لیے زیادہ موزوں ہے۔

اگلا آپ ماؤنٹ کر سکتے ہیں۔ /media/shared اور مواد کی مطابقت پذیری کو چیک کریں۔

ہو گیا! نتیجے کے طور پر، ہمیں اسکیل ایبلٹی اور اچھی کارکردگی کے ساتھ کم و بیش غلطی برداشت کرنے والا اسٹوریج ملتا ہے۔

ماخذ: www.habr.com

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