کدنویسی میکنم نه به این خاطر که کسب درآمد کنم یا توسط دیگران تحسین بشم،فقط به این خاطر که کدنویسی باحاله.
High Availability یا HA چیست؟
عبارت High Availability یا به اختصار HA به معنای تلاش سرویس دهنده ها برای دسترسی مستمر به خدمات و سرویسها و همچنین بیشترین زمان UpTime برای آنها می باشد.
ارائه دهندگان سرویس همیشه به دنبال راهکاری هستند که بتوانند همیشه در دسترس کاربران باشند یا به اصطلاح ثبات در سرویس دهی داشته باشند و 100% نیاز آنان را پاسخ دهند ولی از طرفی به هر دلیل احتمال بروز خطا و ایجاد مشکل برای سرویس ها یا سرورهای ارائه دهنده آن سرویسها اجتناب ناپذیر است و در عمل هیچگاه امکان رسیدن به آمار 100% در دسترس بودن وجود ندارد.همین عامل باعث استقبال شدیدی از راهکار HA و تلاش برای دسترسی مستمر و بیشتر به سرورها و سرویسها شد.نکته مهم این است که با توجه به پیچیده بودن و هزینه بر بودن راهکارهای HA تنها در برنامه های حساس و حیاتی از آن استفاده می شود.
با استفاده از HA، از به جود آمدن نقطهی شکست یا SPOF (single point of failure) جلوگیری میشود.SPOF به معنی بخشی از ساختار ارائه خدمت است که هیچ جایگزینی ندارد و اگر از دسترس خارج شود، سرویس دهنده قادر به ارائه خدمت نمی باشد.
بیان بسیار ساده مفهوم HA به این صورت است که در لحظه به وجود آمدن بحران و از کار افتادن سرویس اصلی،بدون اینکه کاربر متوجه شود از سرویس جایگزین استفاده شود و سرویس دهی متوقف نشود،از اینرو نیاز است که حداقل دو نسخه از سرویس آماده خدمت باشند.
پیاده سازی ساختار HA به دو صورت قابل انجام است:
1 - تکنیک Active/Active:
2 - تکنیک Active/Passive:
در این روش همه سرویس دهنده ها فعال نمی باشند و درخواستها فقط برای سرویس دهنده های فعال ارسال می شود و فقط زمانی که اختلالی در سرویس دهنده های فعال به وجود آید و متوقف شوند سرویس دهنده جایگزین، ادامه عملیات سرویس دهی را بر عهده می گیرد.
معمولا سرورهای Passive منابع ضعیفتری نسبت به سرورهای Active دارند و به همین دلیل پس از وقوع اشکال در سرورهای Active می بایست به سرعت نسبت به رفع اشکال اقدام نمود.
پیاده سازی و استفاده از قابلیت های HA به منظور در دسترس بودن مستمر سرویسها در سطوح مختلفی قابل انجام است:
- در سطح سخت افزار(Hardware):
برای پیاده سازی HA در لایه سخت افزار راهکارهای متفاوتی وجود دارد از جمله استفاده از قابلیت ذخیره سازی اطلاعات بر روی چندین دیسک و مدیریت آنها با Raid Controller.همچنین قرار دادن تمام سرویسها بر روی چند سخت افزار جداگانه تا در زمان از کار افتادن احتمالی یکی از سخت افزارها دیگر سخت افزارها جایگزین شوند و سرویس دهی به صورت مستمر ادامه پیدا کند. - در سطح ماشین مجازی(VM):
به طور کلی یکی از دلایلِ مهم گرایش به سمت زیرساخت های مجازی، وجود امکانات قدرتمند در زمینه HA در حوزه ماشین های مجازی می باشد که می توان با انجام تنظیمات VSPHERE HA در VCENTER به این امکانات دسترسی داشت.
در زیر ساخت ماشین های مجازی، تکنیک های HA در زمینه های زیر می تواند از خطاها جلوگیری کند:
- خرابی یک یا چند سرور فیزیکی که میزبان ماشین های مجازی هستند.
- ایجاد خطا در سیستم عامل یک ماشین مجازی.
- ایجاد مشکل برای یک سرویس خاص مربوط به یک اپلیکیشن خاص.
- به وجود آمدن مشکل در سمت ذخیره ساز (Storage).
- ایجاد مشکل سخت افزاری قسمتی از قطعات سرور فیزیکی که میزبان ماشین مجازی است. - در سطح سیستم عامل(OS):
در سطح سیستم عامل برای برقراری قابلیت Redundant در راستای اجرای زیر ساخت HA نیاز به نصب ابزارها و برنامه های جانبی می باشد.پس از نصب ابزارهای جانبی با ارسال بسته ها به صورت مستمر سیتم عامل بررسی می شود تا در صورت به وجود آمدن مشکل، دیگری بتواند ادامه فرایند را مدیریت کند. - در سطح پایگاه داده(DB):
برای این منظور از قابلیت Replication دیتابیس ها استفاده میشود تا اطلاعات در چندین دیتابیس همزمان کپی شود تا در صورت از کار افتادن یک دیتابیس، اطلاعات از دیتابیس دیگر قابل دسترسی باشد. - در سطح اپلیکیشن(Application):
در سطح اپلیکیشن نیز می توان با ایجاد Redundant، چندین سرور اپلیکیشن را به صورت فیزیکی و یا با قابلیت Docker Base راه اندازی کرد تا در مواقع بحران بتوانند جایگزین یکدیگر شوند.
در این پست وارد جزئیات نشده و سعی شد که مطالب به صورت تیتروار و خلاصه تنها برای آشنایی با مفاهیم و یک درک کلی از تکنیک های HA برای مطالعه قرار داده شود.
مطلبی دیگر از این انتشارات
آموزش نصب و راهنمای کاربری SonarQube با Maven
مطلبی دیگر از این انتشارات
تست های غیر عملکردی نرم افزار (Non-Functional Test)
مطلبی دیگر از این انتشارات
آموزش نصب و راهنمای کاربری Apache JMeter