پایداری بالا ( High Availability ) در سرویسهای اینترنتی
با افزایش تقاضا برای زیرساختهای قابل اطمینان و کارامد جهت سرویسدهی به سیستمهای حساس در حوزه اینترنت، مفاهیم ارتقاپذیری سختافزاری ( Scalability ) و پایداری بالا ( High Availability ) بیش از گذشته مورد توجه قرار گرفتهاند و شرکتهای ارائهکننده زیرساخت فناوری اطلاعات ( IT ) در تلاش هستند که هر چه بیشتر کیفیت خدمات ارائه شده خود را در این زمینه افزایش دهند. از تنظیم و کنترل افزایش زمان لود سیستم گرفته، تا کاهش زمان قطعی ( Downtime ) و کاهش خطر خرابی به دلیل ارائه خدمات از یک نقطه، مواردی هستند که در این مفاهیم دارای اهمیت میباشند. این اهمیت در مورد سیستمهای دارای تراکنشهای زیاد یا دارای حساسیتهای بالا چندین برابر میگردد، بنابراین در نخستین گام مشورت با متخصصان این بخش از الزامات کار میباشد.
در ادامه معنی اصلی پایداری بالا و تاثیر آن بر افزایش اطمینانپذیری زیرساخت توضیح داده خواهد شد.
منظور از پایداری بالا و اندازهگیری آن
در حوزه خدمات اینترنتی، اصطلاح پایداری به دورهای که سرویس فعال می باشد، اطلاق میگردد، مانند زمان مورد نیاز برای پاسخدهی به درخواستهای ارسال شده از سوی کاربر. پایداری بالا میزان کیفیت کارکرد عملیاتی سیستم یا مؤلفههای آن در این زمان است.
پایداری بیشتر به صورت درصدی که از زمان عملکرد مطلوب سیستم بیان میشود. برای نمونه مقدار 99% نشاندهنده این است که سیستم تنها در 1% دوره زمانی در دسترس نبوده است. در یک بازه یکساله این میزان برابر 3.65 روز می باشد.
در واقع پایداری بالا به عنوان یک مکانیزم شناسایی و پیشگیری از خرابی پاسخدهی برای زیرساخت عمل میکند. روش کارکرد آن معمولا ساده بوده و پیادهسازی آن از طریق برخی نرمافزارهای ویژه این کار و تنظیم آنها انجام میپذیرد.
اهمیت پایداری بالا
زمانیکه شما یک سیستم بزرگ را راهاندازی مینمایید، کمینه کردن میزان قطعی و وقفههای سرویسدهی از اولویتهای اصلی شما میباشد. صرف نظر از اینکه چه میزان سیستم و نرمافزار شما قابل اطمینان است، باز هم مشکلی میتواند سبب اختلال در برنامه یا سرور شما شود.
پیادهسازی و توجه به پایداری بالا برای زیرساخت میتواند یک راهبرد مناسب برای کاهش تاثیر اتفاقات ناخواسته باشد. سیستمهای با پایداری بالا میتوانند به صورت خودکار در این زمانها درخواستهای ارسالی به سرور را پوشش داده و پشتیبانی کنند.
پایداری بالا با چه چیزی ایجاد میشود؟
یکی از اهداف پایداری بالا کاهش خطر خرابی به دلیل ارائه خدمات از یک نقطه میباشد. ارائه خدمات تنها از یک موقعیت میتواند به دلیل در دسترس نبود، سبب ایجاد وقفه در سرویسدهی سیستم شود. هر مؤلفهای از سیستم شما که لازم است عملکرد مناسبی داشته باشد ولی تنها از یک بخش ارائه میشود میتواند با خطر خرابی به دلیل ارائه خدمات از یک نقطه مواجه شود.
برای جلوگیری از این مشکل، هر لایه از سیستم شما باید برای افزونگی ( Redundancy ) آماده شده باشد. برای نمونه تصور کنید شما دارای زیرساختی شامل دو وبسرور هستید. در حالت عادی ترافیک کاربران بین سرورها تقسیم میشود و در صورتیکه یکی از سرورها با مشکل مواجه گردد، ترافیک به سرور سالم تغییر مسیر داده خواهد شد.
در این مثال خطر خرابی به دلیل ارائه خدمات از یک نقطه در لایه وبسرور، به دلایل زیر مشاهده نمیشود:
مولفههای افزونه ( Redundant ) برای یک بخش در نظر گرفته شدهاند
مکانیزمی بر روی این لایه (وبسرورها) اندیشیده شده است (متعادل کننده بار ترافیکی یا load balancer) که توانایی شناسایی خطا در مؤلفهها و ایجاد ساز و کاری جهت جلوگیری وقفه در آن را دارد
اما چه اتفاقی خواهد افتاد اگر متعادل کننده بار ترافیکی با اختلال روبرو شود؟
در این سناریور خود متعادل کننده بار ترافیکی در معرض خطر خرابی به دلیل ارائه خدمات از یک نقطه میباشد. حتی در صورتیکه متعادل کننده دیگری نیز اضافه شود، باز هم مشخص نیست در لایه بالایی آن با این مشکل مواجه نگردد. بنابراین افزونگی به تنهایی نمیتواند تضمینی برای پایداری بالا باشد.
مؤلفههای سیستم که باید در پایداری بالا در نظر گرفته شود
چندین مؤلفه باید به دقت برای پایداری بالا در نظر گرفته شوند، افزون بر پیادهسازی نرمافزار، پایداری بالا وابسته به فاکتورهای زیر است:
محیط: در صورتیکه همه سرورهای شما در یک موقعیت جغرافیایی قرار داشته باشند، عوامل محیطی مانند زمینلرزه یا بهمن میتوانند تمام سیستم را مختل نمایند. داشتن سرورهای افزوده در موقعیتها و دیتاسنترها ( Datacenter ) گوناگون میتواند سبب افزایش اطمینانپذیری سرویس شود.
سختافزار: زیرساخت سختافزاری سرورها میباید دارای امکان ارتقاپذیری و پیادهسازی سیستمهای افزوده برای مواجه با حالاتی که خرابی سختافزاری روی میدهد، باشد.
نرمافزار: تمام لایههای نرمافزاری از جمله سیستمعامل و خود نرمافزار باید برای حل خطاهای غیرمنتظره آماده شده باشند. برای نمونه قابلیت ریستارت سرور و دسترسی از طریق روشهای جایگزین.
دادهها: از بین رفتن دادهها و نااستواری آنها میتواند سبب ایجاد چندین مشکل شود. این مورد تنها به مشکلات ناشی از خرابی هارد دیسکها محدود نمیشود. در پایداری بالا باید برای امنیت داده در زمان بروز مشکلات اندیشه شده باشد، برای نمونه نگهداری بکاپها در هارد دیسک دیگر.
شبکه: قطعی برنامهریزی نشده شبکه میتواند با خطر خرابی به دلیل ارائه خدمات از یک نقطه مواجه شود. بسیار مهم است که راهبری برای شبکه افزونه برای این منظور در نظر گرفته شده باشد. برای نمونه استفاده از شبکه انتقال محتوا یا سی دی ان ( Content Delivery Network ؛ به اختصار CDN ).
پایداری بالا زیرمجموعهای از مهندسی اطمینانپذیری میباشد که بر تضمین عملکرد کارا و در سطح بالای سیستم و مؤلفههای آن در یک بازه زمانی مشخص متمرکز شده است. در نگاه نخست پیادهسازی آن بسیار پیچیده به نظر میرسد، با این حال، پیادهسازی آن مزیتها و ویژگیهای بسیاری برای سیستمی که نیاز به افزایش اطمینانپذیری دارد به وجود میآورد.