وضعیت Split-brain در ذخیره سازی توزیع شده

در سیستم های ذخیره سازی توزیع شده(Distributed Systems) که معمولا مجموعه ای از سرورها به صورت خوشه ای(Cluster) با یکدیگر در ارتباط بوده و با یک منبع ذخیره سازی اشتراکی(Shared-storage) در تماس هستند، یکی از وضعیت های ممکن که امنیت داده را تهدید می نماید وضعیت Split-brain است. این وضعیت زمانی اتفاق می افتد که به دلیل طراحی نادرست شبکه اختصاصی کلاستر یا خارج از سرویس شدن سرورها و عدم ارتباط و هماهنگ سازی داده ها، سیستم با دو مجموعه داده روی هم افتاده(Overlap) روبرو شود.

 

خوشه های با دسترس پذیری بالا(High-availability) معمولا از یک شبکه اختصاصی به نام ضربان قلب(Heartbeat) جهت مانیتورینگ و بررسی وضعیت نودهای کلاستر استفاده می نمایند. وضعیت Split-brain زمانی اتفاق می افتد که شبکه Heartbeat به صورت کامل قطع شود ولی نودهای کلاستر در حال اجرا باشند. در این حالت هر نود فکر می کند که خودش تنها نود متصل به کلاستر است و با منبع ذخیره سازی اشتراکی ارتباط بر قرار نموده و بدون در نظر گرفتن وضعیت مجموعه داده هایی که نودهای دیگر با آن در ارتباط هستند به کلاینت های درخواست کننده خدمات، سرویس می دهد که این عمل باعث می شود داده ها دچار تناقض شده و بخشی یا کل داده ها خراب شود.

 

 

یکی از روش های متداول برای کنترل این وضعیت استفاده از رویکرد Quorum است. این رویکرد با استفاده از روش جمع آوری “رای تایید” اجازه اجرای عملیات در کلاستر را صادر می نماید. در روش های مبتنی بر Quorum معمولا لازم است N/2+1 نود اجرای عملیات درخواست شده را تایید نمایند تا جامعیت داده حفظ شود. همچنین این رویکرد می تواند در جهت ایزوله کردن نود از دست رفته که اصطلاحا Fencing نامیده می شود با استفاده از روش هایی از دسترسی غیر مجاز نود به منابع اشتراکی جلوگیری نماید. یکی از روش های متداول تکنیک STONITH است. به عنوان مثال در یک کلاستر مبتنی بر Quorum دارای 3 نود لازم است 2 نود حتما فعال باشند تا انجام عملیات امکان پذیر شود.

 

امروزه کلاسترهای با دسترس پذیری بالا در سطح Enterprise از ترکیب Heartbeat برای مانیتورینگ نودها و رویکرد Quorum برای کنترل وضعیت Split-brain منابع ذخیره سازی اشتراکی استفاده می نمایند. اما کنترل وضعیت Split-brain در کلاسترهای دارای 2 نود یکی از چالش های موجود در این بخش می باشد که نیاز است به آن توجه ویژه ای شود چرا که با قطع اتصال یکی از نودها، 50% کلاستر با مشکل مواجه شده و تصمیم گیری درست جهت قرار نگرفتن در وضعیت Split-brain مشکل می شود و احتمال خراب شدن داده ها و از دست رفتن جامعیت داده افزایش می یابد.

 

Heartbeat network: شبکه ای اختصاصی که جهت مانیتورینگ و کنترل وضعیت نودهای کلاستر مورد استفاده قرار می گیرد و فقط توسط اعضای کلاستر قابل دسترس است.

Quorum: حداقل تعداد “رای تایید” که لازم است درخواست کننده در سیستم توزیع شده دریافت کند تا بتواند منابع اشتراکی را مورد دسترسی قرار دهد.

Fencing: مجموعه ای از عملیات که جهت ایزوله کردن نود از دست رفته در کلاستر جهت جلوگیری از دسترسی آن به منابع اشتراکی انجام می شود تا آن نود نتواند بدون تایید و صدور مجوز با منابع اشتراکی(معمولا منبع ذخیره سازی) ارتباط برقرار نموده و داده ها را خراب کند.

 

نتیجه گیری: دسترس پذیری بالا(HA) یکی از نیازهای امروزی هر بستر مبتنی بر شبکه می باشد و طراحی و پیاده سازی آن نیاز به توجه و تخصص ویژه ای دارد، چرا که در صورت طراحی و پیاده سازی نادرست، می تواند در منبع ذخیره سازی اشتراکی جامعیت داده ها را دچار مشکل نموده و امنیت داده را به خطر بیندازد. از این رو توجه به بحث ذخیره سازی اشتراکی یکی از مهمترین چالش های HA در سیستم های توزیع شده و کلاسترهای با دسترسی بالا به شمار می رود.

نویسنده: سعید بستان دوست

موفق و پیروز باشید.

4

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *