فصل14: کامپوننت Horizon
کاموپننت Horizon
کامپوننت Horizon در واقع یک dashboard گرافیکی مبتنی بر وب است که جهت مدیریت و پیکربندی سایر کامپوننتهای OpenStack از این اینترفیس استفاده میشود. برای اولین بار استفاده از این رابط گرافیکی برای کاربران OpenStack در مقایسه با استفاده از خط فرمان CLI سادهتر است. هر چند که Horizon دسترسی به حدود 70 تا 80 درصد از عملکردهای OpenStack و کامپوننتهای آن را از طریق اینترفیس خود در شما قرار میدهد، اما همین درصد هم باعث خواهد شد تا شما مجبور به استفاده از رابط خط فرمان CLI نباشید.
در واقع OpenStack Dashboard پروژهای است که با استفاده از زبان برنامهنویسی Python نوشته شده است. هدف Horizon پشتیبانی از تمامی کامپوننتها زیربنایی و هسته OpenStack است. حداقل سرویسهای OpenStack که در یک زیرساخت Cloud به آنها نیاز خواهیم داشت: Keystone، Nova، Neutron و Glance هستند که با نام OpenStack Core Services یا سرویسهای هسته OpenStack هم شناخته میشوند و شما میتوانید این سرویسها را به راحتی توسط رابط گرافیکی و پرتال Horizon مدیریت و کنترل نمایید. علاوه بر این شما میتوانید مدیریت و کنترل سایر سرویسها همچون: Cinder، Swift، Heat، Ceilometer، Sahara و Trove را نیز از طریق Horizon انجام دهید.
اما OpenStack Dashboard بر روی یک وب سرور اجرا شده که معمولاً از وب سرورهای Apache و Nginx برای این منظور استفاده میشود. در محیطهای large-scale پیشنهاد میشود که از یک لایه caching در جلوی Horizon برای مثال memcached daemon استفاده نمایید.
اما جهت استفاده از رابط گرافیکی و مدیریتی Horizon نیاز دارید از یک مرورگر وب که از JavaScript و HTML5 پشتیبانی میکند، استفاده نمایید. همچنین در صورتیکه نیاز داشته باشید تا قابلیت SSL را برای پشتیبانی از Dashboard خود فعال کنید، میتوانید این کار را با استفاده از ابزار نصب packstack انجام دهید. برای این منظور میبایست گزینه CONFIG_HORIZON_SSL=y را در answer file برابر مقدار y قرار دهید.
جهت دسترسی به رابط گارفیکی Horizon کافیست تا پس از نصب و پیکربندی آن آدرس سرور یا نام آن را با استفاده پورت 80 یا 443 در صورتیکه قابلیت SSL را فعال کرده باشید، وارد نمایید. شما میتوانید Horizon را بر روی یک control node یا یک سرور مجزا نصب نمایید. شکل 1-14 شمایی از منوهای رابط گرافیکی OpenStack Horizon را نمایش میدهد.
کاموپننت Horizon
کامپوننت Horizon در واقع یک dashboard گرافیکی مبتنی بر وب است که جهت مدیریت و پیکربندی سایر کامپوننتهای OpenStack از این اینترفیس استفاده میشود. برای اولین بار استفاده از این رابط گرافیکی برای کاربران OpenStack در مقایسه با استفاده از خط فرمان CLI سادهتر است. هر چند که Horizon دسترسی به حدود 70 تا 80 درصد از عملکردهای OpenStack و کامپوننتهای آن را از طریق اینترفیس خود در شما قرار میدهد، اما همین درصد هم باعث خواهد شد تا شما مجبور به استفاده از رابط خط فرمان CLI نباشید.
در واقع OpenStack Dashboard پروژهای است که با استفاده از زبان برنامهنویسی Python نوشته شده است. هدف Horizon پشتیبانی از تمامی کامپوننتها زیربنایی و هسته OpenStack است. حداقل سرویسهای OpenStack که در یک زیرساخت Cloud به آنها نیاز خواهیم داشت: Keystone، Nova، Neutron و Glance هستند که با نام OpenStack Core Services یا سرویسهای هسته OpenStack هم شناخته میشوند و شما میتوانید این سرویسها را به راحتی توسط رابط گرافیکی و پرتال Horizon مدیریت و کنترل نمایید. علاوه بر این شما میتوانید مدیریت و کنترل سایر سرویسها همچون: Cinder، Swift، Heat، Ceilometer، Sahara و Trove را نیز از طریق Horizon انجام دهید.
اما OpenStack Dashboard بر روی یک وب سرور اجرا شده که معمولاً از وب سرورهای Apache و Nginx برای این منظور استفاده میشود. در محیطهای large-scale پیشنهاد میشود که از یک لایه caching در جلوی Horizon برای مثال memcached daemon استفاده نمایید.
اما جهت استفاده از رابط گرافیکی و مدیریتی Horizon نیاز دارید از یک مرورگر وب که از JavaScript و HTML5 پشتیبانی میکند، استفاده نمایید. همچنین در صورتیکه نیاز داشته باشید تا قابلیت SSL را برای پشتیبانی از Dashboard خود فعال کنید، میتوانید این کار را با استفاده از ابزار نصب packstack انجام دهید. برای این منظور میبایست گزینه CONFIG_HORIZON_SSL=y را در answer file برابر مقدار y قرار دهید.
جهت دسترسی به رابط گارفیکی Horizon کافیست تا پس از نصب و پیکربندی آن آدرس سرور یا نام آن را با استفاده پورت 80 یا 443 در صورتیکه قابلیت SSL را فعال کرده باشید، وارد نمایید. شما میتوانید Horizon را بر روی یک control node یا یک سرور مجزا نصب نمایید. شکل 1-14 شمایی از منوهای رابط گرافیکی OpenStack Horizon را نمایش میدهد.
توجه کنید که فایل اصلی پیکربندی OpenStack Dashboard، /etc/openstack-dashboard/local_settings است که دارای گزینههای مختلفی جهت پیکربندی است، اما مهمترین بخش آن خط زیر است که IP آدرس Keystone server را مشخص میکند.
OPENSTACK_HOST = "10.0.2.15"
گزینه مهم دیگر، گزینه زیر میباشد که از آن جهت تعریف session timeout برحسب ثانیه برای اینترفیس گرافیکی Horizon استفاده میشود:
SESSION_TIMEOUT=3600
OPENSTACK_HOST = "10.0.2.15"
گزینه مهم دیگر، گزینه زیر میباشد که از آن جهت تعریف session timeout برحسب ثانیه برای اینترفیس گرافیکی Horizon استفاده میشود:
SESSION_TIMEOUT=3600
پیکربندی Horizon
جهت پیکربندی Horizon یا OpenStack Dashboard Service همانطور که پیشتر اشاره شد میتوان آن را بر روی یک Control Node (به عنوان مثال همان Nodeی که پیشتر پایگاه داده MariaDB، کامپوننتهای Keystone، Glance و Nova و همچنین سرویسهای Memcached، httpd و RabbitMQ را بر روی آن نصب کردهایم) یا بر روی یک سرور مجزا نصب نماییم. در اینجا من قصد دارم کامپوننت Horizon خود را بر روی سروری که پیشتر سایر کامپوننتها را بر روی آن نصب و راهاندازی کرده بودم، نصب و پیکربندی نمایم.
جهت پیکربندی Horizon یا OpenStack Dashboard Service همانطور که پیشتر اشاره شد میتوان آن را بر روی یک Control Node (به عنوان مثال همان Nodeی که پیشتر پایگاه داده MariaDB، کامپوننتهای Keystone، Glance و Nova و همچنین سرویسهای Memcached، httpd و RabbitMQ را بر روی آن نصب کردهایم) یا بر روی یک سرور مجزا نصب نماییم. در اینجا من قصد دارم کامپوننت Horizon خود را بر روی سروری که پیشتر سایر کامپوننتها را بر روی آن نصب و راهاندازی کرده بودم، نصب و پیکربندی نمایم.
برای این منظور، ابتدا جهت نصب کامپوننت Horizon، با فرض اینکه پیشتر repositoryهای EPEL و Ocata را بر روی سرور خود نصب داریم، دستور زیر را اجرا میکنیم:
# yum —enablerepo=centos-openstack-ocata,epel -y install openstack-dashboard
# yum —enablerepo=centos-openstack-ocata,epel -y install openstack-dashboard
در ادامه میبایست به پیکربندی کامپوننت Horizon بپردازیم. بنابراین فایل پیکربندی آن را توسط ویرایشگر متنی vi باز کرده:
# vi /etc/openstack-dashboard/local_settings
و بعد پیکربندیهای زیرا به ترتیب انجام میدهیم:
• در خط 28، نام سروری که Horizon بر روی آن نصب خواهد شد یا Dashboard Host را مشخص میکنیم:
ALLOWED_HOSTS = ['dlp.srv.world', 'localhost']
• خط 54 را همانند زیر از حالت comment خارج کنید:
OPENSTACK_API_VERSIONS = {
# "data-processing": 1.1,
"identity": 3,
"volume": 2,
"compute": 2,
}
• خط 65 را نیز ابتدا از حالت comment خارج کرده و سپس مقدار آن را به True تغییر دهید:
OPENSTACK_KEYSTONE_MULTIDOMAIN_SUPPORT = True
• خط 73 را تنها از حالت comment خارج نمایید:
OPENSTACK_KEYSTONE_DEFAULT_DOMAIN = 'Default'
• در خطوط 138 و 139 میبایست تغییرات و اضافه کردن Memcache server را بصورت زیر انجام دهید:
CACHES = {
'default': {
'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache',
'LOCATION': '10.0.0.30:11211',
},
}
• در خطوط 161 تا 163 تیز تغییرات زیر را انجام دهید:
OPENSTACK_HOST = "10.0.0.30"
OPENSTACK_KEYSTONE_URL = "https://%s:5000/v3" % OPENSTACK_HOST
OPENSTACK_KEYSTONE_DEFAULT_ROLE = "user"
در نهایت فایل پیکربندی مزبور را ذخیره کرده و از آن خارج شوید. سپس توسط دستور زیر سرویسهای httpd و memcached را یکبار restart نموده تا تغییرات و پیکربندیهای انجام شده اعمال شوند:
# systemctl restart httpd memcached
# vi /etc/openstack-dashboard/local_settings
و بعد پیکربندیهای زیرا به ترتیب انجام میدهیم:
• در خط 28، نام سروری که Horizon بر روی آن نصب خواهد شد یا Dashboard Host را مشخص میکنیم:
ALLOWED_HOSTS = ['dlp.srv.world', 'localhost']
• خط 54 را همانند زیر از حالت comment خارج کنید:
OPENSTACK_API_VERSIONS = {
# "data-processing": 1.1,
"identity": 3,
"volume": 2,
"compute": 2,
}
• خط 65 را نیز ابتدا از حالت comment خارج کرده و سپس مقدار آن را به True تغییر دهید:
OPENSTACK_KEYSTONE_MULTIDOMAIN_SUPPORT = True
• خط 73 را تنها از حالت comment خارج نمایید:
OPENSTACK_KEYSTONE_DEFAULT_DOMAIN = 'Default'
• در خطوط 138 و 139 میبایست تغییرات و اضافه کردن Memcache server را بصورت زیر انجام دهید:
CACHES = {
'default': {
'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache',
'LOCATION': '10.0.0.30:11211',
},
}
• در خطوط 161 تا 163 تیز تغییرات زیر را انجام دهید:
OPENSTACK_HOST = "10.0.0.30"
OPENSTACK_KEYSTONE_URL = "https://%s:5000/v3" % OPENSTACK_HOST
OPENSTACK_KEYSTONE_DEFAULT_ROLE = "user"
در نهایت فایل پیکربندی مزبور را ذخیره کرده و از آن خارج شوید. سپس توسط دستور زیر سرویسهای httpd و memcached را یکبار restart نموده تا تغییرات و پیکربندیهای انجام شده اعمال شوند:
# systemctl restart httpd memcached
در ادامه در صورتیکه سرویس SELinux بر روی سرور شما فعال است، تنظیمات boolean زیر را انجام دهید:
# setsebool -P httpd_can_network_connect on
# setsebool -P httpd_can_network_connect on
همچنین در صورتیکه فایروال Firewalld بر روی سرور شما در حال اجراست، به سرویسهای http و https اجازه دسترسی دهید:
# firewall-cmd —add-service={http,https} —permanent
# firewall-cmd —reload
# firewall-cmd —add-service={http,https} —permanent
# firewall-cmd —reload
حال جهت دسترسی به رابط گرافیکی Horizon کافیست یک مرورگر وب را بر روی کلاینت راهدور خود در شبکهتان باز کرده و سپس آدرس URL زیر را در نوار آدرس آن وارد نمایید:
https://(server's hostname or IP address)/dashboard/
بعد از دسترسی به رابط گرافیکی Horizon، پنجره Login آن همانند شکل 7-14 برای شما به نمایش در خواهد آمد. در این مرحله میبایست در کادرهای User Name و Password، نام کاربری و کلمه عبوری را که برای keystone bootstrap پیشتر تنظیم نمودهاید را وارد کرده و سپس بر روی دکمه Connect کلیک کنید.
https://(server's hostname or IP address)/dashboard/
بعد از دسترسی به رابط گرافیکی Horizon، پنجره Login آن همانند شکل 7-14 برای شما به نمایش در خواهد آمد. در این مرحله میبایست در کادرهای User Name و Password، نام کاربری و کلمه عبوری را که برای keystone bootstrap پیشتر تنظیم نمودهاید را وارد کرده و سپس بر روی دکمه Connect کلیک کنید.
اگر پروسه Login بصورت نرمال صورت گیرد، پنجره شکل 8-14 برای شما به نمایش در خواهد آمد که شما میتوانید با استفاده از این Dashboard به کنترل OpenStack خود بپردازید.
حال جهت دسترسی به یک instance کافیست تا از منوی سمت چپ پنجره Horizon بر روی گزینه Instances کلیک کنید تا لیست instanceها در پنل سمت راست نمایش داده شود. سپس بر روی نام instance خود جهت دسترسی به آن کلیک کنید.