OpenStack Dashboard, hay còn gọi là Horizon, là một giao diện web cho phép quản trị viên và người dùng cuối quản lý các dịch vụ của OpenStack. Nó cho phép người dùng quản lý tài khoản, mạng, ảo hóa và các dịch vụ liên quan đến cloud computing.
Có nhiều lý do để sử dụng OpenStack Dashboard. Một trong những lý do quan trọng nhất là nó giúp quản trị viên và người dùng cuối có thể quản lý hệ thống OpenStack của họ một cách dễ dàng và hiệu quả hơn. Với giao diện trực quan, các tác vụ phức tạp được giảm bớt đáng kể và việc tìm kiếm thông tin cũng được đơn giản hóa.
OpenStack Dashboard hoạt động như một ứng dụng web, chạy trên một máy chủ web như Apache hoặc Nginx. Nó sử dụng API của OpenStack để tương tác với các dịch vụ OpenStack và cung cấp cho người dùng giao diện web để quản lý hệ thống. Bằng cách sử dụng OpenStack Dashboard, người dùng có thể tạo và quản lý máy ảo, mạng và các tài nguyên khác trong hệ thống OpenStack của họ.
Đầu tiên hãy cài openstack-dashboard vào controller node.
apt install openstack-dashboard -y
Các thành phần được cấu hình trong file /etc/openstack-dashboard/local_settings.py của OpenStack Dashboard (Horizon) như sau:
- OPENSTACK_HOST: Địa chỉ IP hoặc tên miền của OpenStack Identity (Keystone) server.
- ALLOWED_HOSTS: Danh sách các host được phép truy cập vào OpenStack Dashboard. Ở đây,
' * '
có nghĩa là cho phép tất cả các host. - OPENSTACK_KEYSTONE_URL: URL của OpenStack Identity service endpoint. Trong trường hợp này, địa chỉ Keystone API endpoint sử dụng phiên bản v3 được xác định là “http://controller/identity/v3“.
- OPENSTACK_KEYSTONE_MULTIDOMAIN_SUPPORT: Xác định liệu Keystone có hỗ trợ việc quản lý domain hay không.
- OPENSTACK_KEYSTONE_DEFAULT_DOMAIN: Domain mặc định được sử dụng cho các tài khoản trong OpenStack. Ở đây, domain mặc định là “Default”.
OPENSTACK_KEYSTONE_DEFAULT_ROLE
: biến này xác định vai trò mặc định của người dùng khi họ đăng nhập vào hệ thống OpenStack. Trong trường hợp này, vai trò được cấu hình làuser
, có nghĩa là mỗi người dùng mới sẽ được gán vai trò người dùng.TIME_ZONE
: biến này được sử dụng để đặt múi giờ cho hệ thống. Trong trường hợp này, múi giờ được đặt là “Asia/Ho_Chi_Minh”, có nghĩa là múi giờ của Việt Nam sẽ được sử dụng trên toàn hệ thống.
OPENSTACK_HOST = "controller"
ALLOWED_HOSTS = ['*']
OPENSTACK_KEYSTONE_URL = "http://%s/identity/v3" % OPENSTACK_HOST
OPENSTACK_KEYSTONE_MULTIDOMAIN_SUPPORT = True
OPENSTACK_KEYSTONE_DEFAULT_DOMAIN = "Default"
OPENSTACK_KEYSTONE_DEFAULT_ROLE = "user"
TIME_ZONE = "Asia/Ho_Chi_Minh"
Note: Nếu Keystone chạy trên cổng 5000, thì ta sẽ thêm cổng đó vào URL bằng cách sử dụng chuỗi "http://%s:5000/identity/v3" % OPENSTACK_HOST
. Khi đó, OPENSTACK_KEYSTONE_URL
sẽ chứa đường dẫn đến Keystone API endpoint với địa chỉ IP hoặc tên miền và cổng của Keystone.
Trong cấu hình của OpenStack Dashboard (Horizon), SESSION_ENGINE được đặt thành ‘django.contrib.sessions.backends.cache’ để lưu trữ phiên của người dùng. Khi người dùng truy cập vào Horizon, phiên sẽ được tạo ra và lưu trữ để giữ cho người dùng đăng nhập đối với các hoạt động tiếp theo.
Để lưu trữ phiên, ta sử dụng CACHES với ‘BACKEND’ được đặt thành ‘django.core.cache.backends.memcached.MemcachedCache’, là một loại cache được sử dụng rộng rãi và hỗ trợ bởi nhiều ứng dụng. Trong ví dụ này, ‘LOCATION’ được đặt thành ‘controller:11211’ để chỉ định rằng Memcached đang chạy trên máy chủ ‘controller’ trên cổng 11211.
Khi người dùng truy cập Horizon, phiên được tạo ra và lưu trữ trong Memcached trên controller, sau đó Horizon có thể truy cập phiên đó để xác thực người dùng và duy trì trạng thái đăng nhập.
Lưu ý: Hãy comment lại tất cả các SESSION_ENGINE còn lại trong file.
SESSION_ENGINE = 'django.contrib.sessions.backends.cache'
CACHES = {
'default': {
'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache',
'LOCATION': 'controller:11211',
}
}
Trong OpenStack Dashboard (Horizon), OPENSTACK_API_VERSIONS
được sử dụng để cấu hình phiên bản API sẽ được sử dụng khi gọi các dịch vụ khác nhau của OpenStack. Biến này là một từ điển (dictionary) có các khóa (keys) là các dịch vụ khác nhau của OpenStack, bao gồm “identity” (OpenStack Identity service – Keystone), “image” (OpenStack Image service – Glance) và “volume” (OpenStack Block Storage service – Cinder), và giá trị tương ứng của các khóa là phiên bản API được sử dụng cho dịch vụ đó.
Trong ví dụ này, phiên bản API sử dụng là 3 cho dịch vụ Identity, phiên bản API 2 cho dịch vụ Image và phiên bản API 3 cho dịch vụ Volume. Việc sử dụng phiên bản API phù hợp giữa các dịch vụ khác nhau của OpenStack là rất quan trọng để đảm bảo tính tương thích và độ tin cậy của hệ thống.
OPENSTACK_API_VERSIONS = {
"identity": 3,
"image": 2,
"volume": 3,
}
OPENSTACK_NEUTRON_NETWORK
là một biến cấu hình trong OpenStack Dashboard (local_settings.py
) dùng để cấu hình tính năng liên quan đến mạng trong OpenStack Neutron.
Nếu bạn chọn tùy chọn mạng 1 (Provider networks), hãy tắt hỗ trợ cho các dịch vụ layer 3:
enable_router
: Cấu hình cho phép hoặc không cho phép sử dụng router trong Neutron. Nếu đặt làTrue
, Neutron sẽ cho phép các máy ảo trên các mạng riêng tư trong OpenStack có thể truy cập mạng bên ngoài.enable_quotas
: Cấu hình cho phép hoặc không cho phép sử dụng tính năng hạn ngạch (quotas) trong Neutron.enable_ipv6
: Cấu hình cho phép hoặc không cho phép sử dụng IPv6 trong Neutron.enable_distributed_router
: Cấu hình cho phép hoặc không cho phép sử dụng router phân tán (distributed router) trong Neutron.enable_ha_router
: Cấu hình cho phép hoặc không cho phép sử dụng router cao khả năng chịu lỗi (highly available router) trong Neutron.enable_fip_topology_check
: Cấu hình cho phép hoặc không cho phép kiểm tra tính hợp lệ của floating IP trên mạng trong Neutron.
OPENSTACK_NEUTRON_NETWORK = {
#...
'enable_router': False,
'enable_quotas': False,
'enable_ipv6': False,
'enable_distributed_router': False,
'enable_ha_router': False,
'enable_fip_topology_check': False,
}
Nếu trong /etc/apache2/conf-available/openstack-dashboard.conf chưa tồn tại WSGIApplicationGroup %{GLOBAL}
thì bạn hãy thêm nó vào. Nó được sử dụng để chỉ định nhóm ứng dụng WSGI của mod_wsgi cho ứng dụng Horizon (OpenStack Dashboard).
Theo mặc định, mod_wsgi sẽ tạo một nhóm ứng dụng WSGI riêng cho mỗi ứng dụng, có thể dẫn đến vấn đề về hiệu suất nếu có nhiều ứng dụng chạy trên cùng một máy chủ. Khi WSGIApplicationGroup
được đặt thành %{GLOBAL}
, tất cả các ứng dụng sử dụng mod_wsgi trên máy chủ đó sẽ chia sẻ cùng một nhóm ứng dụng WSGI, giúp giảm thiểu tài nguyên và cải thiện hiệu suất.
Tuy nhiên, cần lưu ý rằng đặt WSGIApplicationGroup
thành %{GLOBAL}
có thể gây ra lỗi nếu có các ứng dụng sử dụng các phiên bản khác nhau của các thư viện Python hoặc mod_wsgi trên cùng một máy chủ.
WSGIApplicationGroup %{GLOBAL}
Sau đó khởi động lại Apache2.
systemctl reload apache2.service
Verify operation for Ubuntu
Để kiểm tra hoạt động của Dashboard, chúng ta cần truy cập vào Dashboard thông qua một trình duyệt web bằng địa chỉ http://controller/horizon. Nếu cài đặt thành công, Dashboard sẽ được hiển thị trên trình duyệt web.
Sau khi truy cập vào Dashboard, ta cần xác thực bằng tài khoản người dùng admin hoặc demo và các thông tin đăng nhập mặc định của domain. Việc xác thực này đảm bảo rằng người dùng đã được phép truy cập vào các tài nguyên của OpenStack và sử dụng các tính năng của Dashboard một cách an toàn và bảo mật. Nếu thông tin đăng nhập chính xác, ta sẽ được chuyển đến trang chủ của Dashboard, nơi có thể quản lý các dịch vụ của OpenStack.
Phần tiếp theo, chúng ta sẽ khởi chạy 1 instance.