در این مقاله قصد داریم تا شما را با مفاهیم و پیش نیازهای لازم جهت نصب و راهاندازی نرم افزار OpenStack آشنا کنیم. نرم افزار OpenStack یک پلتفرم ابری متن باز است و یکی از ۳ پروژه متن باز بزرگ جهان محسوب میشود. پیش از پرداختن به آن اجازه دهید ابتدا اجازه دهید تا نگاهی داشته به باشیم به گزینههایی که جهت راهاندازی یک Could یا ابر در اختیار خواهیم داشت.
گزینههای راهاندازی یک Cloud
جهت راهاندازی یک Cloud، در حالات Private Cloud، Public Cloud و Hybrid Cloud جدولی با 12 بخش در شکل زیر آورده شده است که شامل ابزارهای مختلفی برای راهاندازی سطوح مورد نیاز میباشند (البته همه آنها الزامی نیستند و بسته به نوع ابر شما میتوانند بخشهایی حذف شوند) که در هر بخش نیز خوشبختانه انتخابهای متفاوتی در دسترس میباشد.
به عنوان مثال همانطور که در جدول شکل فوق مشاهده میکنید، جهت راهاندازی یک Private Cloud ابزارهای مختلفی از جمله: VMware vCloud، Apache CloudStack، OpenStack و… را در اختیار داریم، حال با توجه به در نظر گرفتن سیاستهای مختلف از جمله موارد زیر میتوان یکی از آنها را برای راهاندازی Private Cloud خود انتخاب نمود:
- تواناییها و featureهای مختلف محصول
- تجاری بودن یا رایگان بودن محصول (بحث تهیه لایسنس)
- پشتیبانی و بروزرسانی
- داکیومنتها و راهنماهای مختلف
- سازگاری با دیگر محصولات
- پروسه نصب و راهاندازی
- نگهداری و مدیریت
- و… .
ما در این فصل قصد داریم یک ابر خصوصی یا Private Cloud راهاندازی کنیم. محصولی نرمافزاری در نظر گرفته شده نیز برای این مطلب نیز، نرمافزار OpenStack میباشد. اما سوال این است که به چه علت این نرمافزار را انتخاب میکنیم؟ چه ویژگیها و مزایایی برای ما دارد؟ چگونه باید آن را راه راهاندازی، پیکربندی و مدیریت نمود؟ چه پیش نیازهایی جهت نصب و راهاندازی نیاز دارد؟ و… همگی سوالاتی هستند که سعی خواهیم کرد تا در طول مطالب این فصل به آنها پاسخ جامع و کاملی دهیم. بنابراین در ادامه مباحث این فصل با ما همراه باشید.
زیرساخت رایانش ابری
یکپارچگی منابع سختافزاری و ایجاد بستری قدرتمند برای سرویسها بر روی ماشینهای مجازی یکی از دلایل اصلی استفاده از زیرساخت رایانش ابری میباشد. مهمترین تفاوت رایانش ابری با شیوه سنتی، صرفهجویی در مصرف، مدیریت و نگهداری منابع و سرویسها است.
در زیرساخت رایانش ابری تعدادی سرور خواهیم داشت که با جمع کردن (aggregate) آنها، به یک سرور ابری واحد قدرتمندتر خواهیم رسید که اجزاء سازنده آن را همه آن سرورها تشکیل میدهند و قدرت سختافزاری آن از جمع تمام رمها، پردازندهها و هارد دیسکها تشکیل میشود.
یکی از پیش زمینههای مهم جهت ایجاد رایانش ابری، نرم افزار OpenStack است که از سال 2010 توسط سازمان تحقیقات فضایی آمریکا آغاز شده و به موجب متن باز بودن، تا به امروز توسط بسیاری از شرکتهای فعال در زمینه توسعه نرمافزارهای متن باز مورد استقبال قرار گرفته و در حال حاضر یکی از مهمترین زمینههای مورد توجه در نرم افزارهای متن باز میباشد.
در این فصل به بررسی رایانش ابری و روشهای نصب و راهاندازی نرم افزار OpenStack خواهیم پرداخت.
OpenStack چیست؟
اپن استک یا OpenStack به دستهای از ابزارها اشاره دارد که برای ایجاد و مدیریت زیرساختهای رایانش ابری، شامل ابرهای خصوصی (Private) و عمومی (Public) بکار میرود. این پروژهی متن باز به کمک تعداد زیادی کمپانی بزرگ که سالهاست در زمینههایی مانند میزبانی، شبکه و… فعالیت دارند و هزاران توسعه دهنده دیگر، پیش میرود و توسعه داده میشود.
نرم افزار OpenStack این شرایط را برای کاربران خود مهیا میکند تا ماشینهای مجازی را (که به آنها نمونه یا Instance گفته میشود) به منظور مدیریت یا انجام وظایف مختلف در محیط ابری با مشخصات سختافزاری و شبکهای دلخواه در مدت زمان بسیار کمی بسازند. در این محیط، مقیاسپذیری افقی به معنای افزودن و کاهش ماشینهای مجازی با توجه به به بار کاری در حال اجرا، به راحتی امکانپذیر است.
بطور مثال تصور کنید یک سرویس تحت وب مثل WordPress روی ۵ ماشین مجازی در حال پاسخ به درخواست کاربران است، اگر در این شرایط تعداد درخواستهای وارد شده به این سرویس بیش از حد آستانهای که از پیش تعریف شده است شود یک ماشین مجازی به این مجموعه اضافه و تعداد ماشینهای در حال سرویسدهی را به ۶ عدد میرساند و بطور مشابه زمانی که بار کاری به حالت قبل بازگردد و در یک بازه زمانی مشخص از حد آستانه کمتر بماند ماشین ساخته شده پس از این مدت مشخص پاک و پیکربندی محیط بروزرسانی میشود.
نکته مهمی که باید مجدداً به آن اشاره شود این است که نرم افزار OpenStack پروژهای متن باز است. این به این معنی است که هر کس قادر است به کد منبع این پروژه دسترسی داشته باشد و تغییرات مورد نظر و یا مورد احتیاج خود را در آن اعمال کند و آنها را با جامعه OpenStack به اشتراک بگذارد. این بدین معناست که نرم افزار OpenStack از توانمندی هزاران توسعه دهنده در سراسر دنیا بهره میبرد که منجر به بزرگتر شدن و قدرتمندتر شدن آن میشود.
مقدمهای بر OpenStack
پروژه OpenStack از سال ۲۰۱۰ بوسیله سازمان تحقیقات فضایی NASA به عنوان پروژهی IaaS و شرکت خدمات دیتاسنتر Rackspace آغاز شد و تا به امروز (سال 2017) با گذشت 45 سال از توسعه این بستر رایانش ابری، به عنوان محبوبترین پروژه متن باز یا Open Source از لحاظ مشارکتکنندگان و میزان توسعه در این مدت کوتاه شناخته شده است.
OpenStack بستر نرمافزاری است که به سرورهای مجازی اجازه میدهد تا همانند یک ابر بصورت تکه تکه به یکدیگر متصل شوند، اما مهمترین چیزی که در مورد نرم افزار OpenStack حائز اهمیت است، این است که این نرمافزار Open source یا متن باز بوده و این اجازه را میدهد تا هر کسی برای انطباق نرمافزار با نیازهای خود بتواند آن را تغییر و توسعه دهد.
OpenStack به عنوان یک زیرساخت سرویس IaaS مورد استفاده قرار میگیرد تا حدی که این پلتفرم میتواند به سادگی اجزاء جدیدی از ابر را روی بستر سرورها پیادهسازی کرد.
این پروژه به واسطه متن باز بودن تاکنون توسط خیلی از شرکتهای فعال در زمینه توسعه نرمافزارهای متنباز مورد استقبال قرار گرفته و در توسعه آن مشارکت فعال و آن را در کنار محصولات خود به عنوان راهکار رایانش ابری به مشتریانشان عرضه میکنند.
شرکتهایی مثل Red Hat و Canonical از جمله شرکتهای Open Source هستند که حضوری فعال در زمینه توسعه نرم افزار OpenStack دارند بطوریکه در سال ۲۰۱۳ و ۲۰۱۴ شرکت Red Hat به عنوان بیشترین مشارکت در توسعه OpenStack و Canonical، سیستمعاملش یعنی Ubuntu به عنوان سیستمعامل مرجع و رفرنس برای توسعه و پیادهسازی پروژههای گسترده و Enterprise از سوی بنیاد OpenStack نامگذاری شده است.
OpenStack یک پلتفرم منبع باز پردازش ابری است که توسعهدهندگان آن را بصورت جهانی منتشر کرده و به سادگی قابل دریافت است. نرم افزار OpenStack در بزرگترین شرکتهای نرمافزاری و میزبانی وب بکار گرفته شده است. اجرای آسان و قابلیتهای بزرگ توابع این سیستم باعث شده تا در سیستمهای ابری از آن استفاده شود.
OpenStack توسط شرکت میزبانی Rackspace و برای اولین بار در پروژه NASA در سال ۲۰۱۰ مورد استفاده قرار گرفت و تا به امروز بیش از ۲۰۰ شرکت از آن استفاده میکنند.
در واقع سیستم OpenStack یک مجموعه از نرمافزارهای ابری است که توانایی اجرا بر روی سیستمهای عادی را دارد. این سیستم برای اجرا به سختافزار خاص یا پیشنیاز نرمافزاری خاصی نیاز ندارد و میتواند به خوبی با محصولات دیگر هماهنگ شود و از کارایی بسیار مناسبی هم برخوردار است. به عبارت دیگر میتوان گفت این محصول میتواند به عنوان زیرساخت یک سازمان استفاده شود.
همانطور که اشاره شد، این سیستم در ابتدا توسط سازمان NASA و RackSpace توسعه پیدا کرد و اولین انتشار آن در سال 2010 بوده است. این محصول از ابتدا برای استفاده عمومی بوده و به صورت متن باز عرضه شده است.
تاریخچه OpenStack
همانطور که پیشتر نیز اشاره شد، اپن استک یک پلتفرم رایگان و متن باز رایانش ابری است که:
در جولای سال 2010، شرکتهای Rackspace و NASA با همکاری یکدیگر این پروژه را شروع کردند و بعدا نام OpenStack را به آن دادند. پروژه OpenStack به منظور کمک کردن به سازمانها برای راهاندازی سرویسهای رایانش ابری بر روی سختافزار استاندارد در نظر گرفته شد.
اولین نسخه ارائه شده این کامیونیتی Austin نام داشت و بعد از 4 ماه تصمیم بر آن گرفته شد که بصورت دورههای ماهیانه بروزرسانیهایی برای این نرمافزار ارائه شود. کمی بعد نیز پروژهای با نام مستعار Nebula در سیستم Rackspace Cloud File platform راهاندازی شد.
در سال 2011، برنامهنویسان توزیع اوبونتو لینوکس، پروژه OpenStack را به صورت پیش نمایشی با نام Bexar در اوبونتو 11.04 ارائه کردند. در نهایت نیز در همان سال دبیان پروژه اپن استک با نام Cactus را بر روی سیستمعامل دبیان 7.0 (Wheezy) ارائه کرد. در اکتبر سال 2011، SUSE نیز یک نسخه پیش نمایش از اپن استک را با نام Diablo ارائه کرد.
در سال 2012، Red Hatیک توزیع از نرم افزار OpenStack با عنوان (Essex) را معرفی کرد و پس از آن نیز در سال 2013 نسخهای با پشتیبانی تجاری از اپن استک با عنوان Grizzly را در ماه جولای معرفی نمود.
در دسامبر سال 2013، شرکت Oracle اقدام به ورود به پروژه اپن استک کرد و برای قرارگیری آن بر روی Oracle Solaris اسپانسر شد. در ماه می سال 2014، شرکت HP یک سیستم با عنوان Helion را معرفی کرد که یک نسخه نمایشی از سیستم اپن استک برای HP بر پایه Icehouse بود.
از ماه مارس سال 2015، ناسا همچنان از اپن استک به عنوان رایانش ابری اختصاصی برای سیستمهای خود استفاده کرده و پشتیبان OpenStack public cloud نیز میباشد.
در جدول زیر لیست نسخههای مختلف OpenStack و تاریخ انتشار هر یک از آنها آورده شده است.
جدول 1 لیست نسخههای مختلف OpenStack
Series | Status | Initial Release Date | Next Phase | EOL Date |
Zed | Development | 2022-10-05 estimated (schedule) | Maintained estimated 2022-10-05 | |
Yoga | Maintained | 2022-03-30 | Extended Maintenance estimated 2023-09-30 | |
Xena | Maintained | 2021-10-06 | Extended Maintenance estimated 2023-04-06 | |
Wallaby | Maintained | 2021-04-14 | Extended Maintenance estimated 2022-11-02 | |
Victoria | Extended Maintenance (see note below) | 2020-10-14 | Unmaintained TBD | |
Ussuri | Extended Maintenance (see note below) | 2020-05-13 | Unmaintained TBD | |
Train | Extended Maintenance (see note below) | 2019-10-16 | Unmaintained TBD | |
Stein | Extended Maintenance (see note below) | 2019-04-10 | Unmaintained TBD | |
Rocky | Extended Maintenance (see note below) | 2018-08-30 | Unmaintained TBD | |
Queens | Extended Maintenance (see note below) | 2018-02-28 | Unmaintained TBD | |
Pike | Extended Maintenance (see note below) | 2017-08-30 | Unmaintained TBD | |
Ocata | End Of Life | 2017-02-22 | 2021-06-15 | |
Newton | End Of Life | 2016-10-06 | 2017-10-25 | |
Mitaka | End Of Life | 2016-04-07 | 2017-04-10 | |
Liberty | End Of Life | 2015-10-15 | 2016-11-17 | |
Kilo | End Of Life | 2015-04-30 | 2016-05-02 | |
Juno | End Of Life | 2014-10-16 | 2015-12-07 | |
Icehouse | End Of Life | 2014-04-17 | 2015-07-02 | |
Havana | End Of Life | 2013-10-17 | 2014-09-30 | |
Grizzly | End Of Life | 2013-04-04 | 2014-03-29 | |
Folsom | End Of Life | 2012-09-27 | 2013-11-19 | |
Essex | End Of Life | 2012-04-05 | 2013-05-06 | |
Diablo | End Of Life | 2011-09-22 | 2013-05-06 | |
Cactus | End Of Life | 2011-04-15 | ||
Bexar | End Of Life | 2011-02-03 | ||
Austin | End Of Life | 2010-10-21 |
همانطور که در جدول فوق مشاهده میکنید، آخرین نسخه منتشر (Release) شده از نرم افزار OpenStack در زمان تهیه این مقاله نسخه Queens میباشد.
اما پیش از پرداختن به ادامه مطلب اجازه دهید تا به برخی از مهمترین سوالاتی که همواره از سوی کارشناسان و مدیران IT در خصوص انتخاب محصول OpenStack به عنوان ابزاری جهت راهاندازی یک Private Cloud و ابزاری برای برپاسازی سرویس IaaS در مقایسه با vCloud مطرح میشود، پاسخ دهیم:
- سوال 1: برای راهاندازی سیستم Private Cloud در مجموعه و شرکت خود از OpenStack استفاده کنیم یا از VMware vCloud؟
- سوال 2: آیا این ابزارها رایگان هستند یا تجاری میباشند و برای استفاده از آنها نیازمند خرید لایسنس (License) هستیم؟
- سوال 3: نصب و راهاندازی و نگهداری کدام یک سادهتر است؟
- سوال 4: از چه Hypervisorهایی پشتیبانی میکنند؟
- سوال 5: از چه Storageهایی پشتیبانی میکنند؟
در پاسخ به این سوالات توجه شما را به جدول زیر که مقایسهای بین دو محصول OpenStack و vCloud میباشد، جلب میکنیم.
جدول 2 مقایسه بین دو محصول OpenStack و vCloud جهت راهاندازی Private Cloud
ویژگیها | vCloud | OpenStack |
Install & Management | نیازمند یک مدیر سیستم ساده با دانش: سیستم، شبکه، مجازیسازی و ذخیرهسازی | نیازمند دانش و مهارت بسیار بالا شامل در زمینههای: سیستم، شبکه، مجازیسازی، لینوکس، ذخیرهسازی، امنیت، پایگاه داده و… |
Hypervisor | تنها از ESXi پشتیبانی میکند. | از انواع Hypervisorها و تکنولوژیهای Container از جمله: KVM، VMware ESXi، Microsoft Hyper-V، Citrix XenServer، Docker و LXC پشتیبانی میکند. |
Storage | VMware VMFS over SAN and iSCSI | پشتیبانی از کامپوننت Cinder به عنوان Block Storage و همچنین Ceph به عنوان یک SDS و بسیاری از vendorهای دیگر سازنده storage |
Network | پشتیبانی از زیرساخت سوئیچینگ سنتی VMware و شبکههای مبتنی بر نرمافزار یا SDN | پشتیبانی از سوئیچینگ سنتی و همچنین شبکههای مبتنی نرمافزار یا SDN |
Image Management | پشتیبانی از VMware Catalogها و templateها و همچنین OVF | کامپوننت OpenStack Glance Service که تقریباً از تمامی فرمتهای image پشتیبانی میکند. |
Management System | استفاده از نرمافزار VMware vCenter Server | استفاده از کامپوننت Nova به عنوان Virtual Machine Management و Cluster Controller |
High Availability | استفاده از VMware vCenter Heartbeat یا vCenter HA | استفاده از کامپوننت Nova برای VMs HA و پروژه OpenStack HA برای کامپوننتهای زیرساخت |
APIها | اختصاصی VMware و اکثراً تحت Perl و PowerShell هستند. | استفاده از Open REST APIها و سازگار با Amazon EC2 & S3 |
هزینهها | شامل هزینههای License بعلاوه هزینه نگهداری | رایگان و بدون نیاز به License |
چه شرکتهایی برای راهاندازی Private Cloud خود از OpenStack استفاده میکنند؟
امروز شرکتهای بسیار معتبری همچون Cisco، IBM، Dell، HP، Sony و… همگی به منظور راهاندازی زیرساخت ابر خصوصی یا Private Cloud خود از نرم افزار OpenStack استفاده میکنند و همین امر به تنهایی مهر تأییدی بر قابلیتهای این محصول نرمافزاری است.
چگونه از OpenStack در محیط ابری استفاده میشود؟
هدف ابر یا Cloud ارائه سرویس رایانشی به کاربران راه دور است که در آن، نرمافزار حقیقی به جای کامپیوتر کاربر نهایی، بصورت سرویس روی سرورهای قابل اعتماد و مقیاسپذیر اجرا میشود. مفهوم رایانش ابری در صنعت، ارائه چیزی «به عنوان سرویس» است (بطور مثال نرمافزار، پلتفرم و یا زیرساخت).
همانطور که پیشتر نیز اشاره شد، OpenStack به عنوان سرویسی در دسته زیرساخت قرار میگیرد. فراهم آوردن زیرساخت به این معناست که اپن استک، فرایند ساختن و یا اضافه کردن نمونهها را برای کاربران تسهیل میکند که این میتواند به عنوان یک زیرساخت برای فراهم آوردن بستر پلتفرم برای توسعهدهندگان نرم افزار بکار رود.
نرم افزار OpenStack برای چه کسانی مناسب است؟
شما ممکن است همین الان هم کاربر OpenStack باشید و از آن اطلاعی نداشته باشید. هر روز، سازمانها و شرکتهای بیشتری در حال حرکت به سمت استفاده از OpenStack هستند. همچنین دنیای برنامههای کاربردی که روی بستر OpenStack اجرا میشوند رو به گسترش است.
اجزاء سیستم یا کامپوننتهای OpenStack
OpenStack بر پایه معماری ماژولار به همراه اجزا و کامپوننتهای مختلف راهاندازی شده است. تاکنون 56 کامپوننت مختلف برای OpenStack ایجاد شده که عبارتند از:
جالب است بدانید که در نسخه اولیه اپن استک که با نام Austin شناخته میشد، تنها دو کامپوننت Nova و Swift وجود داشتند و رفتهرفته سایر کامپوننتها در نسخههای بعدی به آن اضافه شدند.
جدول 3 OpenStack Project Timeline تا سال 2017
نام نسخه منتشر شده | تاریخ انتشار | لیست کامپوننتهای پشتیبانی شده |
Austin | 21 October 2010 | Nova, Swift |
Bexar | 3 February 2011 | Nova, Glance, Swift |
Cactus | 15 April 2011 | Nova, Glance, Swift |
Diablo | 22 September 2011 | Nova, Glance, Swift |
Essex | 5 April 2012 | Nova, Glance, Swift, Horizon, Keystone |
Folsom | 27 September 2012 | Nova, Glance, Swift, Horizon, Keystone, Quantum, Cinder |
Grizzly | 4 April 2013 | Nova, Glance, Swift, Horizon, Keystone, Quantum, Cinder |
Havana | 17 October 2013 | Nova, Glance, Swift, Horizon, Keystone, Neutron, Cinder, Heat, Ceilometer |
Icehouse | 17 April 2014 | Nova, Glance, Swift, Horizon, Keystone, Neutron, Cinder, Heat, Ceilometer, Trove |
Juno | 16 October 2014 | Nova, Glance, Swift, Horizon, Keystone, Neutron, Cinder, Heat, Ceilometer, Trove, Sahara |
Kilo | 30 April 2015 | Nova, Glance, Swift, Horizon, Keystone, Neutron, Cinder, Heat, Ceilometer, Trove, Sahara, Ironic |
Liberty | 16 October 2015 | Nova, Glance, Swift, Horizon, Keystone, Neutron, Cinder, Heat, Ceilometer, Trove, Sahara, Ironic, Zaqar, Manila, Designate, Barbican, Searchlight |
Mitaka | 7 April 2016 | Nova, Glance, Swift, Horizon, Keystone, Neutron, Cinder, Heat, Ceilometer, Trove, Sahara, Ironic, Zaqar, Manila, Designate, Barbican, Searchlight, Magnum |
Newton | 6 October 2016 | Nova, Glance, Swift, Horizon, Keystone, Neutron, Cinder, Heat, Ceilometer, Trove, Sahara, Ironic, Zaqar, Manila, Designate, Barbican, Searchlight, Magnum, aodh, cloudkitty, congress, freezer, mistral, monasca-api, monasca-log-api, murano, panko, senlin, solum, tacker, vitrage, Watcher |
Ocata | 22 February 2017 | Nova, Glance, Swift, Horizon, Keystone, Neutron, Cinder, Heat, Ceilometer, Trove, Sahara, Ironic, Zaqar, Manila, Designate, Barbican, Searchlight, Magnum, aodh, cloudkitty, congress, freezer, mistral, monasca-api, monasca-log-api, murano, panko, senlin, solum, tacker, vitrage, Watcher |
شما باید بسته به نیاز خود هر یک از کامپوننتهای مورد نظر را نصب و راهاندازی و در صورت لزوم با بقیه کامپوننتها integrate (یکپارچه سازی) نمایید.
جدول زیر لیستی از کامپوننتهای اصلی برای اپن استک نسخه Queens را نشان میدهد.
جدول 4 لیست کامپوننتهای OpenStack نسخه Queens
سرویس | نام پروژه | توصیف |
Identity Service | Keystone | User Management |
Compute Service | Nova | Virtual Machine Management |
Image Service | Glance | Manages Virtual image like kernel image or disk image |
Dashboard | Horizon | Provides GUI console via Web browser |
Object Storage | Swift | Provides Cloud Storage |
Block Storage | Cinder | Storage Management for Virtual Machine |
Network Service | Neutron | Virtual Networking Management |
Orchestration Service | Heat | Provides Orchestration function for Virtual Machine |
Metering Service | Ceilometer | Provides the function of Usage measurement for accounting |
Database Service | Trove | Database resource Management |
Data Processing Service | Sahara | Provides Data Processing function |
Bare Metal Provisioning | Ironic | Provides Bare Metal Provisioning function |
Messaging Service | Zaqar | Provides Messaging Service function |
Shared File System | Manila | Provides File Sharing Service |
DNS Service | Designate | Provides DNS Server Service |
Key Manager Service | Barbican | Provides Key Management Service |
بطور کلی کامپوننتهای اپن استک در سه دسته کلی: Compute، Networking و Storage تقسیمبندی میشوند.
در ادامه به توضیح مختصر هر یک از کامپوننتهای نرم افزار OpenStack خواهیم پرداخت:
کامپوننت Identity Service Keystone
OpenStack Identity Keystone این امکان را فراهم میکند که دایرکتوری مرکزی از کاربران به سرویسهای OpenStack دسترسی داشته باشند. این سیستم بدین صورت عمل میکند که میتواند به عنوان یک سیستم مشترک بین سیستمعاملهای ابری باشد یا با سیستمهای موجود شناسایی همانند LDAP سازگار شود.
کامپوننت Keystone وظیفه دایرکتوری مرکزی کاربران مانند Microsoft Active Directory و LDAP برای دسترسی به بخشهای مختلف اپن استک را به عهده دارد. Keystone از چندین متد احراز هویت در OpenStack پشتیبانی میکند.
متدهای احراز هویتی مانند نام کاربری/پسورد مبتنی بر توکن یا Password/Username Based-Token و AWS-Style مانند(Amazon Services Web) قابل پشتیبانی در Keystone میباشند. توسعهدهندگان میتوانند برای کاربران محدودیتهایی ایجاد کنند که هر کاربر چه منابعی را بتواند استفاده کند.
کامپوننت Compute Nova
کامپوننت Compute Nova کنترلر اصلی رایانش ابری است که بخش اصلی و هسته مرکزی و پردازشی سیستم IaaS بوده که کار هماهنگی با فناوریهای مجازیسازی و Hypervisorهایی مثل KVM بر روی لینوکس، ESXi بر روی VMware و Hyper-V بر روی سیستم مجازیسازی مایکروسافت و XenServer شرکت Citrix و همچنین Linux Container technology مانند LXC را برعهده دارد.
این بخش برای مدیریت و اتوماسیونسازی دریای منابع کامپیوتری طراحی شده است و میتواند با گسترهای از تکنولوژیهای مجازیسازی، همانند bare metal و HPC یا High-Performance Computing برای یکپارچهسازی سختافزار مورد استفاده در IaaS کار کند.
این سیستم بر پایه زبان Python نوشته شده است و تعداد زیادی کتابخانههای خارجی مانند: Eventlet (for concurrent programming)، Kombu (for AMQP communication) و SQLAlchemy (for database access) را استفاده میکند.
معماری رایانش بدین صورت طراحی شده است که مقاسپذیری افقی (افزودن چند Node یا Computer به سیستم) بدون وابستگی به سختافزار یا پیش نیاز نرمافزاری داشته باشد و این قدرت را دارد تا با سیستمهای قدیمی و تکنولوژیهای دیگر سازگاری داشته باشد.
کامپوننت Image Service Glance
OpenStack Image Service Glance راهکاری است که اکتشاف، ثبتنام و سرویس تحویل برای دیسک و سرور image را فراهم میکند.Image های ذخیره شده میتوانند به عنوان Template (قالب) استفاده شوند. همچنین میتوان به عنوان ذخیره کردن نسخههای پشتیبان از آن استفاده کرد.
در واقع بخش Glance در نرم افزار OpenStack کار مدیریت و نگهداری imageهای ماشینهای مجازی را بر عهده دارد. از ایجاد template برای ماشینهای مجازی گرفته تا backup و Snapshot برای آنها از جمله وظایف Glance در اپن استک میباشد. همچنین Glance از طیف وسیعی از imageهای مجازیسازی از qcow2 در لینوکس و KVM و VMDKدر VMware گرفته تا استاندارد OVF را پشتیبانی میکند.
کامپوننت Object Storage Swift
کامپوننت Object Storage Swift یک سیستم ذخیرهسازی مقیاسپذیر است. فایلها و اشیاء در هاردهای مختلف سرورها در مرکز داده نوشته میشوند. سیستم نرمافزاری اپن استک مسئول نگهداری و رونوشت از دادهها است. سیستم ذخیرهسازی Cluster قابلیت مقایسپذیری افقی دارد یعنی به سادگی میتوان به آن سرور جدید افزود.
هر زمان که سرور یا هارد درایو مختل میشود، OpenStack رونوشتی از اطلاعات را از Node های فعال به مکان دیگری در سیستم Cluster منتقل میکند. به دلیل اینکه سیستم نرم افزار OpenStack منطقی است همواره رونوشت مطمئنی از اطلاعات برروی دستگاههای مختلف قرار دارد و نیازی به داشتن تجهیزات و هارددیسکهای گران قیمت نیست.
در واقع وظیفه Swift به نوعی مشابه ذخیره سازی Cluster است که فضای یکپارچهای از هارد دیسکهای تمام سرورهای مورد استفاده در IaaS را ایجاد میکند. از دید کاربر تمامی هارد دیسکها بر روی همه سرورها بصورت یک هارددیسک واحد دیده میشود و ذخیرهسازی اطلاعات بر روی تمام هاردها صورت میگیرد و در صورت از دست رفتن یک هارد دیسک یا حتی یک سرور، اطلاعات از بین نمیرود و با جایگزین کردن منابع سختافزاری از دست رفته دوباره بازسازی میشود.
در سال 2009، Rackspace سیستم OpenStack Object Storage را جایگزین محصول Cloud File های خود کرد. SwiftStack یک شرکت ذخیرهسازی اشیاء است که در حال حاضر پیشرو Swift میباشد.
کامپوننت Dashboard Horizon
OpenStack Dashboard Horizon برای مدیران و کاربران یک اینترفیس گرافیکی برای دسترسی، تدارک و اتوماسیون منابع ابری را فراهم میکند. طراحی سیستم بهگونهای است که سرویسهای خارجی همانند: مدیریت مالی، مانیتورینگ و ابزارهای اضافی مدیریت را در خود جای میدهد.
داشبورد، قابلیت برندینگ برای ارائهدهندگان سرور و سرور مجازی دارد. داشبورد یکی از چندین راه برقراری ارتباط با منابع OpenStack میباشد. توسعهدهندگان میتوانند دسترسی اتوماتیک ایجاد کنند و ابزارهایی بسازند که منابع را توسطOpenStack AP I مدیریت کنند.
کامپوننت Networking Neutron
کامپوننت Networking Neutron, که قبلا Quantum نام داشت یک سیستم برای مدیریت شبکه و آدرس IPها میباشد. OpenStack Networking همواره مطمئن میشود که شبکه در تنگنا یا فاکتور محدودیتی بر روی توسعه ابر قرار ندارد.
این کامپوننت وظیفه فراهم کردن شبکههای مجازی و ارائه آن به عنوان یک سرویس بین دستگاههای مختلفی که توسط سایر سرویسهای OpenStack مدیریت میشوند برعهده دارد، این کامپوننتها این امکان را فراهم میکنند که کاربران بتوانند شبکههای مورد نظر خودشان را برای ارتباط بین دستگاههای مورد نیازشان فراهم کنند. برای مثال ماشینهای مجزایی که توسط Nova مدیریت میشوند، میتوانند توسط یک شبکه مجزا ایجاد شده توسط کاربر به یکدیگر مرتبط شوند.
این کامپوننت مدلهای مختلف شبکه را برای برنامههای مختلف فراهم میکند. مدل استاندارد آن، شامل شبکه همسطح یا VLAN میشود که ترافیک و سرورها را از هم جدا میسازد.
OpenStack Networking آدرسهای آی پی (IP) را مدیریت میکند، ایجاد آدرس IP اختصاصی یا آدرس IP شناور (DHCP Floating IP Address)، امکان این را دارد که ترافیک به صورت پویا مجدداً مسیریابی بین منابع زیرساخت شود، پس کاربر میتواند ترافیک را در زمان تعمیرات یا اختلال در سیستم مسیردهی کند.
کاربران میتوانند شبکه اختصاصی خودشان را بسازند، ترافیک را مدیریت کنند و سرور و دستگاهها را به یک یا چند شبکه متصل کنند. مدیران هم میتوانند همانند OpenFlow برای پشتیبانی از سطحهای بالا SDN داشته باشند.
OpenStack Networking یک framework دارد که میتوان بر روی آن سرویسهای مجزا شبکه همانند: IDS، Load Balancing، Firewall و VPN را مدیریت نمود.
کامپوننت Block Storage Cinder
کامپوننت Block Storage Cinder قابلیت Block-level storage مداوم برای استفاده در سیستم OpenStack compute را فراهم میکند. سیستم ذخیرهسازی بلوک مدیریت، ایجاد، اتصال و لغو اتصال بلوک به سرور را برعهده دارد. Block Storage بصورت کامل با OpenStack Compute سازگار است و داشبورد آن امکان مدیریت فضای ذخیرهسازی را به کاربر میدهد.
یکی از اجزای پیادهسازی رایانش ابری استفاده از سرور ذخیره سازی یا Server Storage جهت نگهداری اطلاعات است. در نرم افزار OpenStack از طیف وسیعی از سرورهای ذخیره سازی شناخته شده در سطح Enterprise پشتیبانی میشود. از HP گرفته تا IBM و NetApp همه و همه در اپن استک قابل پشتیبانی هستند. Cinder در پروژه اپن استک وظیفه مدیریت ساخت (Creation) و ورود و خروج (Detach – Attach) بلوکهای ذخیرهساز را برعهده دارد.
به غیر از سرور ذخیره سازی محلی لینوکس یا local Linux server Storage این سیستم از پلتفرمهای: IBM، Hitachi Data Systems، GlusterFS،EMC (ScaleIO, VMAX and VNX)، Coraid، CloudByte، Ceph، NetApp، Linux LIO، SolidFire، Scality، Nexenta و Storage (Storwize family, SAN Volume Controller, XIV Storage System, and GPFS) نیز میتواند استفاده کند.
Block Storage یک سیستم تأثیرگذار بر کارآمدی سیستمهای دیگر همانند Database Storage File Systems میباشد. مدیریت Snapshot این امکان را فراهم میکند تا نسخه پشتیبان از دادهها بر روی بستر Block Storage ذخیره شود.
کامپوننت Orchestration Heat
کامپوننت Heat یک سرویس به منظور هماهنگ سازی برنامههای مرکب ابری توسط Template (قالب) در بستر OpenStack Native API یا Cloud Formation Query API میباشد.
کامپوننت Telemetry Ceilometer
کامپوننت Telemetry Ceilometer سیستم شمارش منابع مصرفی برای یک کاربر مشخص به منظور استفاده در سیستم مدیریت مالی میباشد. این سیستم یک شمارنده قابل گسترش میباشد که شمارش منابع کل سیستم نرم افزار OpenStack به همراه تمامی اجزاء آن را برعهده میگیرد.
در واقع Ceilometer کار حساب (accounting) و billing در مصارف تجاری را مدیریت میکند. این بخش قابلیت ایجاد یک طرح تجاری را به کاربر میدهد تا ایده تجاری ابری را بر روی بستر OpenStack پیادهسازی کند و بتواند به صورت آنلاین خدمات خود را ارائه دهد.
کامپوننت Database Trove
Trove یک سیستم DataBase-as-a-Service یا DBaaS برای پیادهسازی relational و non-relational database engine میباشد.
کامپوننت DNSaaS Designate
کامپوننت Designate به عنوان DNS as a Service در زیرساخت اپن استک عمل میکند.
کامپوننت Dashboard Horizon
داشبورد OpenStack به نام Horizon مدیریت همه بخشهای دیگر که در قسمتهای پیشین معرفی شدند را از طریق رابط کاربری گرافیکی تحت وب انجام میدهد. Horizon مثل سایر بخشهای OpenStack با زبان برنامهنویسی پایتون نوشته شده است و با استفاده از فریم ورک جنگو Django بر روی بستر وب و قابل اجرا بر روی مرورگر وب پیادهسازی شده است.
توجه داشته باشید که هر یک از کامپوننتهای معرفی شده اپن استک از یک سری از پورتها برای انجام وظایف و سرویسدهی خود استفاده میکنند. در جدول زیر لیست شماره پورتهای رایج برای سرویسهای OpenStack آورده شده است.
جدول 5 لیست شماره پورتهای رایج سرویسهای (کاموپننتهای) نرم افزار OpenStack
OpenStack Service | Network Port Number |
Public API endpoint port for Keystone | 5000 |
Admin API endpoint port for Keystone | 35357 |
Cinder Block Storage service | 8776 |
Image service Glance | 9292 |
Glance Registry | 9191 |
Compute service Nova | 8774 |
Object Storage services Swift | 8080 and 6001-6003 |
Networking service Neutron | 9696 |
Telemetry service Ceilometer | 8777 |
Orchestration service Heat | 8004 |
واکاوی OpenStack
ساختار هسته اپن استک شامل اجزای زیر است:
OpenStack Compute: ماژول مدیریت و فراهم آوردن ماشینمجازی است. این ماژول با عنوان Nova شناخته میشود. این ماژول hypervisorهایی از جمله: LXC، QEMU، KVM و XenServer را پشتیبانی میکند. این ماژول کنترل تمامی بخشهای: شبکهبندی، پردازشگر، ذخیرهسازی، حافظه اصلی، ساخت، کنترل و حذف ماشینهای مجازی، امنیت و کنترل دسترسی را برعهده دارد. این مدیریت میتواند از طریق خط فرمان یا محیط گرافیکی وبی انجام شود.
OpenStack Glance: مدیریت سرویس image سیستم OpenStack را برعهده دارد. این زیر سیستم imageهای ماشینمجازی از جمله: QEMU/KVM، VirtualBox، VMware (VMDK, OVF)، Hyper-V و RAW را پشتیبانی میکند.
OpenStack Object Store: همان طور که از عنوان نام این سرویس مشخص است، وظیفه مدیریت ذخیرهسازی را برعهده دارد. به منظور امکان ذخیرهسازی در تمام فرمتهای مورد نیاز، این زیر سیستم به صورت توزیع شده میباشد.هم چنین به منظور جلوگیری از پاک شدن دادهها چندین لایه افزونگی و تکرار خودکار وجود دارد و بازگردانی دادهها به صورت خودکار انجام میشود.
معماری OpenStack
شکل زیر نمایی از معماری زیرساخت OpenStack را نشان میدهد.
شکل زیر، نمایی از معماری OpenStack در قالب کامپوننتهای اصلی و سرویسهای آنها را نمایش میدهد.
راهاندازی یک ماشین مجازی بر بستر Cloud شامل اجرای بسیاری از فرآیندها میشود. شکل زیر یک نمای کلی از سرویسهای OpenStack را ارائه میدهد.
انواع معماری OpenStack
نرم افزار OpenStack از نظر پیکربندی و سفارشیسازی قابلیتهای بالایی دارد. بطور کلی اپن استک با چهار معماری متفاوت به شرح زیر پیادهسازی میگردد:
- معماری یک Node با استفاده از مدل شبکه قدیمی
- معماری دو Node با استفاده از مدل شبکه قدیمی
- معماری سه Node به همراه زیرساخت شبکه Neutron
- معماری چهار Node به همراه زیرساخت شبکه Neutron
با توجه به اینکه معماری یک و دو Node قدیمی هستند و معماری سه و چهار Node دارای قابلیتهای به مراتب بیشتری میباشند. در ادامه معماری سه Node را که از معماریهای رایج امروزی است را مورد بررسی قرار میدهیم.
معماری سه Node دارای ویژگیها و قابلیت های زیر میباشد:
بر روی Controller Node سرویسهایی از قبیل احراز هویت و Image و بخشهای مدیریتی سرویسهای شبکه و محاسبات و سرویس داشبورد قرار میگیرد. علاوه بر این میتوان پایگاه داده اپن استک و NTP و سرویس واسط پیام یا Message Broker را نیز بر روی این node نصب و راهاندازی نمود. میتوان سرویسهایی مانند سرویس بلاک، سرویس اشیاء، سرویس پایگاه داده، سرویس اندازهگیری و همچنین سرویس زمان بندی و همانگی Orchestration را بصورت انتخابی بر روی این node نصب نمود.
بر روی نود شبکه یا Network Node سرویسهایی مانند پلاگینهای شبکه Networking plug-in ، سرویس لایه دوم و انواع عاملهای مدیریت لایه سوم شبکه مستقر میگردد. سرویس لایه دوم شامل ایجاد زیرساخت شبکه مجازی و تانل (Tunnel) میباشد. سرویس لایه سوم شامل مسیریابی و سرویس NAT و DHCP میباشد. این node همچنین وظیفه ایجاد اتصال شبکه داخل ماشینهای مجازی به بیرون از شبکه OpenStack را بر عهده دارد.
نودهای محاسباتی یا Compute Node وظیفه اجرای ماشینهای مجازی را برعهده دارند. نودهای محاسبات به طور پیشفرض از مدیر ماشین مجازی یا KVM استفاده مینمایند. میتوان از بیش از چند نود محاسبات استفاده نمود. همچنین بر روی نودهای محاسبات عاملهای اندازهگیری سرویس اندازهگیری اجرا میگردد.
در شکل زیر معماری سه node آمده است.
در ادامه نمایی از معماریهای دو node و چهار node در نرم افزار OpenStack نیز آورده شده است.