الـ Cluster هو حساب كمبيوتر تخيلى يتم تكوينة عند إنشاء الـ Cluster وهو حقيقة كذلك إن أردنا أن نعبر عنة ولكن لنفهم أكثر نقول أنه عبارة عن مجموعة
من السيرفرات تسمى Cluster Nodes يقوم حساب الـ Cluster التخيلى بتوجية المستخدمين إلى السيرفر أو الـ Cluster Node المناسب من
السيرفرات التى يحتويها على حسب توافرة أو للموازنة بين الضغط على السيرفرات .
تخيل لو أنك تعتمد على سيرفر واحد فقط لإستضافة موقع شركتك أو الـ Exchange الخاص بشركتك وبعد ذلك حدث شيء لهذا السيرفر ماذا ستفعل ولكم من
الوقت ستحتاج لإعادة بناء هذا السيرفر و قد تكون شركتك هى شركة خدمية تقدم الخدمات عن طريق هذا الموقع لكن مع الـ Cluster لديك حل لهذه المشكلة .
ما هى أنواع الـ Cluster ؟
يمكنك الحصول على الـ Cluster بنوعين مختلفتين بما يناسب حاجتك.
أولا : load Balancing Cluster :
يستخدم هذا النوع من الـ Cluster فى عمل موازنة بين عدد من السيرفرات ,حيث يقوم بتوزيع الحمل على جميع السيرفرات التى يحتويها الـ Cluster بدون أن
يشعر المستخدم بأى شيء و يقدم للمستخدم مكان واحد فقط للدخول عليه و لتوضيح ذلك نقدم لكم مثال بسيط على هذه العملية ,
لديك Cluster يستضيف عدد من السيرفرات التى تحتوى على موقع إنترنت تقدم عدد من الخدمات و كل سيرفر يحمل نسخة طبق الأصل من هذه الخدمات و عندما
يقوم المستخدم بفتح الموقع حقيقة هو يفتح العنوان الرئيسي للـCluster و بعد ذلك يقوم حساب الـ Cluster بتوجيهه إلى السيرفر أو إن أحببنا تسميته
Cluster Node الأقل ضغطا ويمكن أن يحتوى هذا النوع من الـ Cluster على 32 Node فى الـ Cluster الواحد.
ينقسم هذا النوع إلى نوعين هما Network load Balancing Cluster و Com+ load Balancing Cluster ولكن الأكثرشيوعا هو إستخدام
الـ Network load Balancing Cluster لذا سنقوم فقط بشرح الـ Network load Balancing Cluster .
ولكن كيف يقوم الـ Network Load Balancing Cluster بتوزيع الحمل؟
الفكرة بسيطة حيث يقوم الـ Network load Balancing Cluster بتوزيع الـ IP Traffic إلى جميع الـ Cluster Nodes على حسب الحِمل فلو
فرضنا أن هناك 2 Nodes فى الـ Cluster سيقوم الـ Cluster بتمرير الـ IP Traffic إلى واحد فقط فى كل مرة لضمان توزيع الحمل بين الـ 2 Nodes .
ويتميز هذا النوع عن الآخر بإمكانية تنفيذه على جميع إصدارات الـ Windows server 2003 الأربعة من الـ Standard إلى الـ Datacenter كما أنه لا
يحتاج لأى Hardware أو Software إضافى.
ثانيا ً: Failover Cluster :
يستخدم هذا النوع من الـ Cluster لتطبيق فكرة توفير الخدمة على مدار الساعة و بدون إنقطاع حيث يقوم بنقل الخدمة بين الـ Cluster Nodes عند إنقطاعها
على أحد السيرفرات و بالطبع فإن شركة تقدم خدمات الدعم الفنى عن طريق البريد الإلكترونى هى أفضل مثال على الحاجة لهذا النوع من الـ Clustering حيث
لك أن تتخيل أن هذه الشركة لديها سيرفر واحد فقط يحتوى على صناديق البريد الخاصة بالموظفين فى خدمات الدعم الفنى و فجأه إنهار هذا السيرفر و توقفت
الشركة عن إستقبال البريد الألكترونى ,لكن مع وجود Failover Cluster يحتوى على 2 Nodes على الأقل سيقوم الـ Cluster بالتحول إلى الـ Cluster
Node الثانية عند إنهيار الأولى و لن يحس الموظفين بأى شيء لأن الـ Cluster سينتقل أوتوماتيكيا إلى الـ Node الأخرى.
و يمكن تنفيذ هذا النوع من الـ Cluster فقط إذا كانت نسختك Enterprise Edition أو Datacenter Edition .
كيف يعرف الـ Cluster بانهيار أحد الـ Cluster Nodes ؟
لفهم ذلك يجب أن نتكلم عن الـ Cluster Networking حيث يحتوى الـ Cluster على شبكتين أحداها تستخدم في الاتصال مع المستخدمين و تسمى الـ
Public Network و الأخرى التى تسمى Private Network أو Cluster Heart Beating Networkتستخدم لعمل نبضات تفاعلية بين الـ
Cluster Nodes .
كل Cluster يجب أن يحتوى على 2 Network cards يكون أحدهما فى الـ Public Network و الآخر فى الـ Private Network .
ما هو الـ Heart Beat Mechanism ؟
هو طريقة لمعرفة مدى توفر الـ Cluster Node حيث تقوم كل Cluster Node بإرسال UDP Packet كل 1,2 ثانية إلى الـ Cluster Nodes
الأخرى عن طريق الـ Private Network Cards لتعرف باقى الـ Cluster Nodes أنها متوفرة و تتوقع ردا ً من الـ Nodes الأخرى فى فترة مماثلة و
عند انقطاع هذه العمليه خمس مرات متتاليه تعتبر الـ Cluster Node غير متوفرة و يقوم الـ Cluster بتفعيل Cluster Node أخرى أو يتوقف عن إرسال
أى IP Traffic لهذه الـ Cluster Node الغير متوفرة.
كما تقوم الـ Cluster Service نفسها بإرسال Heart beat أيضا كل 1,2 ثانية ولكن إعلان أن الـ Cluster service لا تعمل سيكون بعد 5 ثوانى أو 4
نبضات منقطعة .
مكونات الـ Cluster :
يتكون الـ Cluster من ثلاث طبقات الأولى تقدم معلومات عن مدى توفر الـ Cluster و ما إذا كان هناك أى Cluster Node و هى التى تتعامل مع نقل الـ
Cluster من Cluster Node إلى أخرى عند حدوث خلل و أيضا تتعامل مع الـ Resources والتى سنتناولها بالشرح لاحقا وتحتوى هذه الطبقة على الـ
Cluster Manager و الـ Cluster Registry .
الطبقة الثانية هى حقيقة عبارة عن قاعدة بيانات الـ Cluster حيث تعنى بمعرفة من فى الـ Cluster و تسجل حالة الـ Cluster الحاليه وما إذا كان متوفر
أو لا وتعنى أيضا بميكانيكية الأتصال بين الـ Cluster Nodes .
الطبقة الثالثة هى التى تتعامل مع نظام التشغيل مباشرة و تقوم بترجمة تعريفات الأجهزة للـ Cluster .
إذا ما هى الـ Cluster Resources ؟
هى بإختصار شديد جميع مكونات الـ Cluster مثل الـ IP الخاص بالـ Cluster و الـ Hard disks و التطبيقات التى تعمل على الـ Cluster و قاعدة
البيانات الخاصة بالـ Cluster و يمكن إستخدام أى مكون من مكونات الـ Cluster على Cluster node واحدة فقط إلا التطبيقات يمكن إستخدامها أكثر من
مرة على التوازى فى حال كان Network Load Balancing Cluster و بما أن هذه الـ Cluster Resources تعتمد جميعها على بعض فقد تم
وضعها فى Groups حيث تعمل هذه الـ Resources Group على Cluster Node واحدة فقط .
مثال لنفهم ما هى الـ Resource Group هو الـ File sharing cluster حيث يعتمد المجلد المشترك على الـ Disk و الـ IP و هكذا تكونت لدينا
Resource Group منهم الثلاثة حيث الفكرة هى إعتماديتهم على بعض.
كيف يتم توزيع التغيرات على الـ Cluster Nodes ؟
هناك مكون من مكونات الطبقة الثانية يسمى Global Update Manager يقوم بتوزيع التغيرات التى حدثت على الـ Cluster Node المفعلة إلى باقى الـ
Nodes و أكبر مثال على ذلك هو توزيع الـ Cluster Logs و الـ Cluster Registry .
يضمن الـ Global Update Manager تناسق جميع الـ Cluster Nodes و هو من أهم مكونات الـ Cluster حيث يقوم بتحديث الـ nodes عندما
تفشل فى الإتصال بالـ Cluster ثم تعود للإتصال مرة أخرى و يقوم بتحديثها بما حدث فى غيابها من logs و التى تستخدمها بتحديث نفسها .
ما هو الـ Cluster Quorum ؟
هى ببساطة رأس الـ Cluster أو قاعدة بيانات الـ Cluster وتحتوى كل التعريفات عن الـ Cluster و محتوياته ويمكن أن تكون قرص مشترك أو مجلد
مشاركة فى حال الـ MNS التى سنتكلم عنها تفصيلا لاحقا.
الـ Cluster Quorum هو أهم شيء بالنسبة للـ Cluster حيث لو لم يكن متوفرا يعتبر الـ Cluster نفسة غير موجود .
كيف يتم الإنتقال بالـ Cluster من Node إلى أخرى؟
على إفتراض تواجد shared Disk سأقوم بشرح هذه النقطة بنوع من التبسيط حتى نستطيع فهمها لصعوبتها فى الفهم .
يستخدم الـ Cluster طريقة تسمى Challenge/Defense Protocol حيث تقوم الـ Node الفعالة بتأجير جزء من الـ Cluster Disk وهو الـ
Sector 11 , 12 لمدة 3 ثوانى ثم بعد إنتهاء المدة تقوم بالتجديد طالما هى متوفرة وتقوم جميع الـ Nodes الأخرى محاولة تأجير نفس المكان ولكن يرفض الـ
Cluster Disk ذلك لأن الـ Node الأخرى الفعالة قامت بالتجديد بالفعل و عندما تفشل الـ Node الفعالة فى تأجير هذه المساحة من الـ Cluster Disk
تقوم الـ nodes الأخرى بالمسارعة لإيجارها و عندما تنجح واحدة منها فى إيجار المساحة تؤجؤ لمدة 3 ثوانى ثم تنتظر ثانيتين ثم تؤجر 3 ثوانى أخرى و تنتظر
ثانيتين أخرتين و من ثم تقوم بإعلان نفسها كمالك جديد للـ Cluster وتصبح هى الـ Node الفعالة أما إذا عادت الـ Node القديمة للعمل بعد إصلاح العطل خلال
الـ 10 ثوانى فإنها تأخذ المساحة بالقوة و تدافع عن مساحتها و تقوم بإعلان نفسها مرة أخرى مالكة للـ cluster.
وتختلف هذه الطريقة فى الأنواع الأخرى التى سنقوم بذكرها لاحقا ً.
هل يمكن أن نقوم بعمل Cluster يحتوى Nodes من أكثر من مكان جغرافى؟
يمكن عمل ذلك وهو ما يعرف بالـ Geographically Dispersed Clusters ولكن يجب أن يكون جميع الـ Cluster Nodes فى نفس الـ Subnet و
أن تكون الـ Network latency أقل من 500 ملى ثانية جميعا و إن زادت عن ذلك فلن يفهم الـ Heart Beat وسيعتبر الـ Node غير فعالة و يجب أيضا
أن يكونوا مرتبطين بالـ Active Directory و يمكن أن يضم الـ Cluster حتى 8Nodes فى هذه الطريقة ويجب أن تحصل على طريقة ما ليكون عندك
disk مشترك بين الـ nodes حتى يتسنى لك عمل ذلك .
ما هو الجديد الذى قدمة الـ windows Server 2003 Clustering ؟
الـ windows server 2000 advanced server يدعم فقط 2nodes لكل cluster و الـ windows Server 2000 Datacenter يدعم
4nodes للـ cluster الواحد أما الـ windows server 2003 فيدعم 8nodes مع كل من الـ Enterprise Edition و الـ Data Center Edition .
تم زيادة دعم الـ AMD64 Processors فى الـ windows server 2003 Clusters .
الـ Clustering جزء من الـ windows server 2003 وليس إضافة كما فى الـ windows server 2000 وهو ما يمكنك من عمل الـ updates
للـ clustering service مع الـ windows server update .
التكامل مع بيئة الـ Active Directory وهنا يجب أن نحذركم من أن الحساب التخيلى الذى يتم تكوينة للتعبير عن الـ Cluster لا يجب تطبيق أى Group
policy عليه و إلا ستنطبق هذه الـ Group policy على أى Node تكون فعالة فى الـ Cluster .
عند إضافة Node جديدة إلى الـ Cluster لا يوجد حاجة لإعادة تشغيلها و ليس كما فى الـ Windows server 2000 .
لكن ماذا سيحدث إن لم يكن هناك إمكانية لعمل Shared cluster Disk ؟
كى نتكلم عن هذا الموضوع يجب أن نتكلم عن تاريخ هذا الموضوع , فى الـ windows server 2000 و windows server 2000 advanced
server كان يجب توفر physical HardDisk متصل بكل الـ Nodes عن طريق ISCASI أو أى ميكانيكية أخرى و كان لذلك مشاكلة حيث لم يكن يقدم
السماحية الكافية لعمل الـ Geographically Dispersed Clusters حيث أن الـ Disk يجب أن يكون متصل فيزيائيا بالـ Nodes ولكن مع نظام الـ
Majority Node set قدم لنا الـ windows server 2003 الحل لهذه المشكلة.
تعتمد فكرة الـ Majority Node Set على تخزين الـ Cluster System Files على local disk فى كل Node بدلا من تخزينها على shared disk
وبذلك أصبح لدينا السماحية فى التوزيع الجغرافى للـ Nodes و قد كان هذا التغيير هو التغيير الأكبر و الأفضل بين نسخة الـ 2003 و الـ 2000 من الـ Clustering .
ويقوم الـ cluster بضمان أن تكون كل الـ nodes تحمل نفس النسخة من البيانات على الـ System Disk و بالطبع يقوم الـ majority algorithm بهذه
المهمة نيابة عن الـ Cluster .
لكن لماذا الـ Majority Node set ؟
معنى كلمة Majority هو الأكثرية و كما ذكرنا فإن Majority Algorithm تقوم بتحديث نسخه الـ System Disk على جميع الـ Nodes لكن ماذا
سيحدث عندما تنفصل Node عن Cluster مكون من 3 nodes نتيجة عطل فى الشبكة أدى إلى تأخر الـ Heart Beat مع أنها تحمل النسخة الأحدث من
الـ System Disk ,ستظن الـ Node التى إنفصلت أن الأخرين هم الذين حدث لهم خطأ و تحاول جعل نفسها الـ node الفعالة لكن مع هذه الميكانيكية الجديدة
سيقوم الـ Cluster بحساب عدد الـ Nodes فى كل جهه و سيأخذ الأكثرية و يجعل احد الـ nodes الأثنين هو النسخة الفعالة و يهمل الـ Node الوحيدة حتى
لو كان عليها النسخة الأحدث من الـ System Disk أما إذا قل عدد الـ nodes عن الأكثرية وهو فى حالتنا هنا 2Nodes فإن الـ Cluster سيتوقف عن
العمل تماما لحين عودة أحد الـ nodes الأخرتين .
ماذا لو أردنا عمل Cluster يتكون من 2nodes وليس 3nodes ؟
سيكون ذلك من الصعب جدا حيث تحتاج على الأقل 3Nodes حتى تحصل على الأكثرية إذا أعددت 2nodes cluster فستتوقف الـ Cluster service مع
أول node تفشل فى الإتصال أو حتى تنهار نهائيا نتيجة عطل فى الهاردوير.
الحقيقة الكثير منا يحتاج لعمل 2nodes Cluster فما العمل ؟
تم حل هذه المشكلة يوم الخامس من يوليو عام 2006 بعد صدور هذا التحديث من مايكروسوفت
http://support.microsoft.com/kb/921181 حيث
أضاف هذا التحديث خاصية مهمة جدا للـ windows server 2003 cluster وهى File share witness حيث تقوم هذه الخاصية بعمل مجلد مشترك
يحمل نسخة من الـ System Disk الخاص بالـCluster ويعتبر أحد أفراد الـ Cluster فقط فى التوفر وليس فى الـعمل كـ node حيث إذا إنقطع الأتصال بهذا
المجلد و فشلت إحدى الـ nodes نعود لنفس المشكلة.
هل أضاف هذا التحديث أى شيء آخر أم فقط أضاف الـ File share witness ؟
أضاف التحديث خاصية إعادة تعديل عدد الـ Heart Beat المفقودة قبل أن يقوم الـ Cluster بالإنتقال إلى Node أخرى حيث فى الشبكات التى لا يمكنك الإعتماد
عليها يمكنك إستخدام هذه الخاصية لزيادة عدد الـ Heart Beats المفقودة قبل أن يقوم الـ Cluster بالإنتقال إلى الـ Node التاليه .
نبدأ معا شرح كيفية بناء الـ Cluster مع العلم أننا سنؤجل شرح الـ Shared Quorum Cluster إلى درس آخر وسنقوم بشرح الـ MNS Cluster فقط
هنا..
أولا : كيفية بناء Failover Cluster :
يجب أن يتوفر لديك ثلاث سيرفرات أحدها يكون Domain Controller و سنستخدمة أيضا لوضع الـ MNS file share witness علية و السيرفرين
الأخرين سيمثلان الـ Cluster Nodes ويجب أن يكون لكل منهما كارتين شبكة أحدهما نسمية Private و الأخر نسمية public.
بعد الأنتهاء من تثبيت الـ Active Directory على الـ Domain controller قم بفتح Active Directory users And computers ثم قم
بإنشاء إسم مستخدم جديد لنستخدمة فى بناء الـ Cluster كالآتى:
قم بالدخول إلى السيرفرين الذين ستستخدمهما كـ Cluster Nodes ثم قم بإعداد الـ Private Network Card كالتالى
على كل من الـ Cluster Nodes قم بإضافة الـ Cluster Account الذى قمنا بتكوينة من قبل إلى مجموعة الـ Local Administrators كالتالى
قم بتسجيل الدخول إلى الـ cluster Node الأولى .
قم بفتح الـ Cluster Administrator من قائمة Administrative Tools ثم قم بإختيار Create New Cluster من القائمة وتابع مع الشرح التالى.
من هذه الشاشة يمكنك إستعراض تفاصيل الـ Task الحالية عن طريق الضغط على Details و أيضا رؤية الـ Log الخاص بالعملية كلها بالضغط على View Logs
بعدما تنتهى من إستعراض النتائج قم بالضغط على finish فى الشاشة التالية.
و يظهر لك الـ Cluster بهذا الشكل بعد إضافة الـ Cluster Node الأولى.
الآن قم بإضافة الـ Cluster Node الثانية إلى الـ Cluster ولعمل ذلك قم بالخطوات التالية
سيظهر لك الـ Cluster بهذه الصورة بعد إضافة الـ Cluster Node الثانية.
الآن يجب أن تقوم بإعداد الـ File Share Witness الخاص بالـ Majority Node Set لتستعيض به عن إضافة node ثالثة إلى الـ Cluster و لعمل
ذلك قم بتنفيذ الأمر الأول فى الشاشة التالية وطبعا لا أحتاج لتنبيهك لعمل مجلد مشترك على السيرفر الثالث و تعوض بة فى الأمر المذكور لنقل الـ system files
الخاصة بالـCluster إليه و طبعا تعطى صلاحيات للـ Computer account الخاص بكل من Cluster nodes و أيضا الـ Cluster Account .
طبعا يمكنك تجربة نقل الـ cluster من Cluster Node إلى الأخرى بإستخدام الأمر الثانى فى الشاشة السابقة وتنفيذة مرة أخرى للرجوع إلى الـ Cluster Node الأولى.
وتستطيع أيضا أن تتأكد أن الأمور إنتهت على خير مع الـ File share witness بالذهاب إلى ملف المشاركة و تتأكد من وجود ملفات النظام هناك وطبعا لن
تستطيع أن ترى الملفات قبل أن تعطى لإسم المستخدم الخاص بك صلاحية read على الأقل على المجلد و تظهر لك الملفات بهذا الشكل بعدها.
أنت الآن مستعد لتقوم بتثبيت أى كان على الـ Cluster مثل الـ Exchange وما إلى ذلك.
ثانيا : الـ Network Load Balancing Cluster :
قم بتجيل الدخول إلى الـ Cluster Node الأولى بإستخدام الـ Cluster Account ثم قم بفتح الـ Network Load Balancing Manager من
قائمة Administrative Tools ثم قم بإختيار New Cluster من الشاشة التى ستظهر لك كالتالى
سيـُـطلب منك إدخال الـ ip الذى سيستعملة الـ Cluster و أيضا إسم الـ Cluster قم بإدخال البيانات المطلوبة ثم إضغط Next
فى الشاشة التالية يمكنك إضافة أكثر من IP للـ cluster تحسبا لأى حوادث مع الـ IP الأول لكن هنا لن نضيف أى IP فأتركها كما هى ثم إضغط Next .
و الآن نقوم بتعريف الـ Port الذى ينقوم بعمل الموازنة عليه وكمثال سنأخذ الـ Port 80 الذى يستخدم مع مواقع الإنترنت ليقوم الـ Cluster بتوزيع كل الـ
Traffic القادم على هذا الـ Port على الـ Cluster Nodes ولعمل ذلك نقوم بتعديل الـ Port الإفتراضى كالتالى.
قم يتحديد كارت الشبكة الذى سيستخدمة الـ Cluster كالتالى
قم بتحدبد أولوية الـ Cluster Nodes و يجب الإنتباه إلى أنه كلما قلت القيمة كلما إرتفعت الأولوية و أترك الـ Dedicated IP كما هو إلا إذا كان عندك أكثر من ip على كارت الشبكة الذى تم إختيارة .
عند إنتهائك من الخطوات السابقة تكون أنتهيت من إضافة الـ Cluster Node الأولى و يظهر لك الـ Cluster بهذا الشكل.
لنتأكد أن الـ Cluster تم إعدادة بالطريقة الصحيحة نفتح الـ Network Settings الخاصة بكارت الشبكة و نتأكد أنها كالتالى .
قم الآن بإضافة الـ Cluster Node الأخرى كالتالى
إذا ظهر لك الخطأ السابق لا تقلق و أترك الـ Cluster لفترة قصير و سيقوم هو بعمل اللازم ليعود و يظهر لك بالصورة التالية
وطبعا نتحقق من نجاح إضافة الـ Cluster Node الأخر من الـ Network Configuration حيث يجب أن يظهر IP الـ Cluster فيها.
أنت الآن مستعد لإضافة ملفات الموقع إلى الـ Cluster Nodes .