OpenStack یک پلتفرم محاسبات ابری رایگان و متنباز است. OpenStack بهعنوان یک سیستمعامل ابری برای کنترل منابع عمیق محاسباتی، شبکهای و ذخیرهسازی در یک مرکز داده استفاده میشود. این پلتفرم عمدتاً بهعنوان زیرساخت بهعنوان سرویس (IaaS) برای محاسبات ابری پیادهسازی میشود. OpenStack یک پلتفرم متنباز است که گزینههای متعددی برای استقرار و نصب آن از طریق توزیعهای نرمافزاری مختلف ارائه میدهد. OpenStack مدلهای مختلف استقرار را برای مشتریان خود فراهم میکند و همچنین تصاویر ISO از پیش نصب شدهای از پلتفرم خود را برای مشتریانش ارائه میدهد.
OpenStack یک فناوری معروف است، اما مدیریت و استقرار آن بدون ابزارهای مناسب میتواند دشوار باشد. یکی از راهحلهای آسان، استقرار خدمات OpenStack با استفاده از کانتینرهای Docker از پیش ساخته شده با Kolla و Hyper-V است.
OpenStack مجموعهای از ابزارهای استقرار، مانند Kolla، را ارائه میدهد تا پروژهها و تصاویر Docker OpenStack را برای استقرار کانتینرهای Docker و OpenStack تولید کند. بالغترین محصول ارائه شده توسط Kolla، kolla-ansible است. همانطور که از نامش پیداست، kolla-ansible از playbookهای Ansible برای خودکارسازی استقرار استفاده میکند.
راهاندازی Hyper-V
در میزبان ویندوز، به یک ماشین مجازی نیاز داریم تا کنترلکننده OpenStack لینوکس را میزبانی کند. در این آموزش، یک ماشین مجازی Ubuntu 16.04 با ۸ گیگابایت RAM، ۲۰ گیگابایت دیسک و ۴ هسته مجازی داریم. تمام خدمات کنترلکننده در اینجا اجرا میشوند و با Kolla در کانتینرهای Docker مستقر میشوند. همچنین، همان Hyper-V بهعنوان میزبان محاسباتی برای استقرار OpenStack عمل میکند. این کار با نصب اجزای Cloudbase OpenStack قابل دستیابی است. گرههای محاسباتی اضافی Hyper-V میتوانند در صورت نیاز بعداً اضافه شوند.
راهاندازی شبکه
OpenStack یک پلتفرم محاسبات ابری رایگان و متنباز است. OpenStack بهعنوان یک سیستمعامل ابری برای کنترل منابع عمیق محاسباتی، شبکهای و ذخیرهسازی در یک مرکز داده استفاده میشود. این پلتفرم عمدتاً بهعنوان زیرساخت بهعنوان سرویس (IaaS) برای محاسبات ابری پیادهسازی میشود. OpenStack یک پلتفرم متنباز است که گزینههای متعددی برای استقرار و نصب آن از طریق توزیعهای نرمافزاری مختلف ارائه میدهد. OpenStack مدلهای مختلف استقرار را برای مشتریان خود فراهم میکند و همچنین تصاویر ISO از پیش نصب شدهای از پلتفرم خود را برای مشتریانش ارائه میدهد.
OpenStack یک فناوری معروف است، اما مدیریت و استقرار آن بدون ابزارهای مناسب میتواند دشوار باشد. یکی از راهحلهای آسان، استقرار خدمات OpenStack با استفاده از کانتینرهای Docker از پیش ساخته شده با Kolla و Hyper-V است.
OpenStack مجموعهای از ابزارهای استقرار، مانند Kolla، را ارائه میدهد تا پروژهها و تصاویر Docker OpenStack را برای استقرار کانتینرهای Docker و OpenStack تولید کند. بالغترین محصول ارائه شده توسط Kolla، kolla-ansible است. همانطور که از نامش پیداست، kolla-ansible از playbookهای Ansible برای خودکارسازی استقرار استفاده میکند.
راهاندازی Hyper-V
در میزبان ویندوز، به یک ماشین مجازی نیاز داریم تا کنترلکننده OpenStack لینوکس را میزبانی کند. در این آموزش، یک ماشین مجازی Ubuntu 16.04 با ۸ گیگابایت RAM، ۲۰ گیگابایت دیسک و ۴ هسته مجازی داریم. تمام خدمات کنترلکننده در اینجا اجرا میشوند و با Kolla در کانتینرهای Docker مستقر میشوند. همچنین، همان Hyper-V بهعنوان میزبان محاسباتی برای استقرار OpenStack عمل میکند. این کار با نصب اجزای Cloudbase OpenStack قابل دستیابی است. گرههای محاسباتی اضافی Hyper-V میتوانند در صورت نیاز بعداً اضافه شوند.
راهاندازی شبکه
ما به ۲ سوئیچ مجازی در میزبان Hyper-V نیاز داریم که به ماشینهای مجازی کنترلکننده OpenStack متصل خواهند شد. **ext-net** شبکه خارجی است که به رابط فیزیکی خارجی ویندوز متصل شده است. ما از این شبکه همچنین برای مدیریت ماشین مجازی استفاده خواهیم کرد. **data-net** شبکه داده است که در حال حاضر یک سوئیچ مجازی خصوصی ساده است (یک سوئیچ خارجی تنها در زمان اضافه کردن گرههای محاسباتی بیشتر نیاز است).
در ماشین مجازی کنترلکننده OpenStack، سه رابط وجود دارد. دو رابط اول (eth1 و eth0) به شبکه خارجی متصل هستند. رابط اول برای مدیریت، مانند SSH، استفاده میشود و OpenStack از رابط دوم برای ترافیک خارجی استفاده میکند. این رابط توسط Open vSwitch مدیریت میشود. در نهایت، eth2 شبکه داده/overlay است که برای ترافیک مستأجران بین اجزای Neutron در کنترلکننده و نمونهها استفاده میشود.
eth2 و eth1 آدرس IP ندارند و در فایل **/etc/network/interfaces** بهعنوان “دستی” تنظیم شدهاند. دلیل این امر این است که Open vSwitch آنها را مدیریت میکند. همچنین، در این رابطها، باید جعل آدرس MAC را از تب “ویژگیهای پیشرفته” در آداپتور فعال کنیم.
اسکریپتهایی که استفاده خواهیم کرد بهطور خودکار رابطهای شبکه لینوکس را پیکربندی میکنند، بنابراین نیازی به نگرانی در این مورد نیست. تنها رابط که قبلاً پیکربندی کردهایم eth0 است تا کاربر بتواند به سیستم SSH کند.
استقرار کنترلکننده OpenStack
ابتدا یک مخزن Git که شامل اسکریپتهای استقرار Kolla OpenStack است را از https://github.com/cloudbase/kolla-resources کلون کنید. در پایان استقرار، همچنین برخی طعمهای مشترک، یک روتر مجازی Neutron، یک تصویر VHDX Cinder Cirros و ۲ شبکه، یکی خصوصی برای مستأجران (بر اساس VLAN) و یکی خارجی (صاف) ایجاد خواهد شد. برای این کار، دستورات زیر را اجرا کنید:
git clone https://github.com/cloudbase/kolla-resources.git
cd kolla-resources
سپس، جزئیات شبکه مدیریت و خارجی را با تنظیم برخی متغیرها در اسکریپت **deploy_openstack.sh** پیکربندی کنید:
vim deploy_openstack.sh
خطوط زیر را به فایل اسکریپت **deploy_openstack.sh** اضافه کنید و فایل را ذخیره و خارج شوید:
# deploy_openstack.sh
MGMT_IP=192.168.0.60
MGMT_NETMASK=255.255.255.0
MGMT_GATEWAY=192.168.0.1
MGMT_DNS="8.8.8.8"
# اطلاعات شبکه خارجی Neutron
FIP_START=192.168.0.80
FIP_END=192.168.0.90
FIP_GATEWAY=192.168.0.1
FIP_CIDR=192.168.0.0/24
TENANT_NET_DNS="8.8.8.8"
# استفاده شده برای HAProxy
KOLLA_INTERNAL_VIP_ADDRESS=192.168.0.91
در این آموزش، ما از همان زیرشبکه برای IPهای خارجی شناور و مدیریت استفاده میکنیم.
سپس، اسکریپت استقرار را با اجرای دستور زیر اجرا کنید. در اینجا، ما از دستور “time” لینوکس برای درک مدت زمان استقرار استفاده میکنیم:
time sudo ./deploy_openstack.sh
ابتدا، این اسکریپت تصاویر Docker را برای هر سرویس OpenStack بارگیری خواهد کرد. نکته عالی در مورد Kolla این است که کاربر تنها یک بار باید تصاویر را ایجاد کند و این کار زمان قابل توجهی را در طول استقرار صرفهجویی میکند. این کار احتمال خطاهای ناشی از وابستگیهای بهروز شده را کاهش میدهد زیرا تصاویر کانتینرها از قبل تمام اجزای مورد نیاز را شامل میشوند. تصاویری که در طول استقرار استفاده خواهیم کرد در DockerHub (https://hub.docker.com/u/cloudbaseit/) موجود هستند. کاربران همچنین میتوانند تصاویر خود را ایجاد و استفاده کنند.
پس از اتمام استقرار، یک کنترلکننده OpenStack کاملاً کاربردی خواهیم داشت. این فرایند حدود ۱۳ دقیقه طول خواهد کشید.
real 12m28.716s
user 3m7.296s
sys 1m4.428s
سپس، دستور زیر را برای مشاهده تمام کانتینرهای Docker در حال اجرا بر روی سرور اجرا کنید:
sudo docker ps
در نهایت، میتوانیم با اجرای دستور زیر اعتبارنامههای مدیر را بارگذاری کنیم:
source /etc/kolla/admin-openrc.sh
استقرار گره محاسباتی Nova Hyper-V
ابتدا، فایل موجودی Ansible را ویرایش کرده و میزبان Hyper-V خود (که در این آموزش به نام “hyperv-host” شناخته میشود) و اعتبارنامههای لازم برای دسترسی به آن را اضافه کنید:
vim hyperv_inventory
خطوط زیر را به فایل موجودی Ansible اضافه کنید و سپس فایل را ذخیره و خارج شوید:
[hyperv]
hyperv-host
[hyperv:vars]
ansible_ssh_host=192.168.0.120
ansible_user=Administrator
ansible_password=Passw0rd
ansible_port=5986
ansible_connection=winrm
ansible_winrm_server_cert_validation=ignore
پس از آن، یک شنونده HTTPS WinRM را در میزبان Hyper-V پیکربندی کنید که کاربران میتوانند به راحتی با استفاده از اسکریپت PowerShell ذکر شده در GitHub (https://github.com/ansible/ansible/blob/devel/examples/scripts/ConfigureRemotingForAnsible.ps1) ایجاد کنند.
حالا، اسکریپتها را برای استقرار و پیکربندی کامل Nova compute بر روی Hyper-V اجرا کنید. پارامتر اول پل دادهای است که قبلاً پیکربندی کردهایم، یعنی **data-net**. پارامترهای سوم و چهارم اعتبارنامههای Hyper-V هستند که FreeRDP برای دسترسی به میزبان Hyper-V هنگام اتصال به کنسول نمونه Nova نیاز دارد.
sudo ./deploy_hyperv_compute_playbook.sh data-net Administrator Passw0rd
سپس، باید حالت trunk را برای کنترلکننده OpenStack تنظیم کنیم. دو دلیل برای انجام این کار وجود دارد: اول، ما یک شبکه مستأجر با نوع VLAN داریم و دوم، کنترلکننده یک ماشین مجازی در Hyper-V است، بنابراین هایپروایزر باید اجازه بستههای برچسبگذاری شده VLAN را بر روی رابط دادهای ماشین مجازی کنترلکننده بدهد. برای این کار، یک PowerShell با دسترسی بالا را باز کرده و دستور زیر را اجرا کنید:
Set-VMNetworkAdapterVlan -Trunk -AllowedVlanIdList 500-2000 -NativeVlanId 0 openstack-controller
در نهایت، ماشین مجازی کنترلکننده با نام “openstack-controller” در Hyper-V ایجاد میشود.
ایجاد یک ماشین مجازی
حالا، یک ماشین مجازی را راهاندازی کرده و اتصال آن به اینترنت را با اجرای دستور زیر آزمایش خواهیم کرد:
NETID=`neutron net-show private-net | awk '{if (NR == 5) {print $4}}'`
nova boot --flavor m1.nano \
--nic net-id=$NETID \
--image cirros-gen1-vhdx hyperv-vm1
همچنین میتوانیم همین اطلاعات را از طریق Horizon بررسی کنیم.
دسترسی کنسول FreeRDP از Horizon نیز کار میکند. در صورت نیاز، میتوانیم مستقیماً به ماشین مجازی از Hyper-V دسترسی پیدا کنیم.
نتیجهگیری
این آموزش مراحل استقرار خدمات OpenStack با استفاده از کانتینرهای Docker از پیش ساخته شده با Hyper-V و Kolla را ارائه میدهد. امیدوارم این آموزش مفید بوده باشد. اگر هر گونه سوال یا پیشنهادی دارید، با ما ارتباط بگیرید.