عبارت High Availability یا بهاختصار HA به معنای تلاش سرویسدهندهها برای دسترسی مستمر به خدمات و سرویسها و همچنین بیشترین زمان UpTime برای آنها میباشد.
ارائهدهندگان سرویس همیشه به دنبال راهکاری هستند که بتوانند همیشه در دسترس کاربران باشند یا بهاصطلاح ثبات در سرویسدهی داشته باشند و 100% نیاز آنان را پاسخ دهند؛ ولی از طرفی به هر دلیل احتمال بروز خطا و ایجاد مشکل برای سرویسها یا سرورهای ارائهدهنده آن سرویسها اجتنابناپذیر است و در عمل هیچگاه امکان رسیدن به آمار 100% دردسترسبودن وجود ندارد. همین عامل باعث استقبال شدیدی از راهکار HA و تلاش برای دسترسی مستمر و بیشتر به سرورها و سرویسها شد. نکته مهم این است که باتوجهبه پیچیده بودن و هزینهبربودن راهکارهای HA تنها در برنامههای حساس و حیاتی از آن استفاده میشود.
با استفاده از HA، از به جود آمدن نقطهٔ شکست یا SPOF (single point of failure) جلوگیری میشود.SPOF به معنیبخشی از ساختار ارائه خدمت است که هیچ جایگزینی ندارد و اگر از دسترس خارج شود، سرویسدهنده قادر به ارائه خدمت نمیباشد.
بیان بسیار ساده مفهوم HA به این صورت است که در لحظه بهوجودآمدن بحران و ازکارافتادن سرویس اصلی، بدون اینکه کاربر متوجه شود از سرویس جایگزین استفاده شود و سرویسدهی متوقف نشود، ازاینرو نیاز است که حداقل دو نسخه از سرویس آماده خدمت باشند.
پیاده سازی ساختار HA به دو صورت قابل انجام است:
1 – Active/Active High Availability
یک خوشه Active – Active معمولاً از حداقل دو گره تشکیل شده است که هر دو به طور فعال یک نوع سرویس را به طور همزمان اجرا می کنند. هدف اصلی یک خوشه Active / Active دستیابی به تعادل بار است.لودبالانسر، بارهای کاری را در تمام گره ها توزیع می کند تا از بارگذاری بیش از حد هر گره منفرد جلوگیری کند. از آنجایی که گره های بیشتری برای خدمت وجود دارد، بهبود قابل توجهی در توان عملیاتی و زمان پاسخ نیز وجود خواهد داشت.
در شکل زیر که از یک لودبالانسر و دو سرور HTTP (مثلاً دو گره) تشکیل شده است، نمونهای از این نوع پیکربندی خوشه HA است. به جای اتصال مستقیم به سرور HTTP، کلاینت های وب از طریق load balancer می گذرند، که به نوبه خود هر کلاینت را به هر یک از سرورهای HTTP پشت سر خود متصل می کند.
تخصیص کلاینت ها به گره های خوشه یک فرآیند دلخواه نیست. بلکه بر اساس الگوریتم لودبالانسر بر روی لودبالانسر تنظیم شده است. به عنوان مثال، در یک الگوریتم Round Robin، اولین کلاینت برای اتصال به سرور اول ارسال می شود، مشتری دوم به سرور دوم، مشتری سوم به سرور اول، مشتری چهارم به سرور دوم برمی گردد.
برای اینکه کلاستر Disaster recover به طور یکپارچه عمل کند، توصیه می کنیم که دو گره برای افزونگی پیکربندی شوند. به عبارت دیگر، تنظیمات آنها باید تقریباً یکسان باشند.
2 – Active/Passive High Availability
مانند پیکربندی cluster active/active، یک خوشه active / passive نیز از حداقل دو گره تشکیل شده است. با این حال، همانطور که از نام “active / passive” پیداست، قرار نیست همه گره ها فعال باشند. در مورد دو گره، به عنوان مثال، اگر گره اول از قبل فعال است، گره دوم باید غیرفعال یا در حالت آماده به کار باشد.
سرور غیرفعال (failover) به عنوان یک نسخه پشتیبان عمل می کند که به محض قطع اتصال سرور فعال (اولیه) یا ناتوانی در سرویس دهی آماده می شود، یک failover فعال-غیرفعال برای زمانی که یک گره از کار می افتد.
در این روش همه سرویسدهندهها فعال نمیباشند و درخواستها فقط برای سرویسدهندههای فعال ارسال میشود و فقط زمانی که اختلالی در سرویسدهندههای فعال به وجود آید و متوقف شوند سرویسدهنده جایگزین، ادامه عملیات سرویسدهی را بر عهده میگیرد.
معمولاً سرورهای Passive منابع ضعیفتری نسبت به سرورهای Active دارند و به همین دلیل پس از وقوع اشکال در سرورهای Active میبایست بهسرعت نسبت به رفع اشکال اقدام نمود.
هنگامی که کلاینت ها به یک خوشه دو گره در پیکربندی active/ passive متصل می شوند، فقط به یک سرور متصل می شوند. به عبارت دیگر، همه مشتریان به یک سرور متصل خواهند شد. مانند پیکربندی active/active، مهم است که دو سرور دقیقاً تنظیمات مشابهی داشته باشند.
اگر تغییراتی در تنظیمات سرور اصلی ایجاد شود، این تغییرات باید به سرور failover تبدیل شوند. بنابراین وقتی failover تمام می شود، کلاینت ها نمی توانند تفاوت را تشخیص دهند.
پیادهسازی و استفاده از قابلیتهای HA بهمنظور دردسترسبودن مستمر سرویسها در سطوح مختلفی قابل انجام است:
High Availability در سطح سختافزار
برای پیادهسازی HA در لایه سختافزار راهکارهای متفاوتی وجود دارد از جمله استفاده از قابلیت ذخیرهسازی اطلاعات بر روی چندین دیسک و مدیریت آنها با Raid Controller.همچنین قراردادن تمام سرویسها بر روی چند سختافزار جداگانه تا در زمان ازکارافتادن احتمالی یکی از سختافزارها دیگر سختافزارها جایگزین شوند و سرویسدهی بهصورت مستمر ادامه پیدا کند.
High Availability در سطح ماشین مجازی
بهطورکلی یکی از دلایلِ مهم گرایش به سمت زیرساختهای مجازی، وجود امکانات قدرتمند در زمینه HA در حوزه ماشینهای مجازی میباشد که میتوان با انجام تنظیمات VSPHERE HA در VCENTER به این امکانات دسترسی داشت.
در زیرساخت ماشینهای مجازی، تکنیکهای High Availability در زمینههای زیر میتواند از خطاها جلوگیری کند:
- خرابی یک یا چند سرور فیزیکی که میزبان ماشینهای مجازی هستند.
- ایجاد خطا در سیستمعامل یک ماشین مجازی.
- ایجاد مشکل برای یک سرویس خاص مربوط به یک اپلیکیشن خاص.
- بهوجودآمدن مشکل در سمت ذخیرهساز (Storage).
- ایجاد مشکل سختافزاری قسمتی از قطعات سرور فیزیکی که میزبان ماشین مجازی است.
High Availability در سطح سیستمعامل
در سطح سیستمعامل برای برقراری قابلیت Redundant در راستای اجرای زیرساخت HA نیاز به نصب ابزارها و برنامههای جانبی میباشد. پس از نصب ابزارهای جانبی با ارسال بستهها بهصورت مستمر سیستمعامل بررسی میشود تا در صورت بهوجودآمدن مشکل، دیگری بتواند ادامه فرایند را مدیریت کند.
High Availabilityدر سطح دیتابیس
برای این منظور از قابلیت Replication دیتابیسها استفاده میشود تا اطلاعات در چندین دیتابیس همزمان کپی شود تا در صورت ازکارافتادن یک دیتابیس، اطلاعات از دیتابیس دیگر قابلدسترسی باشد.
High Availability در سطح اپلیکیشن
در سطح اپلیکیشن نیز میتوان با ایجاد Redundant، چندین سرور اپلیکیشن را بهصورت فیزیکی و یا با قابلیت Docker Base راهاندازی کرد تا در مواقع بحران بتوانند جایگزین یکدیگر شوند.