درس یکصد و نود و سوم: Quoroum

 Quoroum

 

 

مشکلی به نام Split-Brain

یکی از مشکلاتی که ممکن است برای یک Failover Cluster پیش آید اینست که Failover Cluster بصورت برنامه ریزی نشده ای به دو بخش تقسیم شود و هر بخش نیز به کار خود ادامه دهد. در این حال چون هر دو بخش از Cluster Database مشترکی نیز استفاده میکنند، در نتیجه دو کپی یکسان ولی جداگانه از Database فوق بصورت همزمان توسط دو مجموعه کلاینت دچار تغییر و آپدیت میشود. این امر از لحاظ جامعیت اطلاعات یک فاجعه تمام عیار محسوب میشود.

 

 

مفهوم Quoroum

Quoroum قابلیتی است در Failover Cluster که تلاش میکند تا از وقوع Split-Brain جلوگیری کند. طرز کار Quoroum بدینگونه است که برای هر Node یک vote ( رای) در نظر میگیرد. گاهی برای Failover Cluster فوق یک  Disk نیز در نظر می گیرد. همه  Nodeها بصورت پیوسته توسط vote های سایر  Nodeها و نیز Disk Witness مانیتور میشوند.

فرض کنید در بدو تشکیل Failover Cluster تعداد vote ها = total باشد.

نیز معیاری داشته باشیم بنام H-Total که معادل 51 درصد مقدار total باشد.

حال هر گاه یک Node متوجه شود که تعداد فعلی vote ها از مقدار H-Total کمتر شده است ( به زبان ساده کمتر از نصف مقدار total شده است)، خودش را از کلاستر حذف میکند. در موردی که کلاستر با 6 Node به دو بخش هر کدام با سه Node تقسیم شود، وضعیت فوق یعنی کمتر شدن تعداد vote ها از H-Total رخ میدهد. در این حالت همه  Nodeها خود را از Failover Cluster حذف میکنند و هر دو بخش Failover Cluster فوق shutdown میشوند.

اما چنانچه یک Disk Witness در Failover Cluster فوق قرار میداشت، یکی از بخش  ها خودش را به Witness متصل میکرد و تعداد Vote ها میشد: 4 ( 3+1 ) . لذا عدد 4 بالاتر از H-Total میبود و Node های این بخش خود را حذف نمی کردند و به کار خود ادامه میدادند اما  Nodeهای بخش دیگر چون کماکان مقداری کمتر از H-Total میبودند، خود را حذف میکردند. در این حالت کلاستر با 6 Node به کلاستری با 3 Node تبدیل میشد ولی بکار خود ادامه میداد و shutdown نمی گردید.

 

 

Quoroum witnesses

وقتی در کنسول Failover Cluster Manager از طریق اجرای ویزارد create Cluster یا وارد کردن دستور new-cluster در محیط Windows PowerShell اقدام به ایجاد Failover Cluster میکنیم، بصورت خودکار یک پیکربندی از Quoroum نیز با تنظیمات پیشفرض و بر جسب تعداد  Nodeها و منابع ذخیره سازی در در دسترس ایجاد میشود. بصورت پیشفرض برای هر Node یک vote در نظر گرفته میشود و چنانچه مجموع تعداد  Nodeها عددی زوج باشد، یک Witness نیز برای این Failover Cluster ایجاد میشود تا در موقع لازم نقش tie-breaker را ایفا کرده و مانع shutdown شدن کل کلاستر شود. به مانند Node ها برای witness نیز یک vote در نظر گرفته میشود.

ویندوز Server 2016 سه نوع Witness را پشتیبانی میکند:

  • Disk Witness : یک دیسک اختصاص یافته از Storage مشترک مورد استفاده کلاستر میباشد که شامل یک کپی از دیتابیس کلاستر میباشد. Disk Witness گزینه ایده آل برای کلاستری است که همه Node هایش در یک Site فیزیکی قرار دارند.
  • File Share Witness : یک فایل SMB است که share شده است و همراهش یک log شامل اطلاعاتی در مورد کلاستر قرار دارد. File share witness گزینه ای مناسب است برای کلاستری که Node هایش در چند site فیزیکی مختلف قرار دارند و Replication Storage بین آنها برقرار است.
  • Cloud Witness : در واقع یک حباب ( blob ) است که در cloud توسط سرویس Microsoft Azure ذخیره شده است. این گزینه در ویندوز Server 2016 معرفی شده است و مناسب کلاستری است که Node هایش در چندین site فیزیکی با فاصله دور قرار دارند.

 

 

مدیریت  Dynamic Quoroum

پیکربندی پیشفرض Quoroum در ویندوز Server 2016 شامل Dynamic Quoroum management است که در واقع یک feature میباشد. وقتی یک Node از کلاستر خارج میشود. Dynamic Quoroum management بصورت خودکار vote مربوط به آن Node را حذف میکند. ( از مقدار total نیز یکی کم میشود).

در یک کلاستر که فاقد Dynamic Quoroum management است و پنج Node دارد، چنانچه سه Node fail شوند، vote های مربوط به آن سه Node از مقدار total کم نمی شوند و لذا تعداد vote ها به 2 از 5 تبدیل میشود و در نتیجه چون مقدار vote ها از H-Total کمتر شده است، دو Node باقی مانده نیز خود را حذف میکنند و کل کلاستر shutdown میشود. اما اگر Dynamic Quoroum management فعال میبود، پس از خروج هر Node از کلاستر، vote آن Node را کسر میکرد. لذا Failover Cluster در وضعیت 2 از 2 قرار میگرفت و به کار خود ادامه میداد.

 

 

اصلاح پیکربندی Quoroum

میتوان پیکربندی Quoroum را توسط اجرای ویزارد configure cluster Quoroum تغییر داد. توسط این ابزار میتوانید یک witness به Quoroum اضافه کنید یا witness موجود را تغییر دهید و نیز میتوانید vote های Node ها را کم / زیاد کنید. جهت اجرای ویزارد فوق:

1- کنسول Failover Cluster Manager را اجرا کرده، Failover Cluster مورد نظر را انتخاب میکنیم. سپس در پنل Action ابتدا گزینه More Actions و سپس Configure Cluster Quoroum settings را انتخاب میکنیم. ویزارد Configure Cluster Quoroum شروع بکار میکند.

2- در صفحه select Quoroum configuration option باید یکی از گزینه های موجود را انتخاب کنید:

193-1 select quoroum configuration option page

  • Use default Quoroum configuration : برقراری پیکربندی پیشفرض توسط خود ویزارد.
  • Select the Quoroum witness : از طریق این گزینه میتوانید witness به Quoroum اضافه کنید و یا witness موجود را حذف کنید. نیز میتوانید نوع و محل witness را در صفحه select Quoroum witness مشخص نمایید.
  • Advanced Quoroum Configuration : توانایی مشخص کردن اینکه کدام Nodeها باید vote داشته باشند را به مدیر شبکه میدهند. نیز میتوان نوع و محل witness را نیز مشخص کرد.

بنابراین اینکه در این صفحه کدام گزینه انتخاب شود تاثیر مستقیم دارد بر اینکه در ادامه این ویزارد چه صفحاتی ظاهر شوند.

وقتی روی دکمه next کلیک کنیم، مطابق شکل ذیل صفحه Confirmation ظاهر میشود:

193-2 quoroum confirmation page

در این گزارش – در واقع تاییدیه-  در مورد پیکربندی Quoroum موارد ذیل مشخص شده است:

1- Cluster Disk 3 بعنوان Disk Witness عمل میکند. این همان Q-Disk.vhdx یک گیگابایتی است که روی Quoroum-iSCSI-Target وجود دارد.

2- قابلیت مدیریت کلاسترها از طریق Vote فعال است.

3- هر کدام از  Nodeها دارای Vote هستند.              

صفحه بعد، صفحه Summary است که در آن روی دکمه finish کلیک میکنیم.

 

 

پیکربندی یک witness

در اکثر موارد اگر تعداد Node ها زوج باشد یک witness در پیکربندی پیشفرض Quoroum قرار میگیرد. در این حالت توصیه میشود که witness دیگری ایجاد نشود.

زمانی که همه Node های Failover Cluster به Storage به اشتراک گذاری شده یکسان ( مانند SAN ) دسترسی دارند استفاده از Disk witness توصیه میشود. نخستین کار اینست که یکی از چهار دیسکی که در سناریوی خود بعنوان Storage تعریف کرده ایم را بعنوان Disk Witness اختصاص دهیم. همانطور که مشاهده کردید اکنون ما یک Disk Witness داریم که همان Cluster Disk 3 میباشد. فرض کنید که ما قصد داریم این دیسک را از حالت  Disk Witness خارج کرده و Cluster Disk 2 را بعنوان Disk Witness داشته باشیم. ( که البته هیچ نیازی نیست و صرفا جهت آموزش میخواهیم این کار را انجام دهیم). پس مراحل ذیل را دنبال میکنیم:

1- در کنسول Failover Cluster manager در پنل سمت چپ، کشوی مربوط به First-Cluster.ITPerfection.local را باز میکنیم.

2- در ذیل Storage روی گزینه Disks کلیک میکنیم. کلیه Disk های مورد استفاده این کلاستر ظاهر میشوند:

193-3 First-Cluster disks

3- کدام دیسک باید بعنوان Disk Witness تعیین شود؟ همانطور که گفتیم مایکروسافت دیسکی با حداقل ظرفیت 512MB را مجاز دانسته است اما ما در سناریوی خود جهت محکم کاری یک دیسک با ظرفیت 1GB را برای این کار کنار گذاشته بودیم. دیسک فوق همان Cluster Disk 3 در شکل بالاست. این دیسک همین الان هم Witness است. پس ما ( بعنوان مثال) قصد داریم اکنون Cluster Disk 2 را به Disk Witness تبدیل کنیم.

4- پس مجددا ویزارد Configure Cluster Quoroum settings را اجرا میکنیم.

5- در صفحه Select Quoroum Configuration Option دکمه رادیویی دوم یعنی Select the quoroum witness را انتخاب کرده و روی دکمه next کلیک میکنیم.

6- صفحه Select Quoroum Witness ظاهر میشود:

193-4 select quoroum witness page

در این صفحه میتوان هر کدام از انواع مجاز برای witness که در بخش هایی قبلی با آنها آشنا شدیم را انتخاب نماییم. ما دکمه رادیویی Configure a disk witness را انتخاب کرده و روی دکمه next کلیک می نماییم.

7- صفحه Configure Storage Witness ظاهر میشود. در صفحه فوق باید مشخص کنیم که کدامیک از دیسکهای موجود باید witness شوند. ما تیک درون چکباکس Cluster Disk 3 را برداشته و در عوض چکباکس مربوط به Cluster Disk 2 را تیک میزنیم:

193-5 configure storage witness

8- ویزارد را تا پایان ادامه میدهیم. اکنون همانطور که در شکل ذیل مشاهده میکنید Cluster Disk 2 دارای نقش Disk Witness شده است:

193-6 new disk witness

البته با توجه به اینکه این کار را فقط جهت آموزش انجام دادیم، اکنون بلافاصله دوباره همان Cluster Disk 3 را witness میکنیم چون بهترین انتخاب همان دیسک است و بس.

 

 

اصلاح Quoroum Voting

در بیشتر موارد هر Node در Failover Cluster دارای یک vote است اما میتوان کاری کرد که  Nodeهای کلاستر فاقد vote باشند و فقط یک vote برای witness وجود داشته باشد. در این حالت witness تبدیل میشود به تنها نقطه ای که احتمال fail شدن وجود دارد و اگر از دسترسی خارج شود بلافاصله Failover Cluster در وضعیت Shutdown قرار میگیرد حتی اگر همه Node ها و storage بدون مشکل باشند. برای این منظور:

1- مجددا ویزارد Configure Cluster Quoroum Settings را اجرا میکنیم.

2-در صفحه Select quoroum configuration option دکمه رادیویی advanced quoroum configuration را انتخاب کرده و روی دکمه next کلیک میکنیم.

3- صفحه select Voting configuration ظاهر میشود:

193-7 voting config page

تنظیمات صفحه فوق بسیار واضح است. میتوان کاری کرد که همه  Nodeها دارای Vote باشند. یا فقط آنهایی که تیک میزنیم یا هیچکدام. اگر گزینه هیچکدام ( No Nodes ) را انتخاب کنیم، تنها Disk witness خواهد بود که باید دارای vote  باشد. به همین دلیل در صفحه بعد صفحه configure storage witness ظاهر میشود که در صورت لزوم Disk witness فعلی را تغییر دهیم.

4- ویزارد را تا پایان ادامه میدهیم.

البته ما تغییری بوجود نیاورده و همان تنظیم پیشفرض که همه  Nodeها دارای vote باشند را مطلوب میدانیم.

مشاهده همه افزودن یک یادداشت
شما
دیدگاه خود را وارد کنید
رفتن به نوار ابزار