هدف HAحذف تمامی نقاط Single Point Of Failure) SPOF) در تمامی لایه های معماری است. در این بخش مقدمهای درباره HA در OpenStack آورده شده است. سطوح مختلفی از HA در OpenStack وجود دارند. این سطوح عبارتند از:
سطح ۱: این سطح شامل هاست های فیزیکی، تجهیزات ذخیره سازی و شبکه و همچنین ابرناظرها (hypervisors) است.
سطح ۲: این سطح شامل سرویسهای OpenStack مانند سرویس compute ، شبکه، پایگاه داده ها و سرویس های انتقال پیام است.
سطح ۳: این سطح شامل ماشینهای مجازی است که روی هاست های فیزیکی قرار دارند و توسط سرویسهای OpenStack مدیریت میشوند.
سطح ۴: این سطح شامل برنامه های کاربردی است که روی ماشین های مجازی اجرا میشوند.
از بین چهار سطح فوق، سطوح یک و دو بیشتر در OpenStack پشتیبانی میشوند. یکی از پارامترهایی که در بحث HA مورد توجه قرار میگیرد، نوع سرویس ها از نظر stateless یا stateful بودن است. در ادامه توضیحات مختصری درباره هر یک از این دو نوع سرویس بیان میشود:
سرویس های Stateless
سرویسهای stateless سرویس هایی هستند که نیاز به ذخیره سازی درخواست های (requests) قبلی ندارند. به عبارت دیگر هر درخواستی تنها نیاز به اطلاعاتی دارد که به همراه آن درخواست ارسال میشود و هیچ وابستگی به درخواستهای قبلی یا بعدی ندارد. هیچ ارتباط و وابستگی بین درخواستهای مختلف وجود ندارد و اگر درخواستی از بین برود به سادگی میتواند روی سرویس دهنده دیگری اجرا شود.
سرویسهای Stateful
سرویس های stateful سرویس هایی هستند که در این سرویس ها بین درخواسته ای مختلف وابستگی وجود دارد. هر درخواستی ممکن است وابسته به نتایج درخواست های قبلی باشد و با درخواست های بعدی نیز وابستگی هایی داشته باشد. مدیریت سرویس های staeful به مراتب سخت تر از مدیریت سرویس های stateless است زیرا درخواست های مختلف باید به منظور حفظ سازگاری با یکدیگر سنکرون باشند.
از جمله سرویسهای stateless مربوط به OpenStack سرویس های nova-api، nova-conductor، glance-api، keystone-api، neytron-api، nova-scheduler و web server هستند. سرویس های MySQL و RabbitMQ هم مثال هایی از سرویس های stateful مربوط به OpenStack هستند.
در حال حاضر سه روش کلی برای پیاده سازی HA در OpenStack وجود دارد. هر یک از این روش ها در ادامه به اختصار توضیح داده شده اند:
۱- در ساده ترین روش میتوان از یک گره cloud controller استفاده کرد و این گره را مجازی سازی کرد و سپس با استفاده از VMware clustering یا Linux clustering ماشین مجازی را HA کرد. اگرچه این روش، روشی ساده است ولی تنها باید در نواحی (regions) با تعداد محدودی از گره های پردازشی (compute) و تعداد محدود فراخوانی های API استفاده شود. همچنین این روش تنها دارای قابلیت مقیاس پذیری عمودی (vertical) است و از مقیاس پذیری افقی (horizontal) پشتیبانی نمیکند. در عمل از این شیوه استفاده چندانی نمیشود.
۲- دومین روش برای فراهم کردن HA استفاده از روش Active/Passive است. این روش، شبیه روشی است که در قسمت قبل توضیح داده شد ولی به جای استفاده از VMware clustering یا Linux clustering برای شروع مجدد ماشین مجازی از کار افتاده، سرویس های از کار افتاده را روی یک گره کنترلر دیگر روی Linux clustering بالا میآورد.
۳- سومین روش برای فراهم کردن HA روش Active/Active است. در این روش سرویس ها به صورت افقی (horizontally) مقیاس پذیر هستند و یک موازنه کننده بار (load balancer) برای توزیع بار وجود دارد. هر دو روش Active/Passive و Active/Active نیازمند نرم افزارهای کلاسترینگ برای بررسی در دسترس بودن سرویس ها و هاست ها هستند. دو نمونه متداول از این نرم افزارها Pacemaker و Keepalived هستند.
شرکت سیگما دارای قابلیت پیاده سازی OpenStack به صورت HA است.