معرفی OpenStack

OpenStack چیست؟

OpenStack مجموعه از بسته های نرم افزاری است که با هم برای کنترل مجموعه ای از رایانش، ذخیره سازی و منابع شبکه کار می کنند. این منابع (که مرکز داده شما را تشکیل می دهند) از طریق یک داشبورد بر اساس وب مدیریت می شوند که به دو دسته از کاربران خدمات دهی می کند: مدیرانی که منابع را در این مجموعه کنترل می کنند و کاربرانی که منابع را برای ایجاد یک ماشین مجازی جدید تهیه می کنند. در یک جمله می توان گفت: “OpenStack یک زیرساخت برای مدیریت ابر فراهم می کند.”. یک اشتباه مفهومی متداول این است که OpenStack، Hypervisor ارائه می دهد، اما دقیقا این طور نیست. Openstack در بالای Hypervisor های مختلف (Xen, VMware, KVM, Hyper-V) قرار می گیرد بنابراین شما می توانید آنها و دیگر منابع مرکز داده را از یک نقطه کنترل نمایید.

OpenStack-Architecture

اجزاء OpenStack

OpenStack از یازده جزء تشکیل شده است که همه پروژه های مجزایی هستند. ما به تشریح آنها نخواهیم پرداخت اما برای اینکه خوانندگان تصویر ذهنی مناسبی به دست بیاورند چهار جزء شرح داده خواهند شد. این اجزاء، سیستم های عامل و یا چیزی که شما بر روی یک سرور خام نصب کنید، نیستند. ما در حال نصب نرم افزار بر روی یک سیستم عامل لینوکس هستیم که می تواند بر یک ماشین مجازی و یا یک سرور نصب گردد.

رایانش (Nova)

رایانش (OpenStack codename:Nova) مولفه ای برای تهیه و مدیریت تعداد متعددی ماشین های مجازی است. این جزء موتور اولیه رایانش در ابر است.

Cinder)Block Storage)

این مولفه، بلوک ذخیره سازی پایدار برای استفاده توسط ماشین های مجازی ایجاد شده توسط Nova را به وجود می آورد. Cinder ایجاد، پیوستن و جداکردن Block device ها را به سرور مدیریت می کند.

شبکه (Neuton)

اطمینان حاصل می نماید که هر یک از جزء های یک پیاده سازی OpenStack به صورت بهینه و با سرعت مناسب با یکدیگر ارتباط برقرار می کنند. وظایف معمول Neutron مدیریت VLAN، IP addressing و مدیریت firewall است.

 Horizon) Dashboard)

یک پورتال بر اساس وب برای ارتباط با تمام سرویس های زیربنایی OpenStack که در بالا شرح داده شد.(Nova, Cinder, Neutron)

شروع کار با OpenStack

برای نشان دادن این اطلاعات در عمل به عنوان مثالی از یک معماری ابر که از سه ماشین مجازی جداگانه لینوکسی/ سرور فیزیکی تشکیل شده است، آغاز می کنیم. قدم اول ساختار بندی شبکه است که کانال های متنوعی برای ارتباط (شبکه های مجزا) در آن وجود دارد:

  • مدیریت محیط OpenStack. این جاییست که بخش های (Component) مختلف OpenStack با یکدیگر ارتباط برقرارمی کنند.
  • نمونه هایی از VM که درOpenStack اجرا شده اند.
  • ایجاد مجوز برای این نمونه ها و سرویس جدید به وجود آمده به گونه ای که از بیرون OpenStack در دسترس باشند.

اکنون شما می توانید بسته های درست را بر روی ماشین لینوکس خود نصب کنید. این بسته ها همان اجزاء (Component) مانند Nova و Neutron هستند. مرحله بعدی این است که به اجزاء بگوییم که چه منابعی ( Hypervisors, Networks, Storage device و غیره) را می توانند استفاده کنند. در مرحله پایانی شما این منابع را در داشبرد برای اجرایی شدن ماشین مجازی جدید فراهم می کنید.

maxresdefault

اگر شما زمان و سایر منابع را برای یک نصب کامل نداشته باشید، می توانید OpenStack را در وبسایت trystack.org امتحان کنید. این وبسایت به شما اجازه امتحان کردن اپلیکیشن خودتان را در یک محیط sandbox ارائه می دهد تا درک کنید که OpenStack چگونه کار می کند و آیا این یک راه حل مناسب برای شماست یا خیر؟

چرا از OpenStack استفاده کنیم؟

واضح است که سناریوهای متنوعی وجود دارد که یکی از آن ها با OpenStack مزایای قابل توجهی را به دست می دهد. سه تا از آنها عبارتند از:

  • وب سایت های مقیاس پذیر: در شرایط نیاز به ظرفیت بیشتر موارد بیشتری قابل اجرا هستند و وقتی نیاز کاهش پیدا کنند منابع اضافی حذف می شوند.
  • محیط آزمایشی: نیاز به ایجاد مجدد محیط Live با چند سرور و حذف آن پس از انجام کار دارید.
  • ابر رایانش: یک مساله پیچیده ریاضی دارید بنابراین نیاز دارید که رایانه های متعدد را به کار بگیرید تا در بخش های مختلف مساله به طور همزمان کار کنند.

یک مورد خیلی جالب درباره OpenStack این است که این نرم افزار متن باز است. این امر به این معناست که هرکس که بخواهد می تواند به کد دسترسی داشته باشد و تغییرات و یا اصلاحاتی در آن ایجاد کند و آن را با دیگران به اشتراک بگذارد. همچنین چند شرکت بزرگ IT مانند HP، Dell، Cisco، IBM و Rackspace در پروژه OpenStack شرکت داشته اند. این موجب مزیت های بزرگی در سازگاری میان تولیدکنندگان متعدد شده است. وقتی که این پروژه آغاز شد، یکی از روش های جلوگیری از خصوصی سازی این پروژه اجرای آن به صورت متن باز است.

انجمن OpenStack بسیار گسترده است که به این معناست که ویژگی ها و درایورها به سرعت رشد کرده و باگ ها در یک زمان نسبتا کوتاه برطرف می شوند. نگاه از زاویه دید فروشندگان نیز جالب است: بخش بزرگی از هزینه های توسعه توسط انجمن انجام می گیرد. ویژگی های جدید و یکپارچه نقاط به طور دائم توسط داوطلبانی از سراسر جهان انجام می شود.

ما به OpenStack به عنوان یک ابزار عالی برای شروع نگاه می کنیم. شرکت های کوچک و سازمان های تحقیقاتی می توانند ظرفیت رایانشی خود را در این راستا به کار گرفته و به آسانی ایده های جدید را آزمایش کنند. این یک گزینه برای سازمان هایی است که نمی خواهند و یا نمی توانند هزینه های هنگفتی را در زیرساخت انجام دهند زیرا به آنها اجازه استفاده از سخت افزار موجود را حتی از فروشندگان مختلف می دهد.

در گذشته دیده شده است که برخی سازمان های بزرگ به سمت OpenStack حرکت کرده اند اما تصور می شود که هنوز قبل از این که شرکت ها و سازمان های بزرگ به طور کامل این تکنولوژی را بپذیرند، مواردی وجود دارد. یکی از آنها دلیل نوشتن این مطلب است: پس از 5 سال هنوز در خصوص اینکه OpenStack واقعا چیست سردرگمی هایی وجود دارد و دیده شده است که OpenStack یک بسته کامل “ابر در یک جعبه” نیست اما برای حل مجموعه بسیار خاصی از مشکلات طراحی شده است. اکنون که بزرگترین فروشندگان به شدت در OpenStack سرمایه گذاری کرده اند، امیدوار هستیم که پاسخ های سرراست تری به این سوال که OpenStack چه کاری می تواند انجام دهد و چه کاری نمی تواند انجام دهد، داده شود.

وقتی شرکت های بزرگ تصمیم به ساخت یک ابر خصوصی می کیرند، به یک پروژه طولانی و پیچیده که اغلب میلیون دلاری است متعهد می شوند. معنی این جمله این است که برخی عملکرد های سطح سازمان وجود دارند و یک پشتیبانی فنی همیشه در دسترس است. فروشندگان بزرگ می توانند این موارد را در نسخه OpenStack تجاری ویژه خودشان به وجود آورند اما چرا چنین درد سری را متحمل شوند؟ به عبارت دیگر چرا باید فروشندگان بزرگ در یک پروژه متن باز شرکت کنند در حالیکه درحال فروش محصولات مدیریت ابر اختصاصی خودشان هستند؟ سرمایه گذاری در R&D بسیار حجیم و هزینه بر است، بطوریکه شرکت باید یک مدل کسب و کار شفاف در ذهن داشته باشد. ضرب المثلی هست که میگوید “آب که مد کند همه قایق ها بالا می آیند” و همه از قابلیت عملکرد متقابل سود می برند اما این قابلیت ها اگرچه گرانبهاست اما مقداری مبهم است و حداقل در آینده نزدیک در دسترس نیست. به نظر می رسد این خود موضوعی برای تبیین باشد که در آینده بر روی آن بحث خواهد شد.

سرویس‎های OpenStack

اپن استک از طریق یک معماری ماژولارمجموعه ای از سرویس ها را ارائه می کند. هدف این سرویس ها تسهیل کشسانی و مقیاس پذیری در محیط های ابری است. شکل زیر سرویس‏های اصلی اپن استک را نشان می‏دهد.

سرویس‎های اصلی اپن استک عبارتند از: compute (nova)، object storage (swift)، block storage (cinder)، networking (neutron)،(horizon) dashboard،  Identity service (keystone)،  Image service (glance).

DASHBOARD

وابستگی های بین ماژول های مختلف OpenStack

در معماری اپن استک، سه ماژول یا سرویس هستند که با تمامی سایر سرویس ها در ارتباط هستند:

1. سرویس داشبورد یا  Horizon یک واسط گرافیکی برای مدیریت اپن استک است و برای مدیریت سرویس ها استفاده می شود.
2.سرویس Keystone، احراز هویت سرویس ها و کاربران را بر عهده دارد.
3. سرویس نترون، سرویس شبکه است و ارتباطات بین ماژول های مختلف اپن استک را ممکن می‏سازد. 

سرویس نوا را می توان بخش اصلی اپن استک نامید. این سرویس برای ایجاد ماشین های مجازی به ایمیج ماشین مجازی نیاز دارد که سرویس  glance این ایمیج ها را فراهم می کند. همچنین ماشین های مجازی می توانند نیاز به منابع ذخیره سازی داشته باشند که سرویس های  swift  و  Cinder این منابع ذخیره سازی را فراهم می کنند.