OpenStack Rocky版Dashboard部署实战:从零到一的Web管理界面搭建

张开发
2026/4/17 11:19:47 15 分钟阅读

分享文章

OpenStack Rocky版Dashboard部署实战:从零到一的Web管理界面搭建
1. 环境准备与基础安装在开始部署OpenStack Rocky版Dashboard之前我们需要确保基础环境已经就绪。我建议使用一个干净的CentOS 7或Ubuntu 18.04系统作为控制节点这是经过多次验证最稳定的组合。记得先更新系统到最新状态这个步骤看似简单但非常重要我遇到过不少问题都是因为系统包版本不一致导致的。安装基础依赖包是第一步这里有个小技巧可以一次性安装所有需要的软件包避免后续出现依赖问题。执行以下命令yum install -y python-openstackclient openstack-selinux接下来就是安装Dashboard核心组件了。OpenStack的Dashboard服务官方名称是Horizon但在软件包中它被称为openstack-dashboard。这个命名细节新手容易混淆我第一次部署时就因为这个浪费了不少时间。安装命令非常简单yum install openstack-dashboard -y安装完成后系统会自动创建几个关键目录和配置文件。其中最重要的是/etc/openstack-dashboard/local_settings这个文件将决定Dashboard的绝大部分行为。我建议在修改前先做个备份这是我在生产环境中养成的习惯cp /etc/openstack-dashboard/local_settings /etc/openstack-dashboard/local_settings.bak2. 关键配置文件详解配置文件是Dashboard部署中最关键也最容易出错的部分。打开local_settings文件你会看到大量配置项但实际需要修改的主要是以下几部分首先是基础网络配置。OPENSTACK_HOST需要设置为你的控制节点主机名或IP地址。这里有个坑要注意如果使用主机名必须确保DNS解析正常或者已经配置了hosts文件。我遇到过因为DNS解析问题导致Dashboard无法连接后端服务的案例。OPENSTACK_HOST controller ALLOWED_HOSTS [*] # 生产环境建议改为具体IP或域名会话存储配置直接影响用户登录体验。Memcached是最常用的方案配置时要注意LOCATION参数需要与你的Memcached服务地址一致。如果Memcached运行在其他节点这里需要相应调整。SESSION_ENGINE django.contrib.sessions.backends.cache CACHES { default: { BACKEND: django.core.cache.backends.memcached.MemcachedCache, LOCATION: controller:11211, } }Keystone认证配置是另一个重点。v3版本的API现在已经是标准配置同时建议开启多域支持即使你现在只需要一个域。这样未来扩展时会方便很多。OPENSTACK_KEYSTONE_URL http://%s:5000/v3 % OPENSTACK_HOST OPENSTACK_KEYSTONE_MULTIDOMAIN_SUPPORT True OPENSTACK_KEYSTONE_DEFAULT_DOMAIN Default OPENSTACK_KEYSTONE_DEFAULT_ROLE user3. 服务优化与安全加固基础配置完成后我们还需要进行一些优化和安全加固。首先是时区设置这个看似简单但很重要否则日志时间对不上会很麻烦TIME_ZONE Asia/Shanghai接下来需要修改Apache的配置文件。这个步骤很多教程会忽略但实际非常重要。添加WSGIApplicationGroup %{GLOBAL}可以解决一些Python模块加载问题vim /etc/httpd/conf.d/openstack-dashboard.conf在文件中添加WSGIApplicationGroup %{GLOBAL}安全方面我强烈建议修改ALLOWED_HOSTS为具体的IP或域名而不是使用通配符。同时应该配置HTTPS访问虽然这需要额外的证书配置但对于生产环境是必须的。# 生产环境推荐配置 ALLOWED_HOSTS [dashboard.yourdomain.com, 192.168.1.10]4. 服务启动与验证配置完成后就可以启动服务了。这里有个顺序问题要注意先启动memcached再重启httpd服务。我遇到过因为顺序不对导致会话无法保存的问题。systemctl restart memcached.service systemctl restart httpd.service验证服务是否正常运行有几个方法检查端口是否监听netstat -tulnp | grep 80查看日志是否有错误tail -f /var/log/httpd/error_log直接访问Dashboard页面http://controller-ip/dashboard第一次登录时使用你的Keystone管理员账号。如果登录后看到空白页面或者部分组件不显示通常是权限问题检查local_settings中的角色配置是否正确。5. 常见问题排查在实际部署中我遇到过几个典型问题这里分享下解决方案问题1登录后空白页面这通常是因为SESSION_ENGINE配置不正确或者memcached服务没有正常运行。检查memcached是否监听11211端口以及local_settings中的缓存配置是否正确。问题2无法连接到Keystone检查OPENSTACK_KEYSTONE_URL的地址和端口是否正确同时确保控制节点的5000端口可以访问。可以用curl测试curl -v http://controller:5000/v3问题3页面加载缓慢这可能是因为静态文件没有正确收集。运行以下命令重新收集静态文件django-admin collectstatic --clear --noinput django-admin compress --force问题4某些功能模块不显示检查OPENSTACK_API_VERSIONS配置是否正确确保各服务的API版本与你的OpenStack版本匹配。同时确认用户角色是否具有相应权限。6. 高级配置与定制基础功能正常运行后你可能还需要一些高级配置。比如多区域支持AVAILABLE_REGIONS [ (http://controller:5000/v3, RegionOne), (http://secondary-controller:5000/v3, RegionTwo), ]主题定制也是常见需求。Horizon支持自定义CSS你可以创建自己的主题mkdir -p /usr/share/openstack-dashboard/static/themes/mytheme cp -r /usr/share/openstack-dashboard/static/dashboard/* /usr/share/openstack-dashboard/static/themes/mytheme/然后在local_settings中启用主题AVAILABLE_THEMES [ (default, Default, themes/default), (mytheme, My Theme, themes/mytheme), ] DEFAULT_THEME mytheme对于大规模部署你可能需要调整一些性能参数。比如增加工作进程数# 在/etc/httpd/conf.d/openstack-dashboard.conf中 WSGIDaemonProcess dashboard processes4 threads107. 日常维护与监控Dashboard部署完成后日常维护也很重要。我建议定期检查以下几个方面日志监控Dashboard的日志位于/var/log/httpd/可以设置日志轮转防止磁盘占满。性能监控使用top或htop查看httpd进程的资源使用情况。定期更新安全更新发布后及时更新Dashboard软件包。备份配置每次修改配置前都备份local_settings文件。对于生产环境建议配置监控系统对Dashboard进行健康检查比如定期访问登录页面检查返回状态码。可以使用简单的curl命令测试curl -I http://localhost/dashboard | grep HTTP如果返回200状态码说明服务正常运行。其他状态码则需要进一步检查。

更多文章