Part 7 - 安装 Dashboard(Horizon)

2021-03-06
5分钟阅读时长

【版本】

当前版本号v20230313

版本修改说明
v20230313增加后台进程(服务)说明
v20230310更新了常见问题
v20230308更新系统信息截图
v20220304修复Unable to create a new session key,Openstack的一个bug。参考https://chowdera.com/2021/07/20210721114330164T.html
v20220301学号后4位修改为学号后3位
v20220208修正相关步骤
v20210310修改步骤14,提醒注意}符号的结束位置
v20210309修改步骤19,去掉重启memcached命令
v20210304初始化版本

【实验名称】

云计算部署实战 Part 7 - 安装 Dashboard(Horizon)

【实验目的】

  • 掌握搭建 Openstack Dashboard(Horizon) 组件

【实验环境】

  • 内存:至少4G
  • 硬盘:至少空余40G
  • 操作系统: 64位 Windows系统。

【实验资源】

  • FinalShell
  • CentOS 7 系统镜像
  • VirtualBox
  • Openstack 源

【实验步骤】

  1. 使用 root 用户登录控制节点(Controller)。输出 Hostname ,确认所在节点是计算节点。
hostname

结果:

controller+你的学号后3位
注意以下步骤在控制节点(Controller)上执行!

安装 Dashboard

  1. 安装 Dashboard。
yum install -y openstack-dashboard

备份和编辑 Dashboard 配置文件 local_settings

  1. 备份Dashboard 配置文件,并进行编辑。
cp /etc/openstack-dashboard/local_settings /etc/openstack-dashboard/local_settings.bak
vim /etc/openstack-dashboard/local_settings
  1. 按下esc键,进入 Vim 的命令模式。

  2. 启用 Vim 的显示行数。

:set nu
  1. local_settings 配置文件中找到OPENSTACK_HOST(约在158行),配置 Openstack 控制节点 主机名,注意替换为你的学号。
OPENSTACK_HOST = "controller+你的学号后3位"
  1. local_settings 配置文件中找到ALLOWED_HOSTS(约在30行),配置为允许所有主机访问 Dashboard。
ALLOWED_HOSTS = ['*', ]
  1. local_settings 配置文件中找到CACHES(约在135行),配置 memcached 会话存储服务。注意替换为你的学号。
SESSION_ENGINE = 'django.contrib.sessions.backends.cache'

CACHES = {
  'default': {
     'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache',
     'LOCATION': 'controller+你的学号后3位:11211',
  }
}
  1. local_settings 配置文件中找到OPENSTACK_KEYSTONE_URL(约在159行),启用第3版认证API。
OPENSTACK_KEYSTONE_URL = "http://%s:5000/v3" % OPENSTACK_HOST
  1. local_settings 配置文件中找到OPENSTACK_KEYSTONE_MULTIDOMAIN_SUPPORT(约在64行),去掉注释的#号,并启用对域的支持。
OPENSTACK_KEYSTONE_MULTIDOMAIN_SUPPORT = True
  1. local_settings 配置文件中找到OPENSTACK_API_VERSIONS(约在55行),配置API版本,去掉注释的#号。
OPENSTACK_API_VERSIONS = {
     "data-processing": 1.1,
     "identity": 3,
     "image":2,
     "volume": 2,
     "compute": 2,
 }
  1. local_settings配置文件中找到OPENSTACK_KEYSTONE_DEFAULT_DOMAIN(约在72行),去掉注释的#号,通过仪表盘创建用户时的默认域配置为 default。
OPENSTACK_KEYSTONE_DEFAULT_DOMAIN = 'default'
  1. local_settings配置文件中找到OPENSTACK_KEYSTONE_DEFAULT_ROLE(约在160行),通过仪表盘创建的用户默认角色配置为 user。
OPENSTACK_KEYSTONE_DEFAULT_ROLE = "user"
  1. local_settings 配置文件中找到OPENSTACK_NEUTRON_NETWORK(约在260行),禁用支持3层网络服务。注意代码中的…表示省略了部分不需要代码。此段代码需要注意{}符号的结束位置。
OPENSTACK_NEUTRON_NETWORK = {
    'enable_router': False,
    'enable_quotas': False,
    'enable_ipv6': True,
    'enable_distributed_router': False,
    'enable_ha_router': False,
    'enable_lb': False,
    'enable_firewall': False,
    'enable_vpn': False,
    'enable_fip_topology_check': False,
	#以下部分不需要修改,所以省略
  1. local_settings 配置文件中找到TIME_ZONE,修改时区为重庆时间。
TIME_ZONE = "Asia/Chongqing"
  1. 保存local_settings配置文件。

编辑 Apache 的配置文件

  1. 编辑 Apache 的配置文件。
vim /etc/httpd/conf.d/openstack-dashboard.conf
  1. 配置文件第1行加入以下代码。
WSGIApplicationGroup %{GLOBAL}
  1. 重启 Apache。
systemctl enable httpd.service
systemctl restart httpd.service

控制节点验证

  1. 打开宿主机浏览器,访问 http://10.0.0.11/dashboard。第一次访问加载时间会比较长。

  2. 使用在 Part3 创建的 admin 账户登录。

域(Domain):default 用户名:admin 密码:ADMIN_PASS

  1. 查看系统信息,各项服务是否启用

【思考和探索】

  1. 在使用vi或vim过程中,如何直接使用命令跳转到某行?

【常见错误解决办法】

1. 登录 Dashboard(Horizon) Web界面提示身份验证令牌已经过期

请使用 date -s 命令校准控制节点和计算节点的时间。或者参考Part1步骤55,通过宿主机同步时间来进行校准。

2. 登录 Dashboard(Horizon) 提示无法连接 Keystone

请检查计算节点下 /var/log/httpd/error_log 查看具体信息进行诊断。可能原因有:

  1. 计算节点访问不了控制节点的 Keystone Endpoint(端口5000和35357)
  2. 控制节点关于 Keystone 的 service 或 endpoint 配置重复或错误。

3. 登录 Dashboard(Horizon) 的页面没有显示域(Domain)

local_settings配置文件中找到OPENSTACK_KEYSTONE_DEFAULT_DOMAIN(约在72行),去掉注释的#号,通过仪表盘创建用户时的默认域配置为 default。

OPENSTACK_KEYSTONE_DEFAULT_DOMAIN = 'default'

4. 使用 admin 账号登录 Dashboard(Horizon) 的页面显示“凭据无效”

  1. 首先检查 openstack 中关于 keystone 的endpoint是否有问题。
source /etc/keystone/admin-openrc
openstack endpoint list|grep -E 'ID|keystone'

可以看到类似以下结果(其中XXX是你学号后3位):

| Service Name | Service Type | Interface | URL                          |
| keystone     | identity     | admin     | http://controllerXXX:35357/v3|
| keystone     | identity     | public    | http://controllerXXX:5000/v3 |
| keystone     | identity     | internal  | http://controllerXXX:5000/v3 |
  1. 检查是否能够查看 keystone 的 token,
source /etc/keystone/admin-openrc
openstack token issue

类似结果:

+------------+-------------------------------------------------+
| Field      | Value                                           |
+------------+-------------------------------------------------+
| expires    | 2021-03-24T08:27:30.000000Z                     |
| id         | gAAAAABgWunifA_DeD3mcJMerIIFLqXy7tajYuAmAVvM1pM |
|            | 9yTeRaM5gXVDImlqbrivC1IwtpxtJR2Gq6EHMJ1iSZ10iRa |
|            | dJzqZWYjoWLha-bSlbqb3y0Iyzo-                    |
|            | liAC02tVsiv6ZPge4KXndvwxTk79_dkw--              |
|            | zvXUlKmM5SY68n2eQZttddTcPSQ                     |
| project_id | 70667e2a19c640b796c9e2de6571a33c                |
| user_id    | 5b74a6845f264ae9912b78d4a32f5f73                |
+------------+-------------------------------------------------+
  1. 打开local_settings 配置文件,在OPENSTACK_API_VERSIONS(约在55行)检查配置。
vim /etc/openstack-dashboard/local_settings

配置如下:

OPENSTACK_API_VERSIONS = {
     "data-processing": 1.1,
     "identity": 3,
     "image":2,
     "volume": 2,
     "compute": 2,
 }