OpenStack، یک پلت‌فرم منبع باز است که سرورهای مجازی قدرتمند و سرویس‌های مورد نیاز برای محاسبات ابری را ارائه می‌دهد. این پلت‌فرم بیشتر به عنوان یک زیرساخت برای ارائه سرویس (IaaS) مستقر می‌شود که هدف آن فراهم کردن مؤلفه‌ها و ابزارهای سخت افزاری به منظور پردازش، ذخیره سازی و شبکه سازی در سراسر مرکز داده است.

 

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

به طور پیش فرض، OpenStack سرویس‌های مرتبط با ابر از جمله شبکه، فضای ذخیره سازی، شناسایی و غیره را ارائه می‌دهد و می‌تواند با سرویس‌های دیگر ترکیب شود تا بهینه سازی ابری سفارشی را برای پشتیبانی از برنامه‌های ابری فراهم نماید.

در اینجا ، به طور کامل نیازها و ملزومات اساسی OpenStack و همچنین روش کار با آن شرح داده شده است.

 

چرا OpenStack

چه دلیلی باعث می‌شود ما OpenStack را انتخاب کنیم؟ OpenStack چگونه با نیازهای ما متناسب است؟

در اینجا چند دلیل وجود دارد که به این سوالات پاسخ می‌دهد!

از جمله از ویژگی‌های مهم OpenStack، محیط منبع باز آن است که به شما امکان کنترل کامل محاسبات ابری را می‌دهد. بیشتر سیستم عامل‌های موجود در بازار که به مجازی سازی و محاسبات ابری کمک می‌کند، همه گران قیمت و دارای مجوز هستند.

OpenStack را می‌توان بصورت رایگان نصب کرد و متناسب با سرویس‌های مورد نیاز سفارشی نمود. از این رو بسیاری از شرکت‌ها نسخه اختصاصی OpenStack خود را دارند.

علاوه‌براین می‌توان آن را تا حد امکان مقیاس‌پذیر کرد و بدین صورت کار مدیران سرور را آسان‌تر نمود.

OpenStack API با پیشرفت‌هایی که بسیاری از توسعه دهندگان در سراسر جهان ایجاد کرده‌اند، مقاوم و انعطاف‌پذیرتر شده است که پشتیبانی جهانی خوبی را تضمین می‌نماید.

بسیاری از شرکت‌های بزرگ در دنیای IT مانند Red Hat، هواوی و اینتل، OpenStack را در زمینه مدیریت ابری خود برگزیده‌اند.

 

OpenStack برای چه کسانی است؟

جالب است بدانید، بسیاری از ما ناخودآگاه از کاربران OpenStack هستیم. بسیاری از پلت‌فرم‌های ابری به طور پیش فرض OpenStack را در مجموعه ابزارهای ابری خود ادغام کرده‌اند. در واقع با پیوستن هر روزه تعداد زیادی شرکت به OpenStack، این تکنولوژی همواره در حال رشد است!

 

اصطلاحات در OpenStack

اصطلاحات مهمی که به طور مکرر در این ماژول استفاده می‌شود، در ادامه شرح داده شده است. این اصطلاحات از اجزای مهم معماری OpenStack هستند.

به طور پیش فرض، OpenStack دارای عناصر مختلف است. علاوه‌براین، به دلیل ماهیت منبع باز OpenStack، بسیاری از توسعه دهندگان می‌توانند به افزودن اجزای جدید برای برنامه شخصی کمک کنند. اما جامعه OpenStack حدود 9 مؤلفه را به عنوان بخش‌های جدایی ناپذیر از OpenStack اعلام کرده است. آن‌ها به شرح زیر هستند:

  • Nova: این، یک موتور محاسباتی اساسی OpenStack است و تعداد زیادی ماشین‌های مجازی و موارد دیگر را مدیریت می‌نماید که کارهای محاسباتی را انجام می‌دهند.
  •  
  • Swift: این، یک سیستم ذخیره سازی OpenStack است که برای ذخیره objectها و فایل‌ها استفاده می‌شود. به جای مراجعه به فایل و objectها از طریق مسیر، توسعه دهندگان می‌توانند در عوض از طریق یک شناسه منحصر به فرد (که به یک فایل یا بخشی از اطلاعات اشاره می‌کند) مراجعه نمایند و بدین ترتیب OpenStack می‌تواند محل ذخیره سازی فایل‌ها را مدیریت کند. این باعث کاهش تلاش توسعه دهندگان برای درک و نگرانی در مورد توزیع فضای ذخیره سازی می‌شود. همچنین در صورت خرابی دستگاه یا از بین رفتن شبکه، از پشتیبان گیری از داده اطمینان حاصل می‌نماید.
  •  
  • Cinder: این، به عنوان مؤلفه ذخیره سازی بلوک OpenStack شناخته می‌شود. عملکرد Cinder به نوعی مشابه روش‌های کلاسیک مکان یابی و دسترسی به مکان‌های خاص روی دیسک یا یک درایو انجام می‌شود.
  •  
  • Neutron: همانطور که از نامش پیداست، مؤلفه‌ای است که امکان ایجاد شبکه در OpenStack را فراهم می‌کند. Neutron تضمین می‌کند که هر یک از مؤلفه‌های OpenStack به خوبی با سایر مؤلفه‌ها در ارتباط است تا ارتباط خوبی بین آن‌ها برقرار شود.
  •  
  • Horizon: داشبورد سیستم OpenStack است و همه امکاناتی را برای مدیران سیستم به منظور دسترسی و مدیریت ابر فراهم می‌کند. Horizon اولین مؤلفه‌ای است که همه با شروع استفاده از OpenStack مشاهده می‌نمایند. اگرچه توسعه دهندگان می‌توانند از طریق رابط برنامه نویسی اپلیکیشن (API) نیز به تمام اجزا دسترسی پیدا کرده و با آن‌ها سر و کار داشته باشند؛ با این حال Horizon تنها عنصری است که از طریق آن، مدیران سیستم با معماری OpenStack تعامل برقرار می‌کنند.
  •  
  • Keystone: مؤلفه‌ای است که سرویس‌های شناسایی را برای همه کاربران فراهم می‌نماید. keystone اساساً شامل یک لیست مرکزی از تمام کاربران ابر OpenStack است که به سرویس‌های قابل دسترسی OpenStack نگاشت شده است. با اجازه دادن به توسعه دهندگان برای نگاشت روش‌های دسترسی کاربران موجود خود به Keystone، راهی برای دسترسی‌های متعدد فراهم می‌کند.
  •  
  • Glance: این، سرویس‌های image را در OpenStack ارائه می‌دهد که در آن imageها به نسخه‌های مجازی دیسک‌های سخت اشاره می‌نمایند. Glance در تخصیص این imageها کمک می‌کند تا هنگام اختصاص ماشین مجازی جدید، به عنوان الگو استفاده شوند.
  •  
  • Ceilometer: سرویس‌های telemetry را به کاربران خود ارائه می‌دهد. Ceilometer یک تنظیم دقیق در مورد استفاده از اجزای ابر هر کاربر را انجام داده و یک صورتحساب برای سرویس‌های مورد استفاده ارائه می‌دهد. از Ceilometer به عنوان مؤلفه‌ای برای سنجش میزان مصرف استفاده نمایید و همین را به تک تک کاربران گزارش دهید.
  •  
  • Heat: مؤلفه‌ای از OpenStack است که به توسعه دهندگان اجازه می‌دهد، نیازهای یک برنامه ابری را در یک فایل ذخیره کند تا تمام منابع لازم برای یک برنامه در دسترس باشد. بنابراین Heat زیرساختی را برای مدیریت یک برنامه ابری فراهم می‌نماید.

 

شروع کار با OpenStack

روش‌های زیادی وجود دارد که در آن شما می‌توانید یک تجربه آزمایشی از OpenStack کسب کنید. دو روش اصلی که از طریق آن‌ها می‌توانید به راحتی محیط OpenStack را تجربه نمایید، در ادامه آورده شده است:

 

  • ثبت نام برای یک ابر عمومی

با شرکت در برنامه‌های ابری عمومی از OpenStack، زیرساخت ابر عمومی OpenStack موجود در سراسر جهان را امتحان کنید. برای مشاهده اجمالی برنامه OpenStack Public Cloud Passport از لینک https://www.openstack.org/passport استفاده نمایید.

 

  • استفاده از Local Dev Instance

با استفاده از DevStack در Local Dev می‌توان محیط Openstack را تجربه کرد. Devstack ابزاری را برای نصب Openstack هسته فراهم می‌کند. علاوه بر سیستم عامل معمولی، Devstack بر روی ماشین مجازی نیز قابل نصب و اجرا است. این برای کاربرانی مناسب است که مایلند ویژگی‌های داشبورد شکل ظاهری Openstack را کشف نمایند. اطلاعات بیشتر در مورد DevStack را می‌توانید، در اینجا کسب کنید.

شما می‌توانید Devstack را از طریق منبع Git در اینجا نصب کنید.

 

چگونگی پیشرفت با OpenStack

از آنجا که OpenStack منبع رایگان موجود در اینترنت است، برای همه توسعه دهندگان آزاد است، یافتن یک لینک معتبر برای جستجوی به روزرسانی‌ها خسته کننده می‌شود. با توجه به این، Opensource.com بی وقفه در تلاش است تا آخرین به روزرسانی‌ها را برروی OpenStack ارائه دهد که راهنمایی‌های لازم را برای به‌روزسازی OpenStack فراهم می‌کند.

علاوه بر این، منابع بسیاری دیگر نیز در دسترس هستند که به روزرسانی‌های جدید OpenStack را ارسال می‌نمایند. Mindmajix یکی از بهترین منابع برای آن است.

 

معماری OpenStack

اجزای اصلی سازنده معماری OpenStack عبارتند از:

محاسبه (Nova)

  • محاسبه یکی از مهم‌ترین و اجباری‌ترین اجزای OpenStack است و در واقع یک hypervisor مجازی سازی است. Nova، در یک محیط محاسبات ابری، به عنوان یک کنترل کننده عمل می‌کند که تمام منابع موجود در یک محیط مجازی را مدیریت می‌نماید.
  •  
  • این بخش با استفاده از پایتون کدگذاری شده است و از بسیاری از کتابخانه‌های از پیش تعریف شده به منظور ارائه عملکرد قوی استفاده کرده است. فن آوری‌های hypervisor که ممکن است مورد استفاده قرار گیرد Xen ،KVM و VMware است و این انتخاب به نسخه OpenStack استفاده شده بستگی دارد. SQL برای دسترسی به پایگاه داده استفاده می‌شود.

 

تصویر فوق، عملکرد Nova را نشان می‌دهد. توضیحات تصویر در زیر آورده شده است.

عملکرد

  • nova-api، درخواست‌ها از کاربر نهایی و پاسخ‌ها را به آن کاربر انجام می‌دهد.
  • nova-compute، درخواست‌های مورد نیاز برای ساخته شدن را ایجاد کرده و از بین می‌برد.
  • Nova-scheduler، فعالیت‌ها را برای nova-compute زمان بندی می‌کند.
  • glace registry، جزئیات image را به همراه فراداده آن ذخیره می‌نماید.
  • Image store، آن imageهای از پیش تعریف شده توسط مدیر یا کاربر را ذخیره می‌کند.
  • nova-network، اتصال و مسیریابی شبکه را تضمین می‌نماید.

 

شبکه سازی (Neuron)

این بخش، وظیفه ایجاد یک ساختار Neuron بین اجزای سازنده برای اتصال بهتر را بر عهده دارد. Neuron، کلیه ویژگی‌های معماری مربوط به شبکه را به عنوان یک واحد کل مدیریت می‌کند. از اختصاص و مدیریت آدرس‌های IP گره‌ها گرفته تا مدیریت و پیاده سازی مسیریابی، همه آن‌ها را تشکیل می‌دهد.

 

Image

نمونه‌های ماشین‌های مجازی یا دیسک به عنوان imageها در محل ذخیره سازی image ذخیره می‌شوند.

 

ذخیره سازی شیء (Swift)

این بخش، واحد ذخیره سازی قابل mount از معماری است و به تکرار داده‌ها در مرکز داده کمک می‌نماید. فایل‌ها و اشیاء را می‌توان با کمک این واحد در چندین واحد کپی کرد. واحدهای ذخیره سازی اشیاء با اضافه شدن هر سرور جدید تکرار می‌شوند. Swift همچنین محتوای تکرار شده از همه گره‌های فعال را ذخیره کرده و آن را در دسترس کلاسترهای جدید قرار می‌دهد. علاوه‌براین برای زمان‌های خرابی سخت افزار یا از بین رفتن سرور، یک نسخه پشتیبان تهیه می‌کند.

 

ذخیره سازی بلوک (Cinder)

Block Storage، امکانات ذخیره سازی سطح پایدار را برای دستگاه‌های محاسبات ابری فراهم می‌کند. این امر به ایجاد، اضافه کردن و حذف دستگاه‌های بلوک جدید در سرور کمک می‌نماید. همچنین یکپارچه سازی کامل با OpenStack را با کاهش استفاده از اجزای سخت افزاری اضافی فراهم می‌کند. Block Storage، با استفاده از CLI یا سرویس‌های مبتنی بر وب قابل دسترسی است. سیستم‌های مبتنی بر لینوکس می‌توانند با Cloudbyte ،EMC ،Coraid ،SAN Storage و غیره کار کنند.

 

معماری منطقی

درک معماری منطقی (علاوه‌بر معماری اصلی) برای طراحی، استقرار و پیکربندی OpenStack ضروری است.

OpenStack از تعدادی سرویس‌های مجزا ساخته شده است. هر یک از این سرویس‌ها به گونه‌ای پیکربندی شده‌اند که دارای یک سرویس API باشند. هر سرویس API همیشه به دنبال درخواست‌های API است. این درخواست‌ها هنگام دریافت پیش پردازش می‌شوند و به قسمت‌های دیگر سرویس منتقل می‌گردند.

نمودار زیر، نمایشی تصویری از معماری منطقی در OpenStack را نشان داده است.

 

  • تمام سرویس‌ها از طریق یک سرویس شناسایی (Keystone) احراز هویت می‌شوند. سرویس‌های فردی به طور کلی از طریق API‌های عمومی با یکدیگر ارتباط برقرار می‌کنند، به جز موارد کمی که به امتیازات ادمین نیاز دارند.
  •  
  • برای ارتباط بین فرآیند درون یک سرویس، از پیام AMQP استفاده می‌شود و وضعیت سرویس در پایگاه داده ذخیره و به روز می‌گردد.
  •  
  • هنگامی‌که در حال پیکربندی ابر OpenStack خود هستید، می‌توانید از روی یک لیست محصولات یا راه حل‌های موجود در بازار مانند RabbitMQ ،MySQL ،MariaDB و SQLite، پیام و راه حل پایگاه داده را انتخاب نمایید.
  •  
  • OpenStack در رابط کاربری وب از طریق CLI یا از طریق فراخوانی‌های API با استفاده از ابزارهایی مانند curl یا سایر افزونه‌ها قابل دسترسی است. در نهایت، تمام این فراخوانی‌های REST API دسترسی به سرویس‌های OpenStack را صادر می‌کند.

 

OpenStack برای چه کسانی است؟

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

برای یک کاربر نهایی، مزیت استفاده از OpenStack در نکات زیر نهفته است:

  • هزینه و پیچیدگی متوسط پشتیبانی از زیرساخت‌های عمومی نسبت به حمایت از تنوع زیادی از زیرساخت‌ها (که زمینه مشترکی ندارند) پایین است.
  •  
  • از آنجا که بسیاری از شرکت‌های بزرگ و توسعه دهندگان مستقل دائماً برای ایجاد یک محیط بهتر OpenStack مشارکت می‌کنند، تغییر به آن نسبت به شرکت‌های فروشنده مستقل قابل اعتمادتر است.
  •  
  • هنگام صحبت در مورد یک شرکت، مدیریت ابرهای خصوصی و عمومی به طور جداگانه هزینه‌های سنگینی را از نظر نیروی کار، سرمایه گذاری در زیرساخت‌ها، سفارشی سازی ظرفیت زیرساخت‌های خاص همراه با ریسک اضافی دارد. از طرف دیگر، OpenStack برای پشتیبانی از ابرهای خصوصی و عمومی کارآمدتر از هر رقیب دیگری در بازار رشد کرده است. علاوه‌براین، مدیریت یک محیط منفرد همیشه آسان‌تر از دو محیط متفاوت است.

با توجه به تمام این مزایای OpenStack که در طولانی مدت به حساب می‌آیند، بسیاری از شرکت‌ها آن را پذیرفته‌اند و در زیرساخت‌های back-end خود ادغام نموده‌اند. این شرکت‌ها شامل AT&T ،Ericsson ،Huawei و Intel هستند.

 

OpenStack چگونه کار می‌کند؟

  • Cloud به طور عمده محاسبات را برای کاربران نهایی در یک محیط ریموت فراهم می‌کند، جایی که آن‌ها برنامه‌های نرم افزاری را مستقر کرده و اجرا می‌نمایند (به جای یک محیط فیزیکی که از نظر توانایی و ذخیره سازی محدودیت بیشتری دارد). OpenStack به عنوان یک IaaS در نظر گرفته می‌شود که در آن کاربران به راحتی یک نمونه جدیدی را برروی عنصری اضافه می‌کنند که قابل اجرا باشند. اساساً هدف این زیرساخت‌ها ایجاد یک پلتفرمی است كه توسعه دهنده بتواند برنامه‌های نرم افزاری را در آن ایجاد کرده و استقرار دهد.
  •  
  • پس از درک لایه‌های معماری، نوبت آن است که مفاهیم را به هم متصل کرده و درک نمایید که OpenStack چگونه کار می‌کند!
  •  
  • Horizon چهره محیط برنامه است. هرآنچه نیاز است کاربر انجام دهد، باید از داشبورد شروع شود که Horizon نامیده می‌شود. Horizon، یک رابط کاربری گرافیکی ساده است که دارای ماژول‌های تقسیم شده با عملکرد مخصوص می‌باشد.
  •  
  • همانطور که می‌دانیم، هر عملی در OpenStack به عنوان یک فراخوانی API سرویس کار می‌کند. برای دسترسی به مجوز، هر فراخوانی API ابتدا توسط Keystone تأیید می‌شود. بنابراین، قبل از دسترسی به داشبورد OpenStack، شما باید از طریق اعتبار ورود به سیستم خود، به عنوان یک کاربر ثبت نام شده احراز هویت نمایید.
  •  
  • پس از ورود به سیستم، داشبورد خود را با گزینه‌هایی برای ایجاد نمونه‌های image جدید یا cinder یا volumeها یا پیکربندی جزئیات شبکه مشاهده خواهید کرد.
  •  
  • نمونه‌های image در اصل نمونه‌هایی از ماشین‌های مجازی یا محیطی هستند که ابر را بر روی آن‌ها پیکربندی می‌کنید. آن‌ها می‌توانند Ubuntu ،CirrOS ،RedHat ،OpenSUSE و غیره باشند.
  •  
  • برای ایجاد مورد جدید می‌توانید نمونه‌ای را انتخاب کرده و جزئیاتی مانند پیکربندی شبکه و غیره را وارد نمایید. این نمونه را می‌توان به یک نمونه cinder یا volumeهای جدید متصل کرد تا شامل تمام سرویس‌های اضافی شود. به یاد داشته باشید ایجاد یک نمونه image جدید نیز یک نوع فراخوانی API است.
  •  
  • پس از ایجاد یک image، شما می‌توانید آن را پیکربندی کرده و از طریق CLI مدیریت نمایید. سپس داده‌های مورد نیاز را اضافه کنید. حتی ممکن است بخواهید بسیاری از عملیات‌های گسترده را برروی نمونه ایجاد شده انجام دهید.
  •  
  • هرگونه محاسبات داده‌ای انجام شده برروی نمونه ابری ایجاد شده به همراه فراداده آن در معماری image و سایر اجزای ذخیره سازی و بنابراین در پایگاه داده‌های مرتبط ذخیره می‌شود.
  •  
  • شما حتی می‌توانید برای ذخیره snapshotها یک نمونه‌ای را پیکربندی نمایید؛ بطوریکه هر لحظه از وضعیت دیسک برای مراجعات آینده ذخیره شود. این قابلیت در داشبورد موجود است.

 

 

 

منبع:

mindmajix