OpenStack چیست؟
OpenStack به مجموعهای از ابزارهای نرمافزاری گفته می شود که به منظور ساختن و مدیریت کردن زیرساختهای رایانش ابری شامل ابرهای خصوصی و عمومی بکار میرود. این پروژهی متن باز به کمک تعداد زیادی کمپانی بزرگ که سالهاست در زمینههایی مانند میزبانی، شبکه و… فعالیت دارند و هزاران توسعه دهنده پیش میرود و توسعه داده میشود.
مقدمهای بر OpenStack
OpenStack این امکان را برای کاربران خود فراهم میکند تا ماشینهای مجازی را (که در ادبیات ابر به آنها نمونه میگوییم) به منظور مدیریت یا انجام وظایف مختلف در محیط ابری با مشخصات سختافزاری و شبکهای دلخواه در مدت زمان بسیار کم بسازند. در این محیط مقیاس پذیری افقی به معنای افزودن و کاهش ماشینهای مجازی بنا به بارکاری در حال اجرا به راحتی امکان پذیر است. به طور مثال فرض کنید یک سرویس تحت وب مانند وردپرس روی ۵ ماشین مجازی در حال پاسخ به درخواست کاربران میباشد، اگر در این سناریو تعداد درخواستهای وارد شده به این سرویس بیشتر از حد آستانهای که قبلاً تعریف شده است شود یک ماشین مجازی به این مجموعه اضافه و تعداد ماشینهای در حال سرویس دهی را به ۶ عدد میرساند. و به طور مشابه هنگامیکه بار کاری به حالت قبل برگردد و در یک بازه زمانی مشخص از حد آستانه کمتر بماند ماشین ساخته شده بعد از این مدت مشخص پاک و پیکربندی محیط بروزرسانی میشود.
نکتهی مهمی که باید مجدداً به آن اشاره شود این است که OpenStack پروژهای متن باز است. بدین منظور که هرکسی میتواند به کد منبع آن دسترسی پیدا کند و تغییرات مورد نظر و یا مورد احتیاج خود را در آن اعمال کند و آنها را با جامعه OpenStack به اشتراک بگذارد. این بدین معناست که OpenStack از توانمندی هزاران توسعه دهنده در سراسر دنیا بهره میبرد که منجر به بزرگتر شدن و قدرتمندتر شدنش میشود.
چگونه از OpenStack در محیط ابری استفاده میشود؟
هدف ابر ارائه سرویس رایانشی به کاربران راه دور است، که در آن نرمافزار حقیقی بجای کامپیوتر کاربر نهایی به صورت سرویس روی سرورهای قابل اعتماد و مقیاس پذیر اجرا میشود. مفهوم رایانش ابری در صنعت، ارائه چیزی “به عنوان سرویس” است. (به طور مثال نرمافزار، پلتفرم و یا زیرساخت). OpenStack در دستهی زیرساخت به عنوان سرویس قرار میگیرد. فراهم آوردن زیرساخت بدین معناست که OpenStack ساختن و یا اضافه کردن نمونهها را برای کاربران تسهیل میکند. که این میتواند به عنوان زیرساختی جهت فراهم آوردن بستر پلتفرم برای توسعه دهندگان نرمافزار بکار رود.
اجزای تشکیل دهندهی OpenStack
OpenStack از اجزای پویای مختلفی تشکیل شده است. از آنجاییکه OpenStack ذاتاً متن باز است، هرکسی میتواند بنا به نیاز خود مؤلفهای را به آن اضافه کند. البته جامعه OpenStack ۹ پروژه را به عنوان پروژهی اصلی (یا هسته) در نظر گرفته است که به طور رسمی توسط این جامعه توسعه داده میشوند.
Nova: موتور اصلی رایانشی OpenStack است. این سرویس به منظور استقرار و مدیریت تعداد زیادی ماشین مجازی (نمونه در ادبیات رایانش ابری) بکار میرود و بدین ترتیب عملیات رایانشی را مدیریت میکند.
Swift: سیستم ذخیره سازی اشیا و فایلهاست. بجای ایده سنتی ارجاع فایلها توسط مکان فیزیکی آنها روی هارد دیسک، توسعه دهندگان میتوانند به یک شناسه منحصربفرد فایل یا تکیهای از اطلاعات ارجاع کنند و اجازه دهند OpenStack تصمیم بگیرد که این داده در کجا ذخیره شود. این ویژگی سبب میشود تا فرآیند مقیاس پذیری سادهتر شود، بدین صورت که توسعه دهندگان دیگر نیاز نیست نگران ظرفیت یک سیستم واحد پشت نرمافزارشان باشند. و این اجازه را میدهد که سیستم، به جای توسعه دهنده، نگران این باشد که آیا از داده به بهترین شکل پشتیبان تهیه شده است که در صورت خرابی یک ماشین یا اتصال شبکه از بین نرود.
Cinder: مؤلفه ذخیرهسازی بلوک داده است. این سرویس بسیار شبیه سرویسهای سنتی است که در آن جهت دسترسی به فایل بایستی به مکان مشخص آن روی هارد دیسک اشاره شود. این روش سنتی دسترسی ممکن است در سناریوهای خاصی که در آن سرعت دسترسی به داده از اهمیت بالایی برخوردار است مفید باشد.
Neutron: قابلیت شبکه بندی را برای OpenStack فراهم میکند. این سرویس این اطمینان را میدهد که تمام مؤلفههای OpenStack میتوانند به صورت کارآمد و سریع با یکدیگر ارتباط برقرار کنند.
Horizon: داشبورد OpenStack است. این سرویس واسط گرافیکی OpenStack را فراهم میکند و اولین چیزی است که کاربر OpenStack از این مجموعه میبیند. توسعهدهندگان میتوانند به طور انفرادی به تمام مؤلفههای OpenStack از طریق واسطهای برنامه نویسی دسترسی داشته باشند. ولی داشبورد این امکان را به مدیر سیستم میدهد تا با یک نگاه متوجه شود که در ابر چه میگذرد.
Keystone: سرویس احراز هویت برای OpenStack را فراهم میکند. به طور ابتدایی میتوان گفت شامل لیستی از تمام کاربران OpenStack است که روی تمام سرویسهای ارائه شده توسط OpenStack نگاشت شده است و اجازهی دسترسی را صادر میکند. این سرویس از ابزارهای دسترسی گوناگونی پشتیبانی میکند، و بدین ترتیب توسعه دهندگان میتوانند روشهای موجود دسترسی کاربران خود را با آن همگن کنند.
Glance: سرویس تصاویر برای OpenStack را فراهم میکند. در این ادبیات منظور از تصویر کپی مجازی هارد دیسک است که شامل سیستم عامل پایه با تنظیمات خاصی است که نمونهی جدید از روی آن ساخته میشود. وظیفهی این سرویس فراهم کردن این تصاویر در فرآیند ایجاد نمونههای جدید است.
Ceilometer: سرویس اندازهگیری در محیط OpenStack است. به کمک خروجیهای تولید شده توسط این سرویس، این امکان برای ارائه کنندگان فراهم میشود تا میزان مصرف کاربران از منابع ابر را بدست آورند. این میزان به تفکیک هر مؤلفه خواهد بود. در نهایت به کمک یک سرویس ثانویه امکان صدور صورتحساب برای کاربران و مشتریان فراهم میگردد.
Heat: سرویس خودکارسازی در محیط OpenStack است. به کمک این سرویس توسعه دهندگان میتوانند نیازمندیهای منبع برنامهی کاربردی خود را در یک فایل تعریف کنند و مدیریت تخصیص این منابع به صورت خودکار صورت پذیرد.
معماری ارتباطی این سرویسها را در شکل زیر مشاهده میکنید:
OpenStack برای چه کسانی است؟
شما ممکن است همین الآن کاربر OpenStack باشید و از آن اطلاعی نداشته باشید. هر روز سازمانها وشرکتهای بیشتری در حال حرکت به سمت OpenStack هستند. همچنین دنیای برنامههای کاربردی که روی بستر OpenStack اجرا میشوند رو به گسترش است.