آموزش مدیریت فیل آور کلاستر مولتی سایت

آنچه در این مطلب می‌خوانید:

آموزش مدیریت فیل آور کلاستر مولتی سایت

مقدمه فیل آور کلاستر مولتی سایت

در این مقاله آموزش پیشرفته SQL بررسی می‌کنیم، اگر یک کلاستر سه نود داشته باشیم که دو نود در سایت اصلی باشد و یک نود در سایت ثانویه باشد، چگونه با استفاده از witness و یا حتی در صورت عدم نیاز به آن، چیدمان کلاستر را بشکلی طراحی کنیم که با توجه به حالاتی که ممکن است رخ دهد، کلاستر ما کمترین حالت down شدن را داشته باشد، البته میدانیم مایکروسافت اساس طراحی فیل آور کلاستر مولتی سایت برای دیتابیس را طوری طراحی کرده که هیچگاه ناسازگاری به دلیل وجود پرایمری در دو سایت بصورت همزمان بوجود نیاید و درصورت حدس این اتفاق، کلاستر را کلا از دسترس خارج خواهد کرد.(جلوگیری ازsplit brain syndrome in database cluster)

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

توضیحات

  • بدون witness

در ابتدا بدون witness شروع میکنیم به بررسی حالت‌هایی که ممکن است رخ دهد، پس مدل بیس ما بصورت زیر خواهد بود، که نود پرایمیری در سایت اصلی است و حال قرار است سناریوهایی مطرح شود و بعد از انجام تست نتیجه گیری شود:

آموزش SQL

خوب در این حالت ابتدا نود پرامیری را بصورت هارد ریست از مدار خارج خواهیم کرد، بعد از بررسی آنچه رخ خواهد داد، در ادامه نود دوم سایت پرایمری را نیز در حالی که هنوز نود اول در مدار نیست، خاموش میکنیم و خواهیم داشت:

فیل آور کلاستر

وقتی نود یک را دان کردیم، بسته به اینکه ترتیب تعریف شده برای اولویت فیل آور چگونه است، میتواند به نود 2 یا 3 فیل آور کرده و کلاستر بالا می‌ماند. اما اگر بعد از ادامه یک نود دیگر را نیز خاموش کنیم، تعداد نودهای کلاستر از نصف کمتر شده و درنتیجه کلاستر down خواهد شد.(نتیجه 1 از این حالت استنباط خواهد شد، شاید اگر یک witness در کنار DB3 باشد، کلاستر دان نشود و فیل آور بین سایتی رخ دهد.)

با فرض بازگشت به حالت پایه، این بار پرایمری را دست نمیزنیم، بلکه سکندری‌ها را در دو حالت مجزا خاموش کرده و اقدام به بررسی خواهیم کرد:

آموزش مدیریت فیل آور کلاستر مولتی سایت 3

در یک حالت دیتابیس سه را قطع کردیم،  یعنی نودی که در سایت ثانویه هست، طبیعتا هیج اتفاقی رخ نخواهد داد و کلاستر بالا خواهد ماند، و اگر نود دو را قطع کنیم نیز بازهم با همان منطق که نصف نودهای کلاستر در مدار هستند کلاستر بالا ماند.

اینبار میخواهیم سایت اصلی را کلا از مدار خارج کنیم، این پروسه به دو شکل می تواند صورت گیرد، یکی قطع شدن ارتباط بین دوسایت و دیگری قطع شدن هردو سرور سایت اصلی که مصداق قطع شدن برق خواهد بود:

آموزش مدیریت فیل آور کلاستر مولتی سایت 5

در حالتی که هر دو سرور در سایت پرایمری باهم قطع شود و مصداق قطعی برق در سایت پرایمری است، چون تعداد نودهای کلاستر از نصف کمتر میشود کلاستر دان خواهد شد.  (نتیجه : شاید اینجا فکر کنیم اگر Witness داشتیم فیل آور میکردیم به سایت مقابل، ولی خواهیم دید حتی در صورت داشتن Witness این اتفاق رخ نخواهد داد.) و اما اگر بجای قطع برق ارتباط دو سایت قطع شود، چون در سایت پرایمری تغییری رخ نداده و تعداد نودها از نصف بیشتر است، پس کلاستر بالا خواهد ماند. (نتیجه 2: در آینده از این تست ایده گرفته، یعنی حضور witness نه تنها حالت پنجم در شکل بالا را ترمیم نمیکند، بلکه حضورش موجب افتادن کلاستر در حالت چهارم خواهد بود، که خواهیم دید)
در ادامه اینبار فرض میکنیم نود پرایمری در سایت سکندری است، در مورد این حالت البته باید بدانیم نباید طولانی مدت حساب باز کنیم، چرا که همانطور که از اسم آن مشخص است؛ سایت سکندری است، اما باید برای این حالت اکشن پلن داشته باشیم و بدانیم اگر در این حالت بودیم و قطعی رخ داد، چه اتفاقی در پیش روی ما خواهد بود.

آموزش مدیریت فیل آور کلاستر مولتی سایت 7

در حالت اول دیتابیس 1 یا 2 را به عنوان سکندری قطع خواهیم کرد، بعد از بررسی نتیجه نود سکندری بعدی را نیز دان کرده و اقدام به بررسی خواهیم کرد:

آموزش مدیریت فیل آور کلاستر مولتی سایت 9

درحالت اول طبیعتا نصف نودها بالا است و کلاستر بالا خواهد ماند، اما در حالت دوم که دو نود از سه نود در مدار نیستند قطعا کلاستر داون خواهد شد. (نتیجه 3: از این حالت استنباط میشود، بطوری که خواهیم دید اگر Witness سمت پرایمری بود، در این حالت کلاستر بالا می ماند، اما خوب تاثیر روی حالات دیگر خواهد داشت.)

بیشتر بخوانید: وبینار پایگاه های داده و قابلیت های جدید SQL – مهندس برومند

اینبار بعد از اینکه به حالت طبیعی بازگشتیم، فرض میکنیم برق سایت اصلی قطع شد، یعنی جفت نود سکندری همزمان از مدار خارج شوند، قابل حدس است چه رخ خواهد داد:

آموزش مدیریت فیل آور کلاستر مولتی سایت 11

حدس درست بود، چون نصف نودها در مدار نیست، کلاستر دان خواهد شد.(نتیجه 4 از این حالت استنباط خواهد شد، چرا که حدس میزنیم شاید اگر Witness داشتیم کلاستر بالا می ماند، اما باید بدانیم با حضور ایشان نیز کلاستر دان میشد!)

اینبار قرار است ارتباط بین دو سایت قطع شود و ببینیم کلاستر چگونه رفتار خواهد کرد، یعنی در یک تایم دو سایت از هم مطلع نباشند، چه رفتاری رخ خواهد داد.

آموزش مدیریت فیل آور کلاستر مولتی سایت 13

همانطور که در شکل میبینیم بستگی به اینکه اولویت نودها چگونه تعریف شده نود پرایمری انتخاب میشود، اما مهم این است که کلاستر نخواهد افتاد و فیلاور بین سایتی خواهیم کرد.(نتیجه 5: از این اندیشه حاصل میشود که اگر Witness داشیتم ست پرایمری، در کمال ناباوری تعداد رای دو سایت یکی شده و کلاستر دان خواهد شد.)

  • با witness:

تا اینجا بدون Witness اقدام به بررسی کردیم، حال با witness به نتایج مهمی خواهیم رسید، پس مدل پایه ما بصورت زیر خواهد بود، یکبار پرایمری نود در سایت پرایمری و یکبار پرایمری نود در سایت سکندری، با این فرض که پرایمری سایت، سایتی است که دو نود داخل آن قرار دارد و سایت سکندری سایتی است که برای آن ویتنس در نظر گرفته ایم:

آموزش مدیریت فیل آور کلاستر مولتی سایت 15

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

آموزش مدیریت فیل آور کلاستر مولتی سایت 17

زمانی که پرایمیری نود دان شد، قطعا نود دیگری این نقش را عهده دار خواهد شد، و این وابسته به اولویت تعریف شده دارد، پس هرکدام از نودهای باقی مانده اولویت بیشتری داشته باشد، آن نود پرایمری خواهد شد. اما زمانی که نود 2 نیز در ادامه نود 1 دان شود، با اینکه نصف نودها در مدار نیستند اما در کمال تعجب نود 3 و سایت ثانویه به فعالیت خود ادامه خواهند داد. (نیتجه 1: از این حالت صادق است که اگر با نتیجه 1 مقایشه شود، نقش witness پررنگ خواهد شد.)  و اما در حالتی که هر دو نود همزمان ازمدار خارج شوند که مشابه قطع برق سایت اصلی خواهد بود، با اینکه witness داریم ولی چون کار به رای گیری کشیده می‌شود، با قاتون یکی بیشتر از نصف، کلاستر نیز دان خواهد شد. (نتیجه 2: از این حالت استنباط میشود که بودن witness هیچ کمکی به این حالت نخواهد کرد، که با مقایسه نتیجه 2 میبینیم مشابه با حالت بدون witness هستیم.)

حال فرض کنیم به جای اینکه برق سایت اصلی برود و هر دو نود موجود در سایت اصلی در یک لحظه از مدار خارج شوند، اینبار ارتباط بین دو سایت قطع شود:

آموزش مدیریت فیل آور کلاستر مولتی سایت 19

در این حالت در کمال ناباوری ، مجدد کار به رای گیری کشیده شده و مشابه قطعی برق یعنی سناریو یکی قبل، کلاستر دان خواهد شد. (نتیجه 2: حضور Witness کار را خراب کرده و با مقایسه با نتیجه 2 اگر ایشون نبود، حداقل سایت اصلی بالا بود و کلاستر دان نمیشد.)

حال فرض کنیم یکی از سکندری های بصورت اتفاقی از مدار خارج شوند، طبیعتا حدس زده میشود هیچ تاثیری در عملکرد کلاستر رخ ندهد.

آموزش مدیریت فیل آور کلاستر مولتی سایت 21

دقیقا در حالت بدون witness هم شرایط همین گونه بود و تاثیری در عملکرد کلاستر رخ نمیدهد.

حال اگر ارتباط سایت مقابل به هردلیلی دچار اختلال شود، در کمال ناباوری کل کلاستر دان میشود. چرا که کار به رای گیری کشیده خواهد شد و داریم:

آموزش مدیریت فیل آور کلاستر مولتی سایت 23
آموزش مدیریت فیل آور کلاستر مولتی سایت 25

(نتیجه: از این حالت بدست می آید که witness اگر نبود، پرایمری در سایت اول باقی مانده و کلاستر بالا بود. میتوان به این نتیجه مراجعه شود تا دید بهتری پیدا کنیم)

در حالتی که برق سایت مقابل قطع شود، تصور این است که پرایمری سر جای خودش هست و هیچ اتفاقی رخ نخواهد داد، چون تعداد رای ها برابر است، اما حقیقت تلخ است و داریم:

آموزش مدیریت فیل آور کلاستر مولتی سایت 27

بله کار به رای گیری کشیده شد و چون به قانون نصف بعلاوه یک نرسیدم، کلاستر بصورت کامل دان شد. ( نتیجه 4: از این حالت برآورد می‌شود و در مقایسه با نتیجه 4 می بینیم Witness اینجا نه تنها کمک به بالا بودن کلاستر نکرد، بلکه موجب افتادن کلاستر شد.)

حالا حالت پایه را تغییر می‌دهیم به شکلی که پرایمری در سایت ثانویه باشد، گرچه توصیه میشود برای بلند مدت در این حالت نباشیم، اما بالاخره ممکن است برای مدتی مجبور باشیم، پس باید حالات احتمالی را بررسی کنیم.

آموزش مدیریت فیل آور کلاستر مولتی سایت 29

در حالتی که یکی از سکندری‌ها از مدار خارج شود، (یا حتی Witness، که البته تست نشده) کلاستر به قوت خود باقی خواهد ماند و حتی فلاور هم ایجاد نخواهد شد و داریم:

آموزش مدیریت فیل آور کلاستر مولتی سایت 31

در ادامه اگر حتی به نوبت و با اختلاف زمانی سرورها را ازمدار خارج کنیم، ابهام وجود دارد که چه رویدادی رخ خواهد داد.

آموزش مدیریت فیل آور کلاستر مولتی سایت 33

حاصل این بررسی مشخص است که حضور witness سبب شد کلاستر آپ بماند و چون کار به رای گیری نرسید، فیل آوری رخ نداد و کلاستر بالا مانده است. ( با مقایسه این حالت با نتیجه 3 می بینیم witness در این حالت به داد ما رسید.)

اما در آخر درحالتی که برق سایت اصلی قطع شود و حتی ارتباط دو سایت قطع شود، همانند حالات قبلی که دیدم حتی با حضور witness کلاستر دان خواهد شد، چرا که کار به رای گیری کشیده شده و بدون توجه به قانون نصف بعلاوه یک احتمال حضور پرایمری در سایت مقابل حس می‌شود، پس ریسک نشده و کلاستر down  میشود.

نتیجه گیری

اگر سمت راست را حالات با witness در نظر بگیریم و سمت چپ را حالات بدون Witness ، در چنین شرایطی اقدام به بررسی حالت‌ها با مقایسه خواهیم کرد و می توانیم به نتیجه نهایی برسیم.

  • حالت اول:
آموزش مدیریت فیل آور کلاستر مولتی سایت 35

در حالت هایی که ارتباط سایت ها قطع میشود اگر witness نداشته باشیم، اگر پرایمری روی سایت اصلی باشد که هیچ، اگر نباشد به سایت اصلی فیل آور کرده و دسته آخر کلاستر بالا می ماند، پس بدون Witness بهتر است، علت این موضوع احتمال ازsplit brain با داشتن Witness است.

  • حالت دوم:
آموزش مدیریت فیل آور کلاستر مولتی سایت 37

در این حالت‌ها نیز وفتی برق سایت ثانویه برود و هر دو نود همزمان دان شود، اگر Witness داشته باشیم، این ابهام برای کلاستر بوجود می آید که شاید سایتی که برقش رفته، قطع است و پرایمری آنجا است و احتمال Split Brain وجود داشته، پس کلاستر را دان می‌کند، اما درحالتی که ویتنس برای سایت مقابل نداشته باشیم، اگر پرایمری روی سایت اصلی باشد، باقی مانده و کلاستر بالا می‌ماند واگر پرایمری در سایت ثانویه باشد، سریعا به سایت پرایمری فیل آور کرده و نهایتا کلاستر بالا خواهد ماند، و Witness در اینجا خرابکار است!

  • حالت سوم:
آموزش مدیریت فیل آور کلاستر مولتی سایت 39

در این حالت‌ها یعنی وقتی برق یک سایت می‌رود، شاید به نظر آید مشابه حالت قبل است، اما خیر، اینبار برق سایت اصلی رفته و شرایط متفاوت است، اما جالب است بدانیم درحالتی که Witness نداریم، مشخصا از نصف نودها کمتر نود فعال داریم. پس کلاستر دان میشود و اما اگر Witness باشد، احتمال split Brain است و چون اطلاع قطعی از قطع شدن برق سرور ها نداریم، احتمال می‌دهیم آنجا یک نفر پرایمری شده باشد، پس کلاستر Down خواهد شد و در نیتجه با و بدون Witness  ، در حالتی که پرایمری نود روی سایت اصلی باشد یا ثانویه ، نتیجه قطعی برق سایت اصلی افتادن کلاستر است.

  • حالت چهارم:
آموزش مدیریت فیل آور کلاستر مولتی سایت 41

اگر سرورها را در سایت اصلی یکی یکی خاموش کنیم، در حالت نبود Witness خوب مشخصا تعداد نودها از نصف کمتر شده و کلاستر down میشود، اما با حضور Witness کلاستر بالا می ماند.

پس:

حالت اول و دوم بدون Witness شرایط بهتر شد، حالت سوم که فرقی نداشت، حالت آخر با Witness بهتر است، اما چون احتمال رخداد حالت اول و دوم محتمل‌تر است، این سناریو را بدون Witness پیش می‌بریم، اما یاد می‌گیریم برای حالتی که عمدا می‌خواهیم سایت اصلی را قطع کنیم، بعد از فیل آور به سایت ثانویه، یک Witness انتخاب کرده و نود های سایت اصلی را یکی یکی خاموش میکنیم.

اکشن پیلن

در این مرحله فرض این است که نگذاریم کلاستر به حالت Down  برود، اما اگرداخل حالت دوم شکل بالا قرار گرفتیم و کلاستر دان شد، باید یتوانیم ان را UP کنیم، پس این حالت را به تصویر کشیده و اقدام می‌کنیم:

آموزش مدیریت فیل آور کلاستر مولتی سایت 43
  1. صبر می‌کنیم.

2. میریم تو فضای فورس استارت کردن کلاستر،پس روی سایت ثانویه خواهیم داشت:

Net stop clussvc

Net start clussvc /forceQuroum

آموزش مدیریت فیل آور کلاستر مولتی سایت 45
آموزش مدیریت فیل آور کلاستر مولتی سایت 47
آموزش مدیریت فیل آور کلاستر مولتی سایت 49

پس تا اینجا کلاستر روی سایت ثانویه بالا خواهد بود.

3.بعد از بالا آمدن نودهای خاموش شده، روی تک تک سکندری ها خواهیم داشت:

آموزش مدیریت فیل آور کلاستر مولتی سایت 51

باید حواسمان  باشد، حتما سایت اصلی کامل قطع شده باشد، اگر سایت اصلی قطع نباشد، احتمال حضور پرایمری آنجا زیاد است و با پروسه بالا دو پرایمری خواهیم داشت. اما اگر این اتفاق رخ داد، بعد از برقراری ارتباط و طبیعی شدن وضعیت در واقعی نودی پرایمری خواهد ماند که بصورت فورس استارت شده بود، پس در فاصله زمانی دان شدن تا بازگشت به شرایط طبیعی ، اگر تغییرات در هر دو نود پرایمیری رخ داده باشد، بعد از Resume طبق سند بالا، Primary فورس شده تغییراتش بر روی پرایمری سایت مقابل اور رایت خواهد شد و دیتابی آن را از دست خواهیم داد. پیشنهاد می‌شود یک فکری در لایه application برای این حالت کنیم.

دوره های آموزش SQL و مایکروسافت

اشتراک گذاری

0 0 رای ها
امتیازدهی به این محتوا
اشتراک در
اطلاع از
guest
0 نظرات
بازخورد (Feedback) های اینلاین
مشاهده همه دیدگاه ها
0
افکار شما را دوست داریم، لطفا نظر دهید.x