تخزين الكتلة لمجموعات الويب الصغيرة بناءً على drbd + ocfs2

عن ماذا سنتحدث:
كيفية نشر التخزين المشترك بسرعة لخادمين على أساس حلول drbd + ocfs2.

لمن سيكون مفيدًا:
سيكون البرنامج التعليمي مفيدًا لمسؤولي النظام وأي شخص يختار طريقة تنفيذ التخزين أو يريد تجربة حل.

ما هي القرارات التي تخلينا عنها ولماذا؟

غالبًا ما نواجه موقفًا نحتاج فيه إلى تنفيذ التخزين المشترك بأداء جيد للقراءة والكتابة على مجموعة ويب صغيرة. لقد جربنا العديد من تطبيقات التخزين المشتركة لمشاريعنا ، لكن القليل منها كان قادرًا على إرضائنا بعدة طرق في وقت واحد. الآن سنخبرك لماذا.

  • لم يناسبنا Glusterfs مع أداء القراءة والكتابة ، كانت هناك مشاكل في القراءة المتزامنة لعدد كبير من الملفات ، وكان هناك حمل كبير على وحدة المعالجة المركزية. يمكن حل مشكلة قراءة الملفات عن طريق طرحها مباشرة في قوالب ، ولكن هذا لا ينطبق دائمًا وهو خاطئ بشكل عام.

  • لم يعجب Ceph التعقيد الإضافي ، والذي يمكن أن يكون ضارًا في المشاريع التي تحتوي على 2-4 خوادم ، خاصةً إذا تمت صيانة المشروع لاحقًا. مرة أخرى ، هناك قيود خطيرة على الأداء ، مما يجبرك على إنشاء مجموعات تخزين منفصلة ، تمامًا كما هو الحال مع glusterfs.

  • يثير استخدام خادم nfs واحد لتنفيذ التخزين المشترك مشكلات من حيث التسامح مع الأخطاء.

  • يعد s3 حلاً شائعًا لمجموعة معينة من المهام ، ولكنه ليس نظام ملفات ، مما يضيق النطاق.

  • lsyncd. إذا كنا قد بدأنا بالفعل الحديث عن "أنظمة غير الملفات" ، فإن الأمر يستحق البحث في هذا الحل الشائع. ليس فقط أنه غير مناسب للتبادل ثنائي الاتجاه (ولكن إذا كنت تريد ذلك حقًا ، فيمكنك ذلك) ، كما أنه لا يعمل بشكل ثابت على عدد كبير من الملفات. إضافة لطيفة لكل شيء هو أنه أحادي الخيط. السبب في بنية البرنامج: يستخدم inotify لمراقبة كائنات العمل التي يتم تعليقها عند بدء التشغيل وعند إعادة المسح. وسيط النقل هو rsync.

البرنامج التعليمي: كيفية نشر التخزين المشترك بناءً على drbd + ocfs2

كانت الحزمة واحدة من أكثر الحلول ملاءمة لنا ocfs2 + drbd. سنعرض لك الآن كيف يمكنك نشر التخزين المشترك بسرعة لخادمين لقاعدة بيانات الحلول. لكن أولاً ، قليلاً عن المكونات:

دي آر بي دي - نظام تخزين من التوزيع القياسي لنظام Linux ، والذي يسمح لك بتكرار البيانات بين كتل الخادم. التطبيق الرئيسي هو بناء مخازن تتسامح مع الأخطاء.

OCFS2 - نظام ملفات يوفر استخدامًا مشتركًا لنفس التخزين بواسطة عدة أنظمة. تم تضمينه في توزيع Linux وهو عبارة عن وحدة kernel ومجموعة أدوات مساحة المستخدمين للعمل مع FS. يمكن استخدام OCFS2 ليس فقط عبر DRBD ، ولكن أيضًا عبر بروتوكول iSCSI مع اتصالات متعددة. في مثالنا ، نحن نستخدم DRBD.

يتم تنفيذ جميع الإجراءات على خادم ubuntu 18.04 بأدنى حد من التكوين.

الخطوة الأولى: إعداد 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;
}
}

القرص الفوقي داخلي - استخدم نفس أجهزة الكتلة لتخزين البيانات الوصفية
الجهاز / ديف / drbd0 - استخدم / dev / drbd0 كمسار إلى حجم drbd.
القرص / ديف / vdb1 - استخدم / dev / vdb1
المزامنة {معدل 1000M ؛ } - استخدام عرض النطاق الترددي جيجابت
السماح اثنين من الانتخابات التمهيدية - خيار مهم يسمح بقبول التغييرات على خادمين أساسيين
بعد sb-0pri ، بعد sb-1pri ، after-sb-2pri - الخيارات المسؤولة عن تصرفات العقدة عند اكتشاف الانقسام في الدماغ. يمكن العثور على مزيد من التفاصيل في الوثائق.
يصبح أساسيًا على كليهما - يضبط كلا العقدتين على الأساسي.

في حالتنا ، لدينا جهازان افتراضيان متطابقان تمامًا ، مع شبكة افتراضية مخصصة بعرض نطاق ترددي يبلغ 10 جيجابت.

في مثالنا ، أسماء الشبكة الخاصة بنقطتي نظام مجموعة هما drbd1 و drbd2. للتشغيل السليم ، من الضروري مطابقة الأسماء وعناوين IP للمضيفين في / etc / hosts.

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 على كلا العقدتين.

إنشاء FS على drbd0 على أي عقدة:

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

هنا قمنا بإنشاء نظام ملفات يسمى testVol على drbd0 باستخدام المعلمات الافتراضية.

تخزين الكتلة لمجموعات الويب الصغيرة بناءً على drbd + ocfs2

يجب تعيين In / 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

الدليل / وسائل الإعلام / المشتركة ويجب أن يتم إنشاؤها مسبقًا.

هنا نستخدم الخيارين noauto ، مما يعني أن نظام الملفات لن يتم تركيبه عند بدء التشغيل (أفضل تحميل ملفات الشبكة عبر systemd) و heartbeat = local ، مما يعني أن خدمة heartbeat تُستخدم في كل عقدة. هناك أيضًا نبضات عالمية ، وهي أكثر ملاءمة للتجمعات الكبيرة.

بعد ذلك ، يمكنك التحميل / وسائل الإعلام / المشتركة وتحقق من مزامنة المحتوى.

القيام به! نتيجة لذلك ، نحصل على مساحة تخزين أكثر أو أقل مقاومة للأخطاء مع قابلية التوسع والأداء اللائق.

المصدر: www.habr.com

إضافة تعليق