سرویس مشترک Image در اوپناستک نام دیگری نیز دارد که به آن Glance میگویند و محلی برای نگهداری ماشینهای مجازی و همچنین Image دیسکها را در اختیار قرار میدهد. سرویس Glance قابلیتهای پیشرفتهای را به زیرساختهای قدیمیتر مجازیسازی داده است. بهعنوان مثال، بهکارگیری این سرویس در کنار VMware قابلیتهایی نظیر vMotion، HA و DRS را ایجاد نموده است.
هدف HA حذف تمامی نقاط Single Point of Failure (SPOF) در تمامی لایههای معماری رایانش ابری است. در این بخش، مقدمهای درباره HA در OpenStack آورده شده است. سطوح مختلفی از HA در OpenStack وجود دارند. این سطوح عبارتاند از:
- سطح ۱: این سطح شامل هاستهای فیزیکی، تجهیزات ذخیرهسازی و شبکه و همچنین ابرناظرها (Hypervisors) است.
- سطح ۲: این سطح شامل سرویسهای OpenStack مانند سرویس Compute، شبکه، پایگاهدادهها و سرویسهای انتقال پیام است.
- سطح ۳: این سطح شامل ماشینهای مجازی است که روی هاستهای فیزیکی قرار دارند و توسط سرویسهای OpenStack مدیریت میشوند.
- سطح ۴: این سطح شامل برنامههای کاربردی است که روی ماشینهای مجازی اجرا میشوند.
از بین چهار سطح فوق، سطوح یک و دو بیشتر در OpenStack پشتیبانی میشوند. یکی از پارامترهایی که در بحث HA مورد توجه قرار میگیرد، نوع سرویسها از نظر Stateless یا Stateful بودن است. در ادامه، توضیحات مختصری درباره هر یک از این دو نوع سرویس بیان میشود:
سرویسهای Stateless
سرویسهای Stateless سرویسهایی هستند که نیاز به ذخیرهسازی درخواستهای (Requests) قبلی ندارند. به عبارت دیگر، هر درخواستی تنها نیاز به اطلاعاتی دارد که به همراه آن درخواست ارسال میشود و هیچ وابستگی به درخواستهای قبلی یا بعدی ندارد. هیچ ارتباط و وابستگی بین درخواستهای مختلف وجود ندارد و اگر درخواستی از بین برود، بهسادگی میتواند روی سرویسدهنده دیگری اجرا شود.
سرویسهای Stateful
سرویسهای Stateful سرویسهایی هستند که در آنها بین درخواستهای مختلف وابستگی وجود دارد. هر درخواستی ممکن است وابسته به نتایج درخواستهای قبلی باشد و با درخواستهای بعدی نیز وابستگیهایی داشته باشد. مدیریت سرویسهای Stateful بهمراتب سختتر از مدیریت سرویسهای Stateless است؛ زیرا درخواستهای مختلف باید بهمنظور حفظ سازگاری با یکدیگر سینکرون باشند.
از جمله سرویسهای Stateless مربوط به OpenStack، سرویسهای nova-api، nova-conductor، glance-api، keystone-api، neutron-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 هستند.
سخن پایانی
در جمعبندی، High Availability یا HA در OpenStack یکی از مهمترین رویکردها برای افزایش پایداری، دسترسپذیری و اطمینانپذیری زیرساختهای رایانش ابری محسوب میشود. با توجه به وابستگی سرویسهای ابری به اجزای مختلفی مانند هاستهای فیزیکی، شبکه، تجهیزات ذخیرهسازی، پایگاهداده، سرویسهای OpenStack و ماشینهای مجازی، ایجاد افزونگی در لایههای مختلف میتواند از بروز اختلال گسترده در زمان خرابی یک جزء جلوگیری کند.
در معماری OpenStack، شناخت تفاوت سرویسهای Stateless و Stateful اهمیت زیادی دارد؛ زیرا نحوه مدیریت و بازیابی این دو گروه در زمان بروز خطا متفاوت است. سرویسهای Stateless معمولاً امکان توزیع و اجرای مجدد سادهتری دارند، در حالی که سرویسهای Stateful به حفظ وضعیت و هماهنگی دادهها میان درخواستها و گرههای مختلف نیازمند هستند. به همین دلیل، استفاده از راهکارهای مناسب برای کلاسترینگ، موازنه بار و مدیریت سرویسها نقش مهمی در پیادهسازی HA ایفا میکند.
سه رویکرد اصلی شامل مجازیسازی کنترلر، معماری Active/Passive و معماری Active/Active هستند که هرکدام متناسب با اندازه زیرساخت و نیازهای مقیاسپذیری قابل استفادهاند. در معماریهای پیشرفتهتر، ابزارهایی مانند Pacemaker و Keepalived میتوانند در پایش سرویسها و مدیریت خرابیها مؤثر باشند. در نهایت، پیادهسازی صحیح HA در OpenStack به سازمانها کمک میکند تا ضمن کاهش نقاط شکست، پایداری و تداوم سرویسهای ابری را افزایش دهند و زیرساختی مطمئنتر برای ارائه خدمات ایجاد کنند.
شرکت سیگما دارای قابلیت پیادهسازی OpenStack بهصورت HA در سرویسهای سرور ابری ابرسیگما است.