قم بإنشاء حل تجاوز الفشل استنادًا إلى بنية Oracle RAC و AccelStor Shared-Nothing

يوجد لدى عدد كبير من تطبيقات Enterprise وأنظمة المحاكاة الافتراضية آليات خاصة بها لبناء حلول تتحمل الأخطاء. على وجه الخصوص ، Oracle RAC (Oracle Real Application Cluster) عبارة عن مجموعة من خوادم أوراكل لقاعدة بيانات أو أكثر تعمل معًا لتحقيق التوازن بين التحميل وتوفير التسامح مع الخطأ على مستوى الخادم / التطبيق. للعمل في هذا الوضع ، يلزم وجود تخزين مشترك يكون دوره عادةً هو التخزين.


كما ناقشنا بالفعل في أحد مقالاتنا ، في حد ذاته ، على الرغم من وجود مكونات مكررة (بما في ذلك وحدات التحكم) ، لا تزال أنظمة التخزين تعاني من نقاط فشل - بشكل رئيسي في شكل مجموعة بيانات واحدة. لذلك ، لبناء حل Oracle مع متطلبات الموثوقية المتزايدة ، يجب أن يكون مخطط "خوادم N - وحدة تخزين واحدة" معقدًا.




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


يجب أن تحتوي هذه الخزانات على كل مجموعة المعدات والبرامج الضرورية التي تضمن تشغيل قواعد بيانات Oracle بغض النظر عن حالة "الجوار". بمعنى آخر ، باستخدام حل الاسترداد بعد عطل فادح ، نزيل مخاطر الفشل:


  • خوادم تطبيقات أوراكل
  • أنظمة التخزين
  • تبديل النظم
  • الفشل الكامل لجميع المعدات في مجلس الوزراء:
    • انقطاع التيار الكهربائي
    • فشل نظام التبريد
    • العوامل الخارجية (الإنسان ، الطبيعة ، إلخ)

يتضمن تكرار خوادم Oracle مبدأ Oracle RAC ذاته ويتم تنفيذه من خلال التطبيق. الازدواجية في أدوات التبديل هي أيضا ليست مشكلة. ولكن مع ازدواج نظام التخزين ، كل شيء ليس بهذه البساطة.


الخيار الأسهل هو النسخ المتماثل للبيانات من التخزين الأساسي إلى النسخ الاحتياطي. متزامن أو غير متزامن ، وهذا يتوقف على قدرات التخزين. يثير النسخ المتماثل غير المتزامن على الفور مسألة ضمان تناسق البيانات مع Oracle. ولكن حتى إذا كان هناك تكامل بين البرامج والتطبيق ، على أي حال ، في حالة وقوع حادث على نظام التخزين الرئيسي ، فسوف تكون هناك حاجة إلى تدخل يدوي من قبل المسؤولين من أجل تحويل الكتلة إلى التخزين الاحتياطي.


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


فقط للسيناريوهات مثل الاسترداد بعد عطل فادح في حالة الكوارث ، تعد مجموعة All Flash AccelStor NeoSapphire ™ H710 باستخدام بنية Shared-Nothing مثالية . هذا النموذج عبارة عن نظام تخزين ثنائي يستخدم تقنية FlexiRemap® الخاصة به للعمل مع محركات أقراص فلاش. بفضل FlexiRemap® NeoSapphire ™ H710 ، يمكنه تقديم ما يصل إلى 600 كيلو بايت من الكتابة العشوائية IOPS @ 4K وقراءة عشوائية 1M + IOPS @ 4K ، والتي لا يمكن الوصول إليها من خلال التخزين الكلاسيكي القائم على RAID.


لكن الميزة الرئيسية لـ NeoSapphire ™ H710 هي تنفيذ عقدتين كحاويات منفصلة ، ولكل منها نسخته الخاصة من البيانات. تتم مزامنة العقدة من خلال واجهة InfiniBand الخارجية. بفضل هذه البنية ، يمكن نشر العقد عبر مواقع مختلفة على مسافات تصل إلى 100 متر ، وبالتالي توفير حل التعافي من الكوارث. كلا العقدتين تعمل تماما في وضع متزامن. من جانب المضيف ، يبدو H710 بمثابة وحدة تخزين عادية مزدوجة التحكم. لذلك ، لا يلزم إجراء أي خيارات إضافية للبرامج والأجهزة ، ولا سيما الإعدادات المعقدة.


إذا قارنت جميع حلول الاسترداد بعد عطل فادح الموضحة أعلاه ، فإن إصدار AccelStor يبرز عن الباقي:


AccelStor NeoSapphire ™ شيء مشترك الهندسة المعماريةبرنامج أو جهاز "virtualizer" للتخزينحل النسخ المتماثل
توفر
فشل الخادملا توقفلا توقفلا توقف
تبديل الفشللا توقفلا توقفلا توقف
فشل التخزينلا توقفلا توقفالتوقف
فشل مجلس الوزراء بأكملهلا توقفلا توقفالتوقف
التكلفة والتعقيد
تكلفة الحلمنخفض *ارتفاعارتفاع
صعوبة النشرمنخفضارتفاعارتفاع

* لا يزال AccelStor NeoSapphire ™ عبارة عن مجموعة All Flash ، والتي لا تكلف بحكم تعريفها "3 كوبيل" ، لا سيما وأن لديها احتياطي مزدوج السعة. ومع ذلك ، عند مقارنة التكلفة الإجمالية للحل استنادًا إلى الحلول المماثلة من البائعين الآخرين ، يمكن اعتبار التكلفة منخفضة.


سيبدو الهيكل الخاص بتوصيل خوادم التطبيقات وعقد مجموعة All Flash كما يلي:



عند تخطيط الهيكل ، يوصى بشدة أيضًا بتكرار مفاتيح الإدارة وتوصيلات الخادم.


فيما يلي ، سنتحدث عن الاتصال عبر القناة الليفية. في حالة استخدام iSCSI ، سيكون كل شيء على حاله ، ويتم ضبطه لأنواع المحولات المستخدمة وإعدادات الصفيف المختلفة قليلاً.


الأعمال التحضيرية على مجموعة


تستخدم الأجهزة والبرامج

مواصفات الخادم والتبديل


المكوناتوصف
خوادم أوراكل قاعدة بيانات 11gاثنان
خادم نظام التشغيلأوراكل لينكس
نسخة قاعدة بيانات أوراكل11 جم (RAC)
معالجات لكل خادماثنين من 16 النواة Intel® Xeon® CPU E5-2667 v2 @ 3.30GHz
الذاكرة الفعلية لكل خادم128GB
شبكة FC16 جيجابت / ثانية FC مع تعدد المسارات
FC HBAEmulex Lpe-16002B
منافذ 1GbE عامة مخصصة لإدارة الكتلةإنتل محول إيثرنت rj45
16 جيجابت / ثانية التبديل FCبروكيد 6505
منافذ خاصة 10 جيجابت مخصصة لتزامن البياناتإنتل X520

AccelStor NeoSapphhire ™ جميع مواصفات صفيف الفلاش


المكوناتوصف
نظام التخزينNeoSapphire ™ طراز التوفر العالي: H710
نسخة الصورة4.0.1
إجمالي عدد محركات الأقراص48
حجم محرك الأقراص1.92TB
نوع محرك الأقراصSSD
منافذ الهدف FCمنافذ 16 × 16 جيجابت (8 لكل عقدة)
منافذ الإدارةيتصل كابل إيثرنت 1GbE بالمضيفين عبر مفتاح إيثرنت
ميناء نبضاتتوصيل كابل إيثرنت 1GbE بين عقدة تخزين اثنين
منفذ تزامن البياناتكابل InfiniBand بسعة 56 جيجابايت / ثانية


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



بعد اكتمال التهيئة ، يمكنك التحكم في الصفيف من أي عقدة.


بعد ذلك ، قم بإنشاء وحدات التخزين الضرورية ونشرها لخوادم التطبيقات.



يوصى بشدة بإنشاء عدة مجلدات لـ Oracle ASM ، حيث سيؤدي ذلك إلى زيادة عدد الأهداف للخوادم ، مما سيؤدي في النهاية إلى تحسين الأداء الكلي (المزيد في قوائم الانتظار في مقال آخر).


اختبار التكوين
اسم حجم التخزينحجم الحجم
Data01200GB
Data02200GB
Data03200GB
Data04200GB
Data05200GB
Data06200GB
Data07200GB
Data08200GB
Data09200GB
Data10200GB
Grid011GB
Grid021GB
Grid031GB
Grid041GB
Grid051GB
Grid061GB
Redo01100GB
Redo02100GB
Redo03100GB
Redo04100GB
Redo05100GB
Redo06100GB
Redo07100GB
Redo08100GB
Redo09100GB
Redo10100GB


بعض التفسيرات حول أوضاع التشغيل للصفيف والعمليات التي تحدث في حالات الطوارئ



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


  • إعادة تشغيل مجدولة لأحد العقد
  • حادث في إحدى العقد بسبب إغلاق مفاجئ (الطاقة ، ارتفاع درجة الحرارة ، وما إلى ذلك).
  • اتصال InfiniBand المعطلة مع عدم القدرة على المزامنة
  • تحطم على واحدة من العقد بسبب تلف البيانات. سوف يتطلب الأمر بالفعل إنشاء مجموعة HA جديدة وتزامن كامل لمجموعة البيانات.

في أي حال ، تزيد العقدة المتبقية على الإنترنت من رقم الإصدار الخاص به ، بحيث بعد مزامنة مجموعة البيانات ، بعد إعادة الاتصال مع الزوج.


في حالة فقد الاتصال عبر ارتباط Ethernet ، فإن Heartbeat تتحول مؤقتًا إلى InfiniBand وتعود مرة أخرى خلال 10 ثوانٍ عند استعادتها.


تكوين المضيف


لضمان التسامح مع الخطأ وزيادة الأداء ، يجب تمكين دعم MPIO للصفيف. للقيام بذلك ، أضف أسطرًا إلى ملف /etc/multipath.conf ، ثم أعد تحميل خدمة المسارات المتعددة


النص المخفي
الأجهزة {
الجهاز {
بائع "AStor"
path_grouping_policy "group_by_prio"
path_selector "قائمة الانتظار طول 0"
path_checker "tur"
ميزات "0"
معالج_الأجهزة "0"
prio "const"
الفشل الفوري
fast_io_fail_tmo 5
dev_loss_tmo 60
user_friendly_names نعم
detect_prio نعم
rr_min_io_rq 1
no_path_retry 0
}
}


علاوة على ذلك ، لكي يعمل ASM مع MPIO من خلال ASMLib ، تحتاج إلى تعديل ملف / etc / sysconfig / oracleasm ثم تشغيل /etc/init.d/oracleasm scandisks


النص المخفي

# ORACLEASM_SCANORDER: مطابقة الأنماط لطلب مسح القرص
ORACLEASM_SCANORDER = "dm"



# ORACLEASM_SCANEXCLUDE: مطابقة الأنماط لاستبعاد الأقراص من الفحص
ORACLEASM_SCANEXCLUDE = "sd"


تعليق


إذا كنت لا ترغب في استخدام ASMLib ، فيمكنك استخدام قواعد UDEV ، والتي تعد أساس ASMLib.


بدءًا من الإصدار 12.1.0.2 من Oracle Database ، يتوفر الخيار للتثبيت كجزء من برنامج ASMFD.



تأكد من أن الأقراص التي تم إنشاؤها لـ Oracle ASM تتم محاذاتها مع حجم الكتلة الذي يعمل الصفيف فعليًا به (4K). خلاف ذلك ، قد تحدث مشاكل في الأداء. لذلك ، يجب عليك إنشاء وحدات تخزين مع المعلمات المناسبة:


افترق / ديف / معين / اسم الجهاز mklabel gpt mkpart الأساسي 2048s 100 ٪ محاذاة الاختيار الأمثل 1


توزيع قواعد البيانات على وحدات التخزين التي تم إنشاؤها لتكوين الاختبار الخاص بنا


اسم حجم التخزينحجم الحجمحجم LUNs رسم الخرائطASM حجم جهاز التفاصيلتخصيص وحدة الحجم
Data01200GBخريطة جميع أحجام التخزين لنظام التخزين جميع منافذ البياناتالتكرار: طبيعي
الاسم: DGDATA
الغرض: ملفات البيانات
4MB
Data02200GB
Data03200GB
Data04200GB
Data05200GB
Data06200GB
Data07200GB
Data08200GB
Data09200GB
Data10200GB
Grid011GBالتكرار: طبيعي
الاسم: DGGRID1
الغرض: الشبكة: CRS والتصويت
4MB
Grid021GB
Grid031GB
Grid041GBالتكرار: طبيعي
الاسم: DGGRID2
الغرض: الشبكة: CRS والتصويت
4MB
Grid051GB
Grid061GB
Redo01100GBالتكرار: طبيعي
الاسم: DGREDO1
الغرض: إعادة سجل من مؤشر الترابط 1

4MB
Redo02100GB
Redo03100GB
Redo04100GB
Redo05100GB
Redo06100GBالتكرار: طبيعي
الاسم: DGREDO2
الغرض: إعادة سجل الخيط 2

4MB
Redo07100GB
Redo08100GB
Redo09100GB
Redo10100GB

إعدادات قاعدة البيانات
  • حجم الكتلة = 8K
  • مساحة المبادلة = 16GB
  • تعطيل AMM (إدارة الذاكرة التلقائية)
  • تعطيل صفحات ضخمة شفافة


الإعدادات الأخرى

# vi /etc/sysctl.conf
✓ fs.aio-max-nr = 1048576
✓ fs.file-max = 6815744
ern kernel.shmmax 103079215104
ern kernel.shmall 31457280
ern kernel.shmmn 4096
ern kernel.sem = 250 32000 100 128
✓ net.ipv4.ip_local_port_range = 9000 65500
✓ net.core.rmem_default = 262144
✓ net.core.rmem_max = 4194304
✓ net.core.wmem_default = 262144
✓ net.core.wmem_max = 1048586
✓ vm.swappiness = 10
m vm.min_free_kbytes = 524288 # لا تقم بتعيين هذا إذا كنت تستخدم Linux x86
✓ vm.vfs_cache_pressure = 200
✓ vm.nr_hugepages = 57000



# vi /etc/security/limits.conf
soft شبكة لينة nproc 2047
✓ شبكة الصلب nproc 16384
✓ شبكة لينة nofile 1024
hard شبكة الصلب nofile 65536
✓ شبكة كومة لينة 10240
✓ شبكة كومة الثابت 32768
✓ أوراكل الناعمة nproc 2047
✓ أوراكل الصعب nproc 16384
✓ أوراكل لينة nofile 1024
✓ أوراكل الصعب nofile 65536
✓ أوراكل لينة كومة 10240
✓ أوراكل الصلب كومة 32768
✓ لينة memlock 120795954
✓ الثابت memlock 120795954


sqlplus "/ as sysdba"
تغيير عمليات مجموعة النظام = 2000 range = spfile؛
تبديل مجموعة النظام open_cursors = 2000 scope = spfile؛
تغيير مجموعة دورات session_cached_cursors = 300 نطاق = spfile ؛
تغيير مجموعة النظام db_files = 8192 scope = spfile؛




اختبار التسامح مع الخطأ


لأغراض العرض التوضيحي ، تم استخدام HammerDB لمضاهاة تحميل OLTP. تكوين HammerDB:


عدد المستودعات256
إجمالي المعاملات لكل مستخدم1000000000000
المستخدمين الظاهري256

نتيجة لذلك ، تم الحصول على مؤشر TPM 2.1M ، وهو أبعد ما يكون عن الحد الأقصى لأداء صفيف H710 ، لكنه "السقف" لتكوين الأجهزة الحالي للخوادم (يرجع أساسًا إلى المعالجات) وعددهم. لا يزال الغرض من هذا الاختبار هو إظهار التسامح مع الخطأ للحل ككل ، وليس لتحقيق أقصى أداء. لذلك ، سوف نبني ببساطة على هذا الرقم.



اختبار لفشل إحدى العقد




خسر المضيفون بعض المسارات إلى المتجر ، واستمروا في العمل من خلال المسارات المتبقية مع العقدة الثانية. انخفض الأداء لبضع ثوان بسبب إعادة هيكلة المسارات ، ثم عاد إلى طبيعته. لم يحدث انقطاع في الخدمة.


اختبار فشل مجلس الوزراء مع جميع المعدات




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


إذا كنت بحاجة إلى تنفيذ حل لاسترداد عطل الكوارث عبر نظام التحمل المسبق للأخطاء بتكلفة معقولة وبأقل مجهود في النشر / الإدارة ، فإن العمل مع Oracle RAC و AccelStor Shared-Nothing سيكون أحد أفضل الخيارات. بدلاً من Oracle RAC ، يمكن أن يكون هناك أي برامج أخرى تنص على التجميع ، أو أنظمة إدارة قواعد البيانات أو الأنظمة الافتراضية نفسها ، على سبيل المثال. سيبقى مبدأ بناء الحل كما هو. والنتيجة النهائية هي صفر ل RTO و RPO.

Source: https://habr.com/ru/post/ar448538/


All Articles