منظور از سرویس Nova در OpenStack چیست؟ کاربرد Nova در OpenStack چیست؟ چه امکاناتی در قالب سرویس Nova در محیط اوپن استک به ما ارائه می شود؟
معرفی سرویس Nova در OpenStack قسمت 1 معرفی
هدف از ارائه این سلسله مقالات؛ بررسی تئوری OpenStack Compute service با نام Nova و تحلیل قابلیت های آن می باشد. همچنین پیش نیاز این مباحث آشنایی اولیه با OpenStack ، درک مفاهیمی از قبیل مجازی سازی ، Cloud و Infrastructure as a Service می باشد.
مجموعه سرویس Nova یک ساز و کار مشخص برای کنترل پلتفرم IaaS ارائه می دهد، که برای متخصصان OpenStack امکان ارائه یک Virtual Machine با تنظیمات درخواستی را فراهم می کند. به عبارت دیگر مجموعه سرویس Nova باعث می شود که شما بتوانید ماشین های مجازی ساخته شده (توسط هاست های مجازی تان) را به عنوان یک کالا به مشتریانتان ارائه دهید.در حقیقت API های Nova مشخصات ماشین مجازی خواسته شده (ازقبیل میزان RAM ، CPU ، Disk ، Network و ..) را دریافت کرده و سپس از طریق تعامل با Hypervisor پس از ساخت آن ماشین، شرایط را برای ارائه به مشتریان فراهم می نماید.شایان ذکر است که Nova (به عنوان هسته اصلی یک سیستم IaaS ) خود با زبان برنامه نویسی Python نوشته شده است و Source Code آن بر روی اینترنت قابل روئیت می باشد.
راهکار Nova Compute Service با اکثر Hypervisor های مطرح سازگار است، اما ممکن است هر Hypervisor برخی از قابلیت های آن را پشتیبانی نکند، کهCompatibility Matrix آن موجود است. اما بالاترین میزان سازگاری با Nova را KVM Hypervisor دارا می باشد و توصیه خود OpenStack هم استفاده از راهکار مجازی سازی KVM Linux می باشد. در ادامه با دو اصطلاح پرکاربرد درون مجموعه سرویس Nova آشنا خواهیم شد.
به هر Hypervisor ای که در اختیار Nova باشد، اصطلاحا یک Compute Node گفته می شود. همچنین به هر Virtual Machine ای که توسط Nova کنترل می شود اصطلاحا یک Instance گفته می شود. زمانی که Hypervisor ها تحت عنوان Compute Node در اختیار مجموعه سرویس Nova قرار گرفته باشند، این Nova است که تصمیم می گیرد که هر کدام از Instance ها بر روی کدام host قرار بگیرند. به عبارت دیگر این Nova است که ارتباطات بین Hypervisor و Virtual Machine را مدیریت می کند تا (در یک مقیاس انبوه) با دنبال نمودن میزان مصرف منابع بر روی هر Host ، درخواست هایی نظیر ساخت، تغییر سایز و یا حذف یکInstance صورت پذیرد.در مقالات بعدی به ترتیب به بررسی هر کدام از قابلیت ها Nova و نقش آن ها در OpenStack خواهیم پرداخت.
معرفی سرویس Nova در OpenStack قسمت 2 ابزار Flavor
در این مقاله به بررسی روش اصلی مورد استفاده در Openstack Nova Compute برای تعیین میزان حافظه، هسته ی پردازنده، اندازه دیسک و ... هر ماشین مجازی (که در اینجا با عنوان Instance شناخته می شود) خواهیم پرداخت، تا با نحوی مشخص کردن پارامترهای یک Instance بیشتر آشنا شویم.
عبارت Flavor در لغت به معنای چاشنی و اما در اصطلاح Nova منظور فایل تنظیمات برای ساخت Instance می باشد. هنگام ساخت یک Instance باید تعیین شود که بر اساس کدام Flavor ساخته می شود. به عبارت دیگر برای لانچ یک Instance باید Flavor آن را تعیین نمود، چراکه Flavor اندازه آن Instance را تعیین می کند.
درون یک Flavor می توان میزان منابع یک Instance و میزان بهره گیری از آنها را تعیین نمود، به عنوان مثال به کمک Flavor می توان تعیین نمود که هر Instance چه تعداد دیسک، و روی هر دیسک چه مقدار فضا داشته و همچنین هر Instance روی آن دیسک چقدر I/O بتواند استفاده کند. چنین مواردی برای تعیین سایر منابع یک Instance از قبیلRAM ، CPU ، Network و همچنین تعیین سایر شرایط یک Instance از قبیل میزانswap ، Bandwidth ، Secure Boot و ... نیز وجود دارد. علاوه بر این به وسیله Flavor می توان به ازای منابع هر Instance موارد Shares ، Limits و reservation را مطرح نمود.
همچنین به کمک Flavor می توان تعیین نمود که کدام Instance بر روی کدام Compute Node قرار گیرد. در یک زیرساخت رایانش ابری با یک لیست ازFlavor ها سروکار خواهیم داشت که این Flavor ها می توانند در طبقه بندی های مختلف با Category های متفاوتی دسته بندی شده باشند. به عنوان مثال با Nova می توان یک Flavor فرضی با نام Fl101 با مشخصات ( 2CPU ، 6GB RAM ، 200GB SSD ، 1TB HDD و ... ) ایجاد نمود، تا زمان ساخت یک Instance تعیین شود که Instance مدنظر ما قرار است بر اساس Flavor ای با نام فرضیFl101 یا هر کدام ازFlavor های دیگر ساخته شود. همچنین درون مجموعه Nova به هرFlavor که ساخته می شود یک Flavor ID منحصربه فرد تعلق گرفته و با آن Flavor ID در سرتاسر مجموعهOpenStack شناسایی خواهد شد.
شایان ذکر است که پارامترهای یکFlavor تنها محدود به کانفیگ سخت افزاری Instance ها می باشد، یعنیFlavor تعیین نمی کند که چه نوع سیستم عامل یا نرم افزاری درون Instance نصب شود. همچنین در نگارش این مقاله مفهوم Flavor Framework در Neutron لحاظ نشده است.هدف از وجود Flavor در زیرساخت ابری؛ پوشش طیف های گوناگون، وسیع و جورواجور از نیازهای کاربران می باشد تا بتوانند المان های سخت افزاری مناسب برای نرم افزارشان را داشته باشند.
این زمانی معنا پیدا می کند که کاربر ترجیح داده به جای خرید فیزیکی سرور و راه اندازی آن، از IaaS استفاده نماید. بنابراین اگر OpenStack بدون استفاده از ابزار Flavor یک IaaS ارائه می داد، نمی توانست در یک مقیاس بزرگ درخواست های متنوع کاربران مختلف را (از حیث مشخصات سخت افزاری سرورمجازیشان) تامین نماید. به طور خلاصه؛ Flavor ها به ادمینIaaS یک راهکار آسان و راحت برای فیت کردن اندازه یک Instance با نیازهای سخت افزاری آن فراهم می کند، از سوی دیگر نیز کاربر تنها آنچه را که برای اهدافش نیاز دارد در اختیار خواهد گرفت.
معرفی سرویس Nova در OpenStack قسمت 3 مفهوم rootwrap
مفهوم rootwrap در OpenStack چیست؟ و rootwrap در زیرساخت ابری چه کاری انجام می دهد؟ در این مقاله کوتاه به بررسی Permission های سرویس هایOpenStack برای اجرا و همچنین مکانیسم های امنیتی لحاظ شده در آنها خواهیم پرداخت. برای درک منطق کاریrootwrap نیاز به آشنایی قبلی با محتوای فایل sudoers در سیستم عامل لینوکس هست، که تحت مالکیت کاربر root این فایل تعیین می کند چه کاربری، چه دستوری را ، با چه Privilege ای ، کجا و با چه نوع کنترلی می تواند اجرا کند. با این تفاوت کهOpenStack به جای استفاده از دستورات مکمل لینوکس و یا ویرایش خود فایل sudoers ، از فایل و مجموعه تنظیمات rootwrap (که باید تحت مالکیت کاربر root باشد) به صورت زنجیره ای در هنگام استارت کردن Compute Service ها استفاده می نماید.
مجموعه سرویس Nova برای انجام برخی کارها نیاز به سطح دسترسی root سیستم عامل دارد، در حالی که همانند سایر سرویس ها به علت لحاظ برخی تمهیدات امنیتی مستقیما سطح کاربری root به آن داده نشده است. عبارت rootwrap به یک سازوکار امنیتی در OpenStack اطلاق می شود که باعث می گردد؛ دستور سرویسی ازOpenStack که با مشکل سطح دسترسی غیر از root مواجهه است، در مواقعی با سطح دسترسی کامل root اجرا شود.
به عبارت دیگر rootwrap از یک مجموعه فایل و تنظیمات که به صورت زنجیره ای کار می کنند و تحت مالکیت کاربر root هستند استفاده می کند تا باعث شود که ؛ راهبرNova بتواند دستورات مشخصی از یک سرویس را (بدون مشکلpermission ای ) با privilege مربوط به کاربری root اجرا کند. در این حالت حتی Password مربوط به نام کاربری root هم پرسیده نمی شود. اما این مکانیسم تنها محدود بهcommand های خاصی است که پیش تر تعریف شده اند و پیش شرط آن هم این است که فایل rootwrap (و سایر فایل هایی که در آن ها filter definition انجام شده) تحت مالکیت کاربر root باشد.
فواید روال کاری rootwrap و مکانیسم آن زمانی معنا پیدا می کند که به عنوان مثال یک هکر بخواهد از سطح دسترسی عملیاتی سرویسی که با کاربری root در حال اجرا می باشد برای حملات خود استفاده کند، وجود مکانیسم rootwrap دایره تحت نفوذ هکر را ایزوله کرده و میزان تخریب احتمالی را کاهش می دهد. چراکه rootwrap با هدف ارائه یک فیلترینگ با پارامترهای زیاد اجازه این محدودیت ها را برای تهدیدات احتمالی فراهم نموده است.شایان ذکر است که محل ذخیره فایل کانفیگ rootwrap در فایلsudoers و همچنین فایل اصلی تنظیمات Nova ، آدرس دهی شده است و از لحاظ دیدگاه سیستم عاملی اصطلاحا درون یک "trusted security path" جای داده شده است و تنها توسط کاربرroot قابل ویرایش است.
معرفی سرویس Nova در OpenStack قسمت 4 سرویس novncproxy
منظور از novncproxy در OpenStack چیست؟ و novncproxy در زیرساخت ابری چه کاری انجام می دهد؟ در این مقاله کوتاه به بررسی تئوریک نحوه ی متصل شدن و دسترسی کاربر به Remote Console سرورهای مجازی بالا آمده در زیرساخت OpenStack خواهیم پرداخت. پیشنیاز این مقاله آشنایی با مفهومRemote Console و همچنینVNC هست که یک ارتباط گرافیکی را در بستر شبکه برای کنترل از راه دور ماشین ها فراهم می نماید.
یکی از متدهای Openstack برای ارتباط با سیستم عامل های مجازی، VNC می باشد. مجموعه سرویس Nova برای ارائه کنسول Instance ها از noVNC console استفاده می کند و novncproxy دسترسی به کنسول های روی Compute Node ها را فراهم می کند و باعث می شود که کاربر بتواند از طریق شبکه و با HTML5 کنسول Instance خود را باز کند. به عبارت دیگر novncproxy یک سرویس پراکسی است که مسئولیت برقراری ارتباطVNC به ماشین ها در بستر شبکه را فراهم کرده است و اجازه می دهد تا کاربر بتواند تحت وب به کنسول ماشین مجازی خود متصل شود. اهمیت novncproxy بدلیل سازگاری آن باNova و مدل زیرساخت Cloud Computing در OpenStack با قابلیت Encryption می باشد.
در واقع پس از انجام احراز هویت های مورد نیاز OpenStack سرویس nova-novncproxy یک session رمزنگاری شده را روی مرورگر برقرار نگه می دارد و باعث می شود تا مشتریان زیرساخت IaaS بتوانند؛ ( حتی زمانی کهConnectivity هایی از قبیلSSH و ... به هر دلیلی میسر نبود اقدام به اتصال به سرور مجازی خود کنند. حتی در مواقعی که نیاز به ریست کردن پسورد باشد یا هنگامی که کاربری ناخواسته و به اشتباه دسترسی خودش را محدود کرده است، کاربر می تواند کنسول اولیه ماشین خود را با novncproxy ببیند. چراکه این اتصال همانند اتصال کیبورد و مانیتور به یک کامپیوتر می باشد که بدینوسیله محقق شده است. همچنین برای اتصالvnc console به درونInstance ها از Libvirt استفاده می شود که از آن به عنوان یک ابزار برای مدیریت ایمن Instance ها (ماشین های مجازی) بر روی Compute Node ها (هاست ها) در زیرساخت ابری Openstack یاد می شود.