اگر در مورد زیرساخت رایانش ابری هنوز چیزی نمیدانید پیشنهاد میکنم قبل از خواندن این مطلب، این پست و این پست از وبلاگ را مطالعه کنید…
در این پست در مورد نصب OpenStack نسخه Icehouse بر روی CentOS 7 صحبت میکنیم. این سادهترین و راحتترین حالت نصب اوپناستک خواهد بود که هرکسی میتواند بر روی یک PC یا لپتاپ به صورت یک محیط آزمایشگاهی نصب و راهاندازی کند.
اگر نگاهی به مستندات منتشر شده از سوی بنیاد اوپناستک نگاهی بندازید میبینید که مراحل طولانی را باید طی کرد که اوپن استک را بر روی یک node نصب و راه اندازی کرد. حالا فکر این را بکنید توی یک محیط اینترپرایز که قرار است تعداد زیادی node و سرور یک کار واحد را انجام دهند، نصب و راه اندازی آنها در مدت کوتاه چقدر میتواند زمانبر و حوصلهسربر باشد ! به همین خاطر شرکتهایی مثل Canonical و Red Hat نسخههایی از اوپناستک را برای کاربران خود منتشر کردهاند که نصب و راه اندازی آن را به حداقل زمان ممکن و کمترین عملیات کاهش دادهاند و با چند کلیک یا چند کامند میتوان اوپناستک را بر روی یک نود نصب و راهاندازی کرد.
شرکت کنونیکال و اوبونتو از نسخه ubuntu-server 12.04 به بعد امکانی را به نصاب خود اضافه کردهاند تحت عنوان MaaS یا Metal as a Service که قادر خواهید بود با نصب یک MaaS Server به هر تعدادی اوپناستک را در مدت زمان کوتاهی بر روی هر تعداد سرور نصب و راهاندازی کنید. استفاده از Ubuntu MaaS نیاز به کمی مقدمه و آمادگی سخت افزاری یا مجازی دارد که در پستهای بعدی در مورد آن صحبت خواهم کرد ولی در این پست سعی میکنیم بر روی RDO تمرکز کنیم.
RDO یا RedHat Distribution OpenStack هم عملی مثل Ubuntu MaaS دارد و با استفاده از آن ردهت امکانی را فراهم کرده که به جای گذراندن مراحل نصب توضیح داده شده در مستندات رسمی اوپن استک ، تنها با چند کامند اوپناستک را بر روی محیط ابری خود پیاده سازی کنید. RDO در واقع مجموعهای از یک اسکریپت نصب تحت عنوان packstack و پکیجهای آخرین نسخه اوپناستک هستش که ادعا میکند که همیشه آخرین نسخه اوپناستک را میتوانید از طریق آن بر روی توزیعهای RedHat و CentOS و Fedora نصب کنید.
بر خلاف Ubuntu MaaS که از پشتیبانی کنونیکال و یکپارچگی با Landscape برخوردار است، RDO کاملا یک پروژه از طرف کامیونیتی است که از سوی ردهت پشتیبانی میشود ولی هیچ پشتیبانی رسمی تکنیکالی از طرف ردهت ندارد و بعد از نصب باید برای رفع مشکلات خود دست به دامن فروم و میلینگ لیست RDO شوید. RDO بعد از انتشار در هر نسخه و تست و رفع ایرادات آن وارد پروژه Red Hat Enterprise OpenStack Platform شده و در آنجا بعد از گذراندن مراحل تست یک محصول اینترپرایز، از سوی شرکت ردهت به عنوان یک محصول تجاری برای مشتریان اینترپرایز و RHEL منتشر میشود. در واقع RDO یک آپاستریم برای RedHat Enterprise OpenStack Platform محسوب میشود.
برای شروع کار و نصب اوپناستک نسخه Icehouse ابتدا باید یک نسخه از مدیا نصب CentOS 7 داشته باشید که از این لینک میتوانید آنرا دانلود کنید. پیشنهاد من استفاده از CentOS 7 Minimal است که حداقل ممکن پکیجها را برای نصب در اختیار شما قرار دهد و بعد از نصب بسته به نیاز، پکیجها را از طریق yum نصب خواهیم کرد. متاسفانه تا این لحظه هنوز هیچ ISO مینیمالی از سوی تیم توسعه CentOS برای نسخه هفتم آن منتشر نشده و این امکان تنها از طریق DVD آن در دسترس است و پیشنهاد من هم استفاده از CentOS 7 DVD است که نه تنها بتوانید در این پروژه از آن استفاده کنید بلکه بتوانید در مصارف بعدی هم از آن استفاده کنید. در نسخه DVD آن بسیاری از انواع نصب به نسخه هفتم سنتاواس اضافه شده، از نصب مینیمال گرفته تا دسکتاپ گنوم و کیدیای و سرور گرافیکال در آن وجود دارد که کار را برای شما راحت میکند.
بعد از دانلود CentOS 7 DVD و نصب آن بر روی یک سیستم فیزیکال یا یک ماشین مجازی بر روی KVM یا VirtualBox یا خدای نکرده VMware مراحل زیر را دنبال خواهیم کرد. مراحل نصب CentOS را توضیح نمیدهم چون انتظار میرود کسی که علاقه دارد بر روی محیط ابری کار کند حداقل نصب CentOS را به صورت minimal بداند. ولی اگر در مورد نصب سنتاواس اطلاعی ندارید مطمئنا با کمی گوگل کردن به آن میرسید.
در لحظه نوشتن این مطلب نصب و راهاندازی اوپن استک بر روی CentOS 7 به خاطر عدم هماهنگی با RDO و پکیجهای آن ، باید مراحل نصبی که در سایت RDO توضیح داده شده را کمی تغییر دهیم. مراحب نصب پیشفرض توضیح داده شده در سایت RDO ، برای CentOS 6 و Fedora 20 در نظر گرفته شده و به خاطر استفاده از Mariadb و Systemd در CentOS 7 ممکن است در حین نصب به مشکل برخورد کنید. پس برای نصب بدون دردسر OpenStack Icehouse بر روی CentOS 7 در ادامه همراه باشید…
مرحله صفر، قبل از هرچیز یک کاربر همهکاره یا su باشید. با استفاده از کامند زیر:
su
برای شروع کار و بعد از نصب سنتاواس ابتدا سیستم خود را با استفاده از کامند زیر آپدیت کنید. سعی کنید در حین کار با yum صبور باشید و مثل من حرص نخورید ! مخصوصا اگر سرعت اینترنت خوبی ندارید…
yum update -y
در ادامه باید سرویس sshd را بر روی سیستم اجرا کنید و در پروسه بوت قرار دهید تا در هر بار بوت اتوماتیک اجرا شود
chkconfig sshd on && service sshd restart
همچنین یک آیپی استاتیک کلاس سی به اینترفیس شبکه که به صورت پیشفرض eth0 خواهد بود بدهید (کلاس سی به دلیل اینکه پیشفرض این است که شما در خانه یا یک محیط آزمایشگاهی نصب اوپناستک را انجام میدهید)
vi /etc/sysconfig/network-scripts/ifcfg-eth0
و مقدار زیر را درون فایل قرار دهید و فایل ifcfg-eth0 را ذخیره کنید و ببندید:
DEVICE=eth0
TYPE=Ethernet
ONBOOT=yes
NM_CONTROLLED=yes
BOOTPROTO=none
IPADDR=192.168.10.100
PREFIX=24
GATEWAY=192.168.10.1
DNS1=8.8.8.8
DOMAIN=4.2.2.2
DEFROUTE=yes
IPV4_FAILURE_FATAL=yes
IPV6INIT=no
NAME=”System eth0
اینترفیس شبکه eth0 ممکن است در CentOS 7 کمی متفاوت باشد اگر فایلی با عنوان ifcfg-eth0 وجود نداشت در خروجی ifconfig اسم اینترفیس شبکه خود را میبینید. آن را جایگزین eth0 کنید. در این کانفیگ من آیپی سیستم را ۱۹۲٫۱۶۸٫۱۰٫۱۰۰ قرار دادم و گیتوی را هم مودم روتر شخصی که با آیپی ۱۹۲٫۱۶۸٫۱۰٫۱ است قرار دادم. تمام این مقادیر بسته به تنظیمات شبکه شما میتواند متفاوت باشد.
و در نهایت هم به کمک دستور زیر سرویس شبکه را ریستارت کنید:
service network restart
سپس با استفاده از کامندلاین باید مخزن پکیجهای OpenStack Icehouse را به سنتاواس اضافه کنید. در این مرحله به صورت همزمان مخزن EPEL 7 هم به خاطر استفاده از پکیجهایی که به صورت رسمی در مخزن سنتاواس ارائه نمیشود به سیستم اضافه میشود. پس نیازی نیست به صورت دستی EPEL 7 را اضافه کنید.
wget -c http://repos.fedorapeople.org/repos/openstack/openstack-icehouse/rdo-release-icehouse-4.noarch.rpm
yum localinstall rdo-release-icehouse-4.noarch.rpm
بعد از اضافه کردن مخازن باید بسته OpenStack Packstack را با استفاده از دستور زیر در خط فرمان خود نصب کنید:
yum install openstack-packstack -y
برای شروع کار باید اسکریپت packstack را اجرا کرد. اسکریپت نصب packstack در تمامی نسخهها از قبیل CentOS 6 و CentOS 7 و RHEL 6 و RHEL 7 و Fedora 20 یکسان است و چگونگی پیشرفت مراحل نصب همه و همه به فایل redhat-release در دایرکتوری /etc بستگی دارد. به دلیل اینکه تفاوتهای اساسی بین CentOS 6 و CentOS 7 وجود دارد که در پروسه نصب اوپناستک مهمترین این تفاوتها استفاده از MariaDB بهجای MySQL و Systemd به جای upstart است و از آنجایی که هنوز اسکریپت packstack هنوز آپدیت نشده و گزینههای CentOS 7 و RHEL 7 در آن درنظر گرفته نشده است باید فایل redhat-release را طوری تغییر داد که مراحل نصب به MySQL و upstart گیر ندهد با استفاده از MariaDB و Systemd کار خود را ادامه دهد و به پایان برسد.
از آنجایی که CentOS 7 برپایه RHEL 7 و به دنبال آن هم RHEL 7 بر پایه Fedora 19 است و شبیه ترین نسخهای که به CentOS 7 وجود دارد فدورا ۱۹ است میتوان از اسم انتشار فدورا ۲۰ یا ۱۹ برای فایل redhat-release استفاده کنیم. فدورا ۲۰ و ۱۹ هم همچون CentOS 7 از MariaDB و Systemd برای پیادهسازی OpenStack بهره میبرد و مراحل نصب بدون مشکل بر روی آن پیش میرود. پس برای داشتن یک نصب موفقیتامیز اوپناستک بر روی سنتاواس ۷ ، دستور زیر را برای جایگزینی اسم انتشار فدورا به جای سنتاواس در خط فرمان وارد کنید:
echo “Fedora release 20 (Heisenbug)” > /etc/centos-release
پس از این مرحله اسکریپت packstack را اجرا میکنیم با استفاده از دستور زیر:
packstack –allinone
استفاده از آپشن –allinone برای این است که تمامی اجزای اوپن استک که به صورت استاندارد باید حداقل بر روی ۳ ماشین یا سرور فیزیکال نصب شود، بر روی یک ماشین که همان PC یا لپتاپ شماست نصب شود. در انتهای این مرحله در صورتی که به صورت مداوم کانکشن اینترنت برقرار باشد میتوانید اوپناستک نسخه Icehouse را بر روی سیستم خود داشته باشید و خروجی آن بر روی ترمینال یا کنسول سیستم در انتهای مراحل نصب به شکل زیر خواهد بود:
Welcome to Installer setup utility
Packstack changed given value to required value /root/.ssh/id_rsa.pub
Installing:
Clean Up… [ DONE ]
Setting up ssh keys… [ DONE ]
Discovering hosts’ details… [ DONE ]
Adding pre install manifest entries… [ DONE ]
Adding MySQL manifest entries… [ DONE ]
Adding QPID manifest entries… [ DONE ]
Adding Keystone manifest entries… [ DONE ]
Adding Glance Keystone manifest entries… [ DONE ]
Adding Glance manifest entries… [ DONE ]
Installing dependencies for Cinder… [ DONE ]
Adding Cinder Keystone manifest entries… [ DONE ]
Adding Cinder manifest entries… [ DONE ]
Checking if the Cinder server has a cinder-volumes vg…[ DONE ]
Adding Nova API manifest entries… [ DONE ]
Adding Nova Keystone manifest entries… [ DONE ]
Adding Nova Cert manifest entries… [ DONE ]
Adding Nova Conductor manifest entries… [ DONE ]
Adding Nova Compute manifest entries… [ DONE ]
Adding Nova Scheduler manifest entries… [ DONE ]
Adding Nova VNC Proxy manifest entries… [ DONE ]
Adding Nova Common manifest entries… [ DONE ]
Adding Openstack Network-related Nova manifest entries…[ DONE ]
Adding Neutron API manifest entries… [ DONE ]
Adding Neutron Keystone manifest entries… [ DONE ]
Adding Neutron L3 manifest entries… [ DONE ]
Adding Neutron L2 Agent manifest entries… [ DONE ]
Adding Neutron DHCP Agent manifest entries… [ DONE ]
Adding Neutron LBaaS Agent manifest entries… [ DONE ]
Adding Neutron Metadata Agent manifest entries… [ DONE ]
Adding OpenStack Client manifest entries… [ DONE ]
Adding Horizon manifest entries… [ DONE ]
Adding Ceilometer manifest entries… [ DONE ]
Adding Ceilometer Keystone manifest entries… [ DONE ]
Adding post install manifest entries… [ DONE ]
Preparing servers… [ DONE ]
Installing Dependencies… [ DONE ]
Copying Puppet modules and manifests… [ DONE ]
Applying Puppet manifests…
Applying IP_prescript.pp
IP_prescript.pp : [ DONE ]
Applying IP_mysql.pp
Applying IP_qpid.pp
IP_mysql.pp : [ DONE ]
IP_qpid.pp : [ DONE ]
Applying IP_keystone.pp
Applying IP_glance.pp
Applying IP_cinder.pp
IP_keystone.pp : [ DONE ]
IP_glance.pp : [ DONE ]
IP_cinder.pp : [ DONE ]
Applying 10.111.16.191_api_nova.pp
IP_api_nova.pp : [ DONE ]
Applying IP_nova.pp
IP_nova.pp : [ DONE ]
Applying 10.111.16.191_neutron.pp
IP_neutron.pp : [ DONE ]
Applying IP_osclient.pp
Applying IP_horizon.pp
Applying IP_ceilometer.pp
IP_osclient.pp : [ DONE ]
IP_horizon.pp : [ DONE ]
IP_ceilometer.pp : [ DONE ]
Applying IP_postscript.pp
IP_postscript.pp : [ DONE ]
[ DONE ]
Finalizing… [ DONE ]
**** Installation completed successfully ******
Additional information:
* Time synchronization installation was skipped. Please note that unsynchronized time on server instances might be problem for some OpenStack components.
* Did not create a cinder volume group, one already existed
* File /root/keystonerc_admin has been created on OpenStack client host IP. To use the command line tools you need to source the file.
* To access the OpenStack Dashboard browse to http://IP/dashboard.
Please, find your login credentials stored in the keystonerc_admin in your home directory.
* The installation log file is available at: /var/tmp/packstack/20140117-135039-Kk_G3M/openstack-setup.log
* The generated manifests are available at: /var/tmp/packstack/20140117-135039-Kk_G3M/manifests
بعد از نصب موفقیتامیز اوپناستک با آدرس زیر میتوانید به دشبورد Horizon که مرکز کنترل اوپناستک است از طریق مرورگر خود لاگین کنید.
http://192.168.10.100/dashboard
نام کاربری برای لاگین admin و پسورد آن از مسیر /root/keystonerc_admin قابل دسترسی است که به صورت رندم در مرحله آخر نصب توسط packstack ایجاد میشود.
استفاده از پنل مدیریتی OpenStack Horizon را در پستهای آینده توضیح خواهم داد که چگونه میتوان اینستنسها یا همان ماشینهای مجازی را بر روی آن ایجاد کرد و به طور کلی یک محیط ابری را بر پایهی آن ایجاد کرد.
شما اوپناستک را با استفاده از اسکریپت packstack با موفقیت بر روی سنتاواس نصب و راهاندازی کردهاید ولی این همه کار نیست. استفاده از Foreman و سایر ابزارهای مدیریتی برای پیادهسازیهای حرفهای، و حتی پیاده سازی بر روی توزیعهای لینوکس دیگر مثل اوبونتو سرور به کمک MaaS و Juju و همچنین سوزه اینترپرایز سرور و حتی اینکه شما بتوانید این سیستم ابری را به صورت اینترپرایز پیادهسازی کنید و در صورت نیاز آن را Provision کنید مطالعه زیاد و پروژههای عملیاتی زیادی نیاز دارد که پیشنهاد میکنم از همین حالا گوگل کردن در این مورد را شروع کنید و اگر فرصتی بود من هم روی همین وبلاگ در ادامه همین مجموعه پستهای مرتبط با اوپناستک خواهم نوشت.