本手册介绍在 OpenStack 控制节点上部署和配置 Horizon 的完整过程。Horizon 负责为 OpenStack 提供一个 Web 前端的管理界面。

环境准备
- 开启
VMnet1和VMnet8网卡; - 打开
controller节点的虚拟化功能; - 在 VMWare 中克隆
controller虚拟机,新虚拟机命名为compute; - 打开
controller和compute两台虚拟机(先controller后compute)。
# 在 controller 上执行
bash <(curl -s https://git.seahi.me/seahi/OpenStackScripts/raw/branch/main/env3-7-local-controller.sh) --prepare
# 在 compute 上执行
bash <(curl -s https://git.seahi.me/seahi/OpenStackScripts/raw/branch/main/env3-7-local-compute.sh)
# 在 controller 上执行
bash <(curl -s https://git.seahi.me/seahi/OpenStackScripts/raw/branch/main/env3-7-local-controller.sh) --finalize
一、安装 Horizon 软件包
首先,在控制节点上安装 Horizon 相关的软件包。Horizon 的包名叫 openstack-dashboard。
执行以下命令进行安装:
yum install openstack-dashboard -y
二、修改配置文件
安装完成后,我们需要修改 Horizon 的核心配置文件 /etc/openstack-dashboard/local_settings
打开配置文件后,依次找到并修改以下配置项:
1. 指定控制节点主机名
将 OPENSTACK_HOST 修改为控制节点的主机名:
OPENSTACK_HOST = "controller"
2. 允许所有主机访问
为了能从浏览器访问到 Dashboard,需要允许所有的主机访问:
ALLOWED_HOSTS = ['*']
3. 配置缓存服务 (Memcached)
Horizon 需要使用 Memcached 来存储用户的会话信息(Session)。我们需要配置它连接控制节点上的 Memcached 服务:
SESSION_ENGINE = 'django.contrib.sessions.backends.cache'
CACHES = {
'default': {
'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache',
'LOCATION': 'controller:11211',
}
}
4. 启用 Identity API v3
指定使用 Keystone 的 v3 版本 API 进行身份认证:
OPENSTACK_KEYSTONE_URL = "http://%s:5000/v3" % OPENSTACK_HOST
5. 启用多域支持
OpenStack 支持多域(Domain)管理,开启这个功能:
OPENSTACK_KEYSTONE_MULTIDOMAIN_SUPPORT = True
6. 配置各个组件的 API 版本
明确告诉 Horizon 其他 OpenStack 组件所使用的 API 版本:
OPENSTACK_API_VERSIONS = {
"identity": 3,
"image": 2,
"volume": 2,
}
7. 配置默认用户域
指定通过图形界面创建用户时,默认将用户分配到哪个域。设置为 Default 域:
OPENSTACK_KEYSTONE_DEFAULT_DOMAIN = "Default"
8. 配置默认用户角色
通过 Horizon 将用户加入项目时,需要为用户分配相应的角色。本实验将默认角色设置为 user。
首先,在控制节点上配置管理员环境变量(与部署 Keystone 时相同),然后查看当前已有的角色:
openstack role list
如果列表中没有 user 角色,需要先创建:
openstack role create user
最后,在 /etc/openstack-dashboard/local_settings 文件中,将默认角色修改为 user:
OPENSTACK_KEYSTONE_DEFAULT_ROLE = "user"
这里填写的角色必须已经在 Keystone 中存在。修改默认角色不会改变已有用户的角色,也不会影响之前创建的 admin 管理员账号登录。
9. 配置时区
将时区修改为中国上海时间:
TIME_ZONE = "Asia/Shanghai"
10. 检查 Apache 配置
Horizon 通过 Apache HTTP 服务运行。为了避免部分 Python 扩展库在运行时出现兼容性问题,我们需要检查 Apache 的相关配置。
打开 /etc/httpd/conf.d/openstack-dashboard.conf 文件,检查是否包含以下配置。如果没有,则添加;如果已经存在,则不需要重复添加:
WSGIApplicationGroup %{GLOBAL}
这项配置让 Horizon 使用处理请求的进程中的 Python 主解释器运行。修改后,需要重启 httpd 服务才能生效,具体命令见下一步。
三、重启服务并使其生效
修改完配置文件后,我们需要重启 Web 服务(httpd)和缓存服务(memcached)来让刚刚的配置生效。
执行以下命令重启并查看服务状态:
systemctl restart httpd memcached
systemctl status httpd memcached
四、验证图形界面访问
现在,我们就可以在浏览器中访问 OpenStack 的管理界面了。
打开浏览器,在地址栏输入控制节点的 IP 地址加上 /dashboard 路径,例如:http://控制节点的IP/dashboard。
正常情况下,你会看到如下的登录页面:

如果顺利看到了上面的登录界面,Horizon 部署就完成了!可以使用之前创建的管理员账号(域为 Default,用户名和密码均为 admin)登录体验。
