1
2
3
4
5
6
7
作者:李晓辉

联系方式:

微信:Lxh_Chat

邮箱:939958092@qq.com

前言

在OpenStack环境中,Horizon是提供Web界面管理功能的关键组件。它允许用户通过浏览器轻松管理云资源,包括虚拟机、网络、存储等。在之前的部署中,我们已经完成了多个核心服务(如Nova、Neutron、Cinder和Manila)的安装与配置。现在,我们将转向Horizon服务的部署,以提供一个直观且功能丰富的用户界面,进一步完善OpenStack云平台的用户体验。

本文将详细介绍如何在OpenStack环境中安装和配置Horizon服务。我们将逐步介绍Horizon服务的安装、配置以及启动过程,确保其能够正常运行并与已部署的服务集成。通过本文的指导,你将能够成功部署Horizon服务,为OpenStack云平台提供一个功能强大的Web管理界面,满足不同用户的管理需求。

Horizon服务概述

Horizon的作用

Horizon是OpenStack的Web界面管理组件,其主要功能包括:

  1. 资源管理:提供虚拟机、网络、存储等云资源的创建、管理和删除功能。

  2. 用户友好:提供直观的Web界面,使用户能够轻松管理云资源,无需直接操作命令行。

  3. 集成与扩展:与OpenStack的其他核心服务(如Nova、Neutron、Cinder等)紧密集成,并支持通过插件扩展功能。

  4. 多租户支持:支持多租户环境,允许不同租户独立管理自己的资源。

  5. 安全与认证:通过Keystone进行用户认证和授权,确保只有授权用户才能访问和管理资源。

Horizon的架构

Horizon服务由以下几个主要组件构成:

  1. Horizon Web界面:提供用户交互的前端界面,基于Django框架构建。

  2. 身份认证服务:通过Keystone进行用户认证和授权。

  3. 后端服务集成:与Nova、Neutron、Cinder等服务进行通信,获取和管理资源信息。

工作原理

Horizon的工作原理可以概括为以下几个步骤:

  1. 用户登录:用户通过Web界面登录Horizon,输入用户名和密码。

  2. 认证与授权:Horizon通过Keystone验证用户身份,并获取用户的权限信息。

  3. 资源管理:用户在Web界面上执行操作,如创建虚拟机、配置网络等。Horizon将这些请求转发给相应的后端服务(如Nova、Neutron)。

  4. 反馈与显示:后端服务处理请求并将结果反馈给Horizon,Horizon将结果显示在Web界面上,供用户查看和进一步操作。

通过以上机制,Horizon服务为用户提供了一个直观、易用且功能强大的Web管理界面,使得OpenStack云平台的管理更加便捷和高效。

安装配置horizon服务

安装相应软件

在控制节点上安装Horizon服务及其依赖的软件包,为Horizon的运行提供必要的支持。

1
yum install openstack-dashboard -y

准备配置文件

/etc/openstack-dashboard/local_settings是horizon的配置文件,根据你的OpenStack版本和需求,编辑该文件以完成以下配置。

搜索以下的参数并修改,如果不存在,就添加

配置OpenStack主机和允许的主机

指定OpenStack控制节点的主机名或IP地址,并允许所有主机访问Horizon。

1
2
OPENSTACK_HOST = "controller"
ALLOWED_HOSTS = ['*'] #这里是允许谁来访问

配置Memcached

配置Horizon使用Memcached作为会话存储后端,以提高性能和响应速度。

  • SESSION_ENGINE:指定会话存储引擎为缓存。

  • CACHES:配置Memcached作为缓存后端,指定Memcached服务器的地址和端口。

根据你的OpenStack版本,选择合适的配置:

这个可能需要添加

bobcat 版本(2023.2)用下面这个

1
2
3
4
5
6
7
8
SESSION_ENGINE = 'django.contrib.sessions.backends.cache'

CACHES = {
'default': {
'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache',
'LOCATION': 'controller:11211',
}
}

caracal 版本(2024.1)以后用下面这个

1
2
3
4
5
6
7
8
SESSION_ENGINE = 'django.contrib.sessions.backends.cache'

CACHES = {
'default': {
'BACKEND': 'django.core.cache.backends.memcached.PyMemcacheCache',
'LOCATION': 'controller:11211',
}
}

配置Keystone API

指定Keystone服务的API URL,用于用户认证和授权。

OPENSTACK_KEYSTONE_URL:指定Keystone服务的API URL,用于用户认证和授权。

1
OPENSTACK_KEYSTONE_URL = "http://%s:5000/identity/v3" % OPENSTACK_HOST

配置Web根目录

指定Horizon的Web根目录,确保Horizon能够正确地提供Web界面。

如果不存在,添加以下配置:

1
WEBROOT = '/dashboard/'

启用多域支持

启用多域支持,允许不同租户独立管理自己的资源。

如果需要多域支持,添加以下配置:

  • OPENSTACK_KEYSTONE_MULTIDOMAIN_SUPPORT:启用多域支持。

  • OPENSTACK_KEYSTONE_DEFAULT_DOMAIN:指定默认域名称。

1
2
OPENSTACK_KEYSTONE_MULTIDOMAIN_SUPPORT = True
OPENSTACK_KEYSTONE_DEFAULT_DOMAIN = "Default"

配置API版本

添加以下配置以指定API版本:

1
2
3
4
5
OPENSTACK_API_VERSIONS = {
"identity": 3,
"image": 2,
"volume": 3,
}

配置默认角色

添加以下配置以指定默认角色:

1
OPENSTACK_KEYSTONE_DEFAULT_ROLE = "user"

配置时区(可选)

根据需要配置时区:

1
TIME_ZONE = "Asia/Shanghai"  # 示例时区

确保Apache配置正确

确保/etc/httpd/conf.d/openstack-dashboard.conf文件中包含以下行:

1
vim /etc/httpd/conf.d/openstack-dashboard.conf

WSGIApplicationGroup:确保WSGI应用运行在全局组中。

1
WSGIApplicationGroup %{GLOBAL}

处理配置文件故障

Horizon的默认配置文件可能存在bug,需要手动修复。将以下相似行修改为:

1
2
WSGIScriptAlias /dashboard /usr/share/openstack-dashboard/openstack_dashboard/wsgi.py
<Directory /usr/share/openstack-dashboard/>
  • WSGIScriptAlias:指定Horizon的WSGI脚本路径。

  • <Directory>:指定Horizon的目录路径。

启动相关服务

重启Apache和Memcached服务,使配置生效。

1
systemctl restart httpd.service memcached.service
  • httpd.service:Apache HTTP服务器,用于提供Horizon的Web界面。

  • memcached.service:Memcached服务,用于缓存会话数据。