High Available servers

High Availability چیست؟زمان مطالعه این مطلب ۶ دقیقه

دسترسی‌پذیری بالا یا High Availability یکی از ویژگی‌هایی است که در طراحی سیستم‌ها به کار می‌رود تا آپتایم سیستم را بالا ببرد. در این مقاله قصد داریم این مدل طراحی سیستم را توضیح دهیم. این تکنیک در طراحی سیستم با مفهوم خوشه‌بندی یا کلاسترینگ (Clustering) پیوند خورده است. پس ابتدا کمی با کلاسترینگ آشنا می‌شویم:

کلاسترینگ چیست؟

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

کلاسترها انواع مختلفی دارند و مزایای بسیاری را به همراه می‌آورند. اما در این مقاله ما با دو نوع کلاستر High Availability و  Load Balancing سروکار داریم.

  • کلاستر دسترسی‌پذیری بالا (High Availability)

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

  • توزیع بار (Load Balancing)

با توزیع ترافیک بین نودها، از اینکه یک نود بار خارج از ظرفیتش دریافت کند، جلوگیری می‌شود.

چه عواملی باعث ایجاد Failure در سیستم می‌شود؟

  • شکست نرم‌افزاری: بر اثر ایجاد Failure در سیستم عامل یا اپلیکیشن‌های غیرقابل بازیابی.
  • شکست سخت‌افزاری: ایجاد مشکل در هارددیسک، CPU، RAM و شبکه.

High Availability چیست؟

دسترسی‌پذیری (Availability) برای توصیف زمانی به کار می‌رود که یک سیستم در دسترس است. همین‌طور زمانی که طول می‌کشد تا سیستم به درخواست کاربر پاسخ بدهد. High Availability ویژگی سیستمی است که سطح بالایی از عملکرد را در بازه زمانی مشخصی تضمین می‌کند.

این ویژگی معمولا به صورت درصد مشخص می‌شود. برای مثال دسترسی‌پذیری ۱۰۰٪  یعنی این سیستم هیچ‌گاه دچار خطا نمی‌شود و downtime را تجربه نمی‌کند. دسترسی‌پذیری ۹۹٪  هم به معنای این است که سیستم در یک سال ۳.۶۵ روز downtime دارد.

High Availability چگونه کار می‌کند؟

High Availability مکانیزمی است که برای افزایش دسترسی‌پذیری، پایداری زیرساخت و سرویس‌ها، کاهش Downtime و از بین بردن Single Points of Failure به کار می‌رود.

برای اجرای HA تعدادی سرور در یک کلاستر قرار می‌گیرند و درخواست‌ها بر اساس الگوریتم‌های خاصی بین این سرورها تقسیم می‌شوند.

Single points of failure چیست؟

یکی از اهداف در ساخت سیستم‌های High Available حذف نقاط شکست (Single Points of Failure) است.

Single Points of Failure یک کامپوننت از استک تکنولوژی شما است که اگر مشکلی برایش ایجاد شود، می‌تواند باعث ایجاد اختلال در کل سرویس بشود.

سیستم High Available در سطح وب‌سرور

فرض کنیم شما زیرساختی متشکل از دو وب‌سرور و یک لودبلنسر دارید. این لودبلنسر ترافیک را به سمت دو وب سرور هدایت می‌کند. اگر یکی از وب‌سرور‌ها از دسترس خارج شد، لودبلنسر تمامی ترافیک را به یک وب‌سرور می‌فرستد. در این حالت وب‌سرورها Single Point of Failure نیستند. چون Redundant هستند و لودبلنسر لایه بالایی در صورت بروز مشکل در هرکدام از نودها از مشکل مطلع می‌شود و خودش را وفق می‌دهد.

High Availability در سطح وب‌سرور

سیستم High Available در سطح لود بلنسر

اما اگر مشکل در لایه لودبلنسر به وجود آید چه؟ در این حالت لودبلنسر یک Single Point of Failure است. می‌توان یک نود لودبلنسر نیز به این کلاستر اضافه کرد، اما Redundancy به تنهایی High Availability ایجاد نمی‌کند. مکانیزمی نیز باید وجود داشته باشد تا Failure به موقع تشخیص داده شود و نود دیگر وارد عمل شود.

در طراحی بالا به پایین Top-to-Bottom هر لایه، لایه زیرین خود را بازرسی می‌کند تا متوجه خطاهای به وجود آمده احتمالی باشد. اگر برای لودبلنسر یک Failure detection قرار دهیم، خود این نود جدید می‌شود یک Single Point of Failure.

برای برطرف کردن این مشکل باید چند نود درون یک کلاستر به یکدیگر متصل شوند. به این ترتیب هر نود بتواند Failure‌ها را در نود‌ دیگر تشخیص دهد.

البته در مورد لودبلنسر یک مشکل دیگر نیز وجود دارد که آن IP Address و نحوه کار Nameserverها است. تغییر لودبلنسر به این معنا است که باید در IP Address نیز تغییراتی ایجاد شود و ترافیک به IP Address نود اضافه، هدایت شود. در حالت عادی این تغییر زمان زیادی را می‌برد.

راه‌حل مناسب و قابل اتکا برای این مسئله استفاده از سیستم‌هایی است که قابلیت remap انعطاف‌پذیر یا floating IP را مهیا می‌کند. IP Address remapping در لحظه مشکلات ناشی از تغییرات در DNS را برطرف می‌کند. به این ترتیب که یک IP Static را ارائه می‌دهد که می‌تواند به آسانی جابه‌جا شود.

On-demand IP Address remapping مشکلات ناشی از تغییر DNS را با یک IP Static که به آسانی می‌تواند میان نودهای مختلف جابه‌جا شود، برطرف می‌کند. نام دامنه می‌تواند به همان IP Address اختصاص داشته باشد، اما خود IP میان سرورها حرکت کند.

چه کامپوننت‌های سیستمی برای ایجاد High Availability نیاز است؟

کامپوننت‌های متعددی برای اعمال HA در سیستم نیاز است. HA بیش از نرم‌افزار به این عوامل بستگی دارد:

  • محیط: اگر همه سرورهای شما در یک منطقه جغرافیایی قرار گرفته باشد، یک اتفاق محیطی مانند زلزله کل سیستم شما را از دسترس خارج می‌کند. داشتن سرورهای اضافه در دیتاسنترها و موقعیت‌های جغرافیایی متعدد، قابلیت اتکای شما را افزایش می‌دهد.
  • نرم‌افزار: کل استک نرم‌افزاری شما، شامل سیستم عامل‌تان و همینطور اپلیکیشن، باید برای Failure های غیرمنتظره‌ای که ممکن‌ است بالاجبار ری‌استارت سیستم را در پی داشته باشد، آماده باشد.
  • دیتا: data loss می‌تواند به دلایل مختلفی رخ دهد. failure های هارددیسک تنها عامل این مسئله نیستند. سیستم‌های HA باید امنیت داده‌های در مواقع بروز Failure تامین کنند.
  • شبکه: از دسترس خارج‌شدن‌های پیاپی در شبکه ممکن است نقاط‌ شکست دیگری را در شبکه ایجاد کنند. بهتر است در شبکه نیز یک استراتژی redundant داشت.

برای ایجاد سیستم High Available از چه نرم‌افزارهایی می‌توان استفاده کرد؟

برای داشتن سیستم HA در هر لایه نرم‌افزارها و پیکربندی‌های مختلفی نیاز است. اما در لایه اپلیکیشن لود بلنسرها یکی از موارد ضروری هستند.

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

هر چه در سلسسله مراتب استک سیستم بالاتر برویم به کاربستن راهکار redundant اهمیت بیشتری پیدا می‌کند. همانطور که بالاتر گفتیم برای حذف کردن این Single Point of failure نیاز است که یک کلاستر از لودبلنسرها را پشت یک Floating  IP قرار دهیم. برای ایجاد یک چنین ستاپی Corosync و Pacemaker انتخاب‌های محبوبی هستند که برای سرورهای Ubuntu و CentOS در دسترس هستند.

نتیجه

به کار بستن سیستم High Available در ابتدا ممکن است پیچیده به نظر آید. اما در نهایت فواید بسیاری را برای کسب‌وکار به وجود خواهد آورد.

پاسخ دادن:

ایمیل شما نمایش داده نمی‌شود.