نویسنده : Arvan

High availability چیست؟

linkedin

High availability یا به اختصار HA در شبکه به معنی تلاش برای بالا بردن سطح دسترسی پذیری و افزایش زمان up time یک دستگاه است. یک دستگاه برای high available بودن، باید بتواند هنگام بروز مشکل، در سریع‌ترین زمان ممکن آن را شناسایی کند و اگر یک سرویس به این دلیل از دسترس خارج شده بود، برای آن جایگزینی داشته باشد و تا زمان رفع مشکل به درخواست‌های کاربران پاسخ بدهد. از آن‌جایی که امکان بروز یک مشکل در برنامه‌ی در حال اجرا،‌ یا برای سرور‌های سرویس‌دهنده همیشه وجود دارد، عملن مدت زمان uptime سرویس‌ها هیچ‌وقت 100% نخواهد بود. ولی هرچه این مقدار به 100 نزدیک‌تر باشد به این معنی است که سرویس ارایه شده پایدار‌تر است.

یکی از راه‌های پیاده‌سازی HA، استفاده از redundancy یا افزونگی است. به این معنی که برای هر سرویس ارایه شده، حداقل دو پشتیبان وجود داشته باشد. شیوه‌ی توزیع ترافیک بین دو پشتیبان می‌تواند متفاوت باشد. در یکی از معماری‌ها به نام active-active، هر دو پشتیبان به طور هم‌زمان ترافیک ورودی و درخواست‌های کاربران را دریافت می‌کنند و زمانی که یکی از آن‌ها به هر دلیلی از دسترس خارج شود، تمام ترافیک تا زمانی که اشکال به وجود آمده برطرف شود، به پشتیبان دوم ارسال می‌شود. در مقابل، در معماری active-passive، در شرایط عادی تنها یکی از پشتیبان‌ها درخواست‌ها را دریافت می‌کند و پشتیبان دیگر در زمان بروز مشکل، جایگزین آن می‌شود.

با استفاده از افزونگی از به جود آمدن تک نقطه‌ی شکست یا SPOF (single point of failure) جلوگیری می‌شود. وجود SPOF به معنی ساختار/سیستم/دستگاهی است که هیچ جایگزینی ندارد و اگر از دسترس خارج شود، برای مدتی سرویسی که ارایه می‌کند، قطع می‌شود. برای نمونه، شبکه‌ای از سرور‌ها را در نظر بگیرید که در آن یک فایروال وظیفه‌ی کنترل ترافیک ورودی را برعهده دارد. اگر فایروال برای مدتی خاموش شود، احتمالن سرور‌ها قادر به دریافت ترافیک ورودی یا حتا ارسال بسته نیستند و اگر چنین اتفاقی رخ دهد،‌ حمله‌ کردن به این سرور‌ها بسیار راحت‌تر از قبل خواهد بود.

 

چرا high available بودن اهمیت دارد؟

همان‌طور که پیش‌تر بیان شد، HA بودن یک سرویس سبب می‌شود حتا در زمان بروز مشکل‌های غیرقابل پیش‌بینی، سرویس دادن به کاربران هم‌چنان ادامه داشته باشد.

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

 

چگونه می‌توان HA را پیاده‌سازی کرد؟

از آن‌جایی که امکان بروز اتفاق در هر لایه‌ای وجود دارد، باید تا حد امکان تعداد SPOFها در یک سیستم را کاهش داد. هم‌چنین هم در لایه‌ی شبکه و هم در لایه‌ی کاربرد، می‌توان از load balancerها استفاده کرد. Load balancerها ترافیک را بین دستگاه‌های سرویس‌دهنده پخش می‌کنند و اگر یک دستگاه  از دسترس خارج شود،‌ ترافیک آن را به دستگاه‌های جایگزین ارسال می‌کنند. گاهی اتفاقات لایه‌ی سخت‌افزار، مانند قطع شدن برق یک سرور، می‌تواند باعث ایجاد مشکل در ارایه‌ی سرویس شود. برای جلوگیری از این مشکلات لازم است سرویس‌ها روی سخت‌افزار‌های جداگانه‌ای وجود داشته باشند (برای نمونه، برای یک سرویس از دو سرور جداگانه استفاده شود).

 

مطالب مرتبط