خدمات قابلية وصول عالية مدعومة من Azure HDInsight
من أجل تزويدك بمستويات مثالية من التوافر لمكونات التحليلات الخاصة بك، تم تطوير HDInsight مع تصميم فريد لضمان قابلية وصول عالية (HA) لتهيئة الخدمات. طورت Microsoft بعض مكونات هذه البنية لتوفير تجاوز الفشل التلقائي. المكونات الأخرى هي مكونات Apache القياسية التي تم استخدامها لدعم خدمات معينة. توضح هذه المقالة بنية تصميم نموذج قابلية الوصول العالية في HDInsight، وكيف يدعم HDInsight تجاوز الفشل لخدمات قابلية وصول عالية، وأفضل الممارسات استرداد من انقطاع الخدمات الأخرى.
إشعار
تحتوي هذه المقالة على مراجع لمصطلح slave، وهو مصطلح لم تعد Microsoft تستخدمه. عند إزالة المصطلح من البرنامج، بالتالي سنزيله من هذه المقالة.
قابلية وصول لبنية أساسية عالية
يوفر HDInsight بنية أساسية مخصصة لضمان توفر أربع خدمات أساسية ذات قابلية وصول عالية مع إمكانيات تجاوز الفشل التلقائي:
- خادم Apache Ambari
- خادم المخطط الزمني للتطبيق Apache YARN
- سجل المهمة للخادم Hadoop MapReduce
- Apache Livy
تتكون هذه البنية الأساسية من العديد من الخدمات ومكونات البرامج، بعضها مصمم من قبل Microsoft. المكوّنات التالية فريدة من نوعها للنظام الأساسي لـ HDInsight:
- وحدة تحكم تجاوز الفشل الاحتياطية
- وحدة تحكم تجاوز الفشل الرئيسية
- خدمة قابلية الوصول العالية الاحتياطية
- خدمة قابلية الوصول العالية الرئيسية
وهناك أيضاً خدمات قابلية وصول عالية أخرى، والتي يتم دعمها بمكونات معتمدة لـ Apache مفتوحة المصدر. هذه المكونات موجودة أيضاً في نظام مجموعات HDInsight:
- نظام ملفات Hadoop (HDFS) NameNode
- YARN ResourceManager
- HBase Master
توفر الأقسام التالية المزيد من التفاصيل حول كيفية عمل هذه الخدمات معا.
خدمات بقابلية وصول عالية لـ HDInsight
توفر Microsoft الدعم لخدمات Apache الأربعة في جدول المتابعة في مجموعات HDInsight. لتمييزهم عن خدمات ذات قابلية وصول عالية ومدعومة بواسطة مكونات من Apache، يطلق عليها خدمات HDInsight HA.
الخدمة | عقد المجموعة | أنواع شبكة نظام المجموعة | الغرض |
---|---|---|---|
خادم Apache Ambari | عُقد الرأس النشطة | الكل | مراقبة نظام المجموعة وإدارتها. |
خادم المخطط الزمني للتطبيق Apache YARN | عُقد الرأس النشطة | الكل ماعدا Kafka | يحافظ على معلومات تصحيح الأخطاء حول وظائف YARN قيد التشغيل على نظام المجموعة. |
سجل المهمة للخادم Hadoop MapReduce | عُقد الرأس النشطة | الكل ماعدا Kafka | يحافظ على بيانات تصحيح الأخطاء لوظائف MapReduce. |
Apache Livy | عُقد الرأس النشطة | Spark | يُمكن التفاعل السهل مع نظام مجموعة Spark عبر واجهة REST |
إشعار
توفر HDInsight نظام مجموعات حزمة أمان (ESP) حاليا فقط توفر قدرة قابلية وصول عالية لملقم الشبكة Ambari. يتم تشغيل كل من Application Timeline Server وJob History Server وLivy فقط على headnode0 ولا تتجاوز الفشل إلى headnode1 عندما يقوم Ambari بتجاوز الفشل. قاعدة بيانات الجدول الزمني للتطبيق موجودة أيضاً على headnode0 وليس على خادم Ambari SQL.
بناء الأنظمة
كل نظام مجموعة من HDInsight لديها عقدتين من headnodes في وضعي النشاط والاستعداد، على التوالي. يشغّل HDInsight خدمات قابلية الوصول العالية على عُقد الرأس فقط. يجب أن يتم تشغيل هذه الخدمات دائماً على عقدة الرأس النشطة، وأن يتم إيقافها ووضعها في وضع الصيانة على عقدة الرأس الجاهزة.
للحفاظ على الحالات الصحيحة لخدمات قابلية الوصول العالية وتوفير تجاوز الفشل السريع، تستخدم HDInsight Apache ZooKeeper، وهي خدمة تنسيق للتطبيقات الموزعة، لإجراء اختيار لعقدة الرأس النشطة. يكوّن HDInsight إعدادات تشغيل الخدمة أيضاً لعدد قليل من خلفية عمليات Java، والتي تنسق إجراء تجاوز الفشل لخدمات HDInsight لقابلية وصول عالية. هذه الخدمات هي: وحدة تحكم تجاوز الفشل الرئيسية، ووحدة التحكم في تجاوز الفشل الرقيق، وخدمة master-ha، وخدمة الرقيق-ha.
Apache ZooKeeper
Apache ZooKeeper هي خدمة تنسيق عالية الأداء للتطبيقات الموزعة. في الإنتاج، يتم تشغيل ZooKeeper عادة في وضع النسخ المتماثل حيث تشكل مجموعة منسوخة نسخا متماثلا من خادم ZooKeeper حصة. يحتوي كل نظام مجموعة من HDInsight على ثلاثة عقد ZooKeeper التي تسمح لثلاثة خوادم ZooKeeper بتشكيل حصة. يحتوي HDInsight على حصتين من حصص ZooKeeper يعملان بالتوازي مع بعضهما. تختار حصة واحدة عقدة الرأس النشطة في نظام مجموعة الذي يجب على خدمات قابلية الوصول العالية في HDInsight تشغيلها. يتم استخدام حصة أخرى لتنسيق خدمات قابلية وصول عالية التي تقدمها Apache، كما هو مفصل في الأقسام اللاحقة.
وحدة تحكم تجاوز الفشل الاحتياطية
وحدة تحكم تجاوز الفشل الفرعية يعمل على كل عقدة في نظام مجموعة HDInsight. وحدة التحكم هذه مسؤولة عن بدء تشغيل عميل Ambari وخدمة قابلية الوصول العالية التابعة على كل عقدة. فإنه يقوم باستعلام حصة ZooKeeper الأولى بشكل دوري عن عقدة الرأس النشطة. عند تغيير العقد الرئيسية النشطة والاستعدادية، تقوم وحدة تحكم تجاوز الفشل الرقيق بتنفيذ الخطوات التالية:
- عمليات تحديث ملف تكوين المضيف.
- إعادة تشغيل عامل Ambari.
تعد خدمة-قابلية الوصول العالية-الفرعية مسؤولة عن إيقاف خدمات قابلية الوصول العالية لـ HDInsight (باستثناء خادم Ambari) على عقدة الرأس الجاهزة.
وحدة تحكم تجاوز الفشل الرئيسية
يتم تشغيل وحدة تحكم تجاوز الفشل الرئيسية على كلا عقدتي الرأس. تتواصل وحدتي التحكم في تجاوز الفشل الرئيسيتين مع أول حصة ZooKeeper لتسمية عقدة الرأس التي يشغِّلونها كعقدة رأس نشطة.
على سبيل المثال، إذا فازت وحدة التحكم الرئيسية في تجاوز الفشل في عقدة الرأس 0 بالانتخاب، فسيتم إجراء التغييرات التالية:
- عقدة الرأس 0 تصبح نشطةً.
- تبدأ وحدة التحكم الرئيسية في تجاوز فشل خادم Ambari وخدمة-قابلية وصول عالية-رئيسية في عقدة الرأس 0.
- توقف وحدة التحكم الرئيسية الأخرى في تجاوز فشل خادم Ambari وخدمة-قابلية وصول عالية رئيسية في عقدة الرأس 1.
يتم تشغيل خدمة قابلية الوصول العالية الرئيسية فقط على عقدة الرأس النشطة، حيث توقف خدمات قابلية وصول عالية لـ HDInsight(باستثناء خادم Ambari) على عقدة الرأس الجاهزة وتبدأ تشغيلها على عقدة الرأس النشطة.
معالجة تجاوز الفشل
تعمل خدمة مراقبة الحالة على كل عقدة رأس جنباً إلى جنب مع وحدة التحكم الرئيسية في تجاوز الفشل لإرسال إشعارات رسالة كشف أخطاء الاتصال إلى حصة Zookeeper. تعتبر عقدة الرأس كخدمة قابلية الوصول العالية في هذا السيناريو. تقوم خدمة مراقبة الحالة بالتحقق من أن كل خدمة قابلية وصول عالية سليمة وما إذا كانت جاهزة للربط باختيار القيادة. إذا كانت الإجابة بنعم، فإن عقدة الرأس هذه تتنافس في الانتخابات. وإذا لم يكن الأمر كذلك، فإنها تتخلى عن الانتخابات حتى تصبح جاهزة مرة أخرى.
إذا كانت عقدة الرأس الاحتياطية تحقق القيادة وتصبح نشطة (كما هو الحال في حالة فشل العقدة النشطة السابقة)، تبدأ وحدة التحكم الرئيسية في تجاوز الفشل جميع خدمات HDInsight HA عليها. توقف وحدة تحكم تجاوز الفشل الرئيسية هذه الخدمات على العقدة الرئيسية الأخرى.
بالنسبة لحالات فشل خدمة قابلية الوصول العالية لـ HDInsight، مثل تعطل الخدمة أو كونها غير سليمة، يجب على وحدة تحكم تجاوز الفشل الرئيسية إعادة تشغيل الخدمات أو إيقافها تلقائياً وفقاً لحالة عقدة الرأس. لا يجب على المستخدمين بدء تشغيل خدمات قابلية الوصول العالية لـ HDInsight، يدوياً على كلي عقدتي الرأس. بدلاً من ذلك، اسمح بتجاوز الفشل التلقائي أو اليدوي للمساعدة في استرداد الخدمة.
التدخل اليدوي غير المقصود
يجب تشغيل خدمات HDInsight HA فقط على عقدة الرأس النشطة، وإعادة تشغيلها تلقائيا عند الضرورة. نظراً لأن خدمات قابلية الوصول العالية الفردية لا تمتلك خدمة مراقبة سليمة خاصة بها، فلا يمكن تشغيل تجاوز الفشل على مستوى الخدمة الفردية. يتم ضمان تجاوز الفشل على مستوى العقدة وليس على مستوى الخدمة.
بعض المشكلات المعروفة
عند بدء تشغيل خدمة قابلية الوصول العالية يدوياً على عقدة الرأس الجاهزة فلن تتوقف حتى يحدث تجاوز الفشل التالي. عندما تعمل خدمات قابلية الوصول العالية على كلا عقدتي الرأس، فإن بعض المشكلات المحتملة تشمل: تعذر الوصول إلى واجهة مستخدم Ambari، وطرح Ambari للأخطاء، وقد تتعطل وظائف YARN وSpark وOozie.
عند توقف خدمة قابلية الوصول العالية على عقدة الرأس النشطة، فلن يتم إعادة تشغيلها حتى يحدث تجاوز الفشل التالي أو إعادة تشغيل وحدة تحكم تجاوز الفشل الرئيسية/خدمة قابلية الوصول العالية الرئيسية. عندما تتوقف واحدة أو أكثر من خدمات قابلية الوصول العالية على عقدة الرأس النشطة، خاصةً عند توقف خادم Ambari، يتعذر الوصول إلى واجهة مستخدم Ambari، وتشمل المشكلات المحتملة الأخرى فشل وظائف YARN وSpark وOozie.
خدمات قابلية وصول عالية لـ Apache
يوفر Apache قابلية وصول عالية لـ HDFS NameNode وYARN ResourceManager وHBase Master، والتي تتوفر أيضاً في أنظمة مجموعات HDInsight. على عكس خدمات قابلية الوصول العالية لـ HDInsight، يتم دعمها في مجموعات ESP. تتواصل خدمات قابلية الوصول العالية لـ Apache مع حصة ZooKeeper الثانية (الموضح في القسم أعلاه) لانتخاب حالات نشطة / الاستعداد وإجراء تجاوز الفشل تلقائياً. توضح الأقسام التالية كيفية عمل هذه الخدمات بالتفصيل.
نظام الملفات الموزعة الخاص بـ Hadoop هو (HDFS) NameNode
توفر أنظمة مجموعات HDInsight المستندة إلى Apache Hadoop 2.0 أو أعلى توفر NameNode ذو قابلية وصول عالية. هناك اثنين NameNodes تشتغلان على عقد الرأس، التي تم تكوينها لتجاوز الفشل التلقائي. إن NameNodes تستخدم ZKFailoverController للتواصل مع Zookeeper لاختيار الحالة النشطة/ الجاهزة. يعمل ZKFailoverController على كل من العقد الرئيسية، ويعمل بنفس الطريقة التي تعمل بها وحدة تحكم تجاوز الفشل الرئيسية.
حصة Zookeeper الثانية مستقلة عن الحصة الأولى، لذلك قد لا يتم تشغيل NameNode نشط على عقدة الرأس النشطة. عندما تكون NameNode النشطة ميتة أو غير سليمة، تفوز NameNode الجاهزة بالانتخابات وتصبح نشطة.
YARN ResourceManager
مجموعات HDInsight المستندة إلى Apache Hadoop 2.4 أو أعلى، تدعم قابلية الوصول العالية لـ YARN ResourceManager. هناك نوعان من ResourceManagers وهما rm1 وrm2، تعملان على عقدة الرأس 0 وعقدة الرأس 1، على التوالي. مثل NameNode، تم تكوين YARN ResourceManager أيضاً لتجاوز الفشل التلقائي. يتم اختيار ResourceManager آخر تلقائياً ليكون نشطاً عندما يتعطل ResourceManager النشط الحالي أو لا يستجيب.
YARN ResourceManager يستخدم ActiveStandbyElector المضمن الخاص به ككاشف للفشل والناخب العميل الهام للمبيعات. بخلاف HDFS NameNode، لا يحتاج YARN ResourceManager إلى برنامج ZKFC خفي منفصل. يكتب ResourceManager النشط حالاته في Apache Zookeeper.
إن التوافر العالي لـ YARN ResourceManager مستقل عن NameNode وخدمات قابلية الوصول العالية لـ HDInsight الأخرى. قد لا يتم تشغيل ResourceManager نشط على عقدة الرأس النشطة أو عقدة الرأس الموجودة حيث يتم تشغيل NameNode نشط. لمزيد من المعلومات حول قابلية الوصول العالية لـ YARN ResourceManager، اطلع على قابلية وصول عالية لـ ResourceManager.
HBase Master
تدعم أنظمة مجموعات HDInsight HBase قابلية الوصول العالية لـ HBase الرئيسية. على عكس خدمات قابلية الوصول العالية الأخرى، والتي تعمل على عقد الرأس، يعمل HBase Masters على عقد Zookeeper الثلاثة، حيث تكون إحداها هي الرئيسية النشطة والأخريان في وضع الاستعداد. مثل NameNode، ينسق HBase Master مع Apache Zookeeper لاختيار دليل ويقوم بتجاوز الفشل تلقائياً عندما يواجه التيار النشط الرئيسي مشكلات. لا يوجد سوى HBase Master واحد نشط في أي وقت.