Dashboard(horizon)服务

horizon没有数据库。使用python-django框架开发的。

安装服务

在控制节点上安装和配置仪表板

yun install openstack-dashboard

修改配置

编辑文件 /etc/openstack-dashboard/local_settings 并完成如下动作:

在 controller 节点上配置仪表盘以使用 OpenStack 服务:

OPENSTACK_HOST = "controller01"

定义openstack的控制节点。可以理解为keystone在那台机器上,那台机器就是控制节点

允许所有主机访问仪表板:

ALLOWED_HOSTS = ['*', ]

这个设置和django的设置有关系,所有的django上都有这个设置

配置 memcached 会话存储服务:

SESSION_ENGINE = 'django.contrib.sessions.backends.cache'
CACHES = {
    'default': {
         'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache',
         'LOCATION': 'controller01:11211',
    }
}

1. session一般存储在服务端,cookie存在浏览器本地;第一次去访问web的时候,就会给你返回一个cookie。下次访问的时候,session就会去判断你这个cookie是否访问过这个web
2. django.contrib.sessions.backends.cache这个就是用后端存储将cache保存起来。
3. BACKEND,定义了加载一个memcahcecache模块
4. 这段配置,最终的目的,就是将session会话存在了memcache里面(官方推荐存储在memcache里面)
5. 这段配置,也可以改用存储在redis里面

启用第3版认证API:

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

1. %s代表这python里面的段位符,对应后面的OPENSTACK_HOST,这个变量又对应着之前配置的信息;这个是非常重要的一个配置
2. 因为dashboard没有配置数据库,所以,官方的做法是根据你的调整重新给你下发新的站点文件,然后删除旧的站点文件。可以从日志/var/log/messages中看到这一段.

可以通过openstack endpoint list这个命令查看keystone的url

[root@controller01 ~]# openstack endpoint list
+----------------------------------+-----------+--------------+--------------+---------+-----------+---------------------------------------------+
| ID                               | Region    | Service Name | Service Type | Enabled | Interface | URL                                         |
+----------------------------------+-----------+--------------+--------------+---------+-----------+---------------------------------------------+
| 30f5364d2dcf4cc4be67c80810c673a4 | RegionOne | glance       | image        | True    | internal  | http://controller01:9292                    |
| 3994cf2e3aa64108908c780ea4f806fa | RegionOne | nova         | compute      | True    | internal  | http://controller01:8774/v2.1/%(tenant_id)s |
| 54dab9489bdd409c9669060a45ef57da | RegionOne | neutron      | network      | True    | internal  | http://controller01:9696                    |
| 6b90f49da12c45798d0132834a6b5597 | RegionOne | nova         | compute      | True    | public    | http://controller01:8774/v2.1/%(tenant_id)s |
| 745d8e46a62d405594154a2a5d5a3689 | RegionOne | keystone     | identity     | True    | admin     | http://controller01:35357/v3                |
| 7fc57af033674b58974a0b02ada2224b | RegionOne | nova         | compute      | True    | admin     | http://controller01:8774/v2.1/%(tenant_id)s |
| 86a037ae5a1c4154a03b6dadbb91910a | RegionOne | keystone     | identity     | True    | internal  | http://controller01:5000/v3                 |
| ac52d68aad6944fe857a5f9fbb8021de | RegionOne | glance       | image        | True    | admin     | http://controller01:9292                    |
| c1f58d7efc744e9a8b17e4f5c2dc0c9a | RegionOne | keystone     | identity     | True    | public    | http://controller01:5000/v3                 |
| c43489adf7d044d5a00160419724ab6c | RegionOne | glance       | image        | True    | public    | http://controller01:9292                    |
| cc48baaa147d431eada1c2411343b911 | RegionOne | neutron      | network      | True    | admin     | http://controller01:9696                    |
| fc583a1b99234c139ff3089347d196c3 | RegionOne | neutron      | network      | True    | public    | http://controller01:9696                    |
+----------------------------------+-----------+--------------+--------------+---------+-----------+---------------------------------------------+
  • 启用对域的支持
OPENSTACK_KEYSTONE_MULTIDOMAIN_SUPPORT = True

openstack_keystone多域的支持

  • 配置API版本:
OPENSTACK_API_VERSIONS = {
    "identity": 3,
    "image": 2,
    "volume": 2,
}
  • 通过仪表盘创建用户时的默认域配置为 default :
OPENSTACK_KEYSTONE_DEFAULT_DOMAIN = "default"
  • 通过仪表盘创建的用户默认角色配置为 user :
OPENSTACK_KEYSTONE_DEFAULT_ROLE = "user"
  • 如果您选择网络参数1(在配置neutron网络时选择的公共网络),禁用支持3层网络服务:
OPENSTACK_NEUTRON_NETWORK = {
    ...
    'enable_router': False,
    'enable_quotas': False,
    'enable_distributed_router': False,
    'enable_ha_router': False,
    'enable_lb': False,
    'enable_firewall': False,
    'enable_vpn': False,
    'enable_fip_topology_check': False,
}

因为没有配合网络选项2,所以这里都配置为禁用

  • 可以选择性地配置时区:
TIME_ZONE = "Asia/Shanghai"

这里改用中国的时区,Asia/Shanghai

使用恰当的时区标识替换TIME_ZONE 。更多信息,参考 list of time zones。

重启web服务器以及会话存储服务:

[root@controller01 ~]# systemctl restart httpd.service memcached.service

验证操作

验证仪表盘的操作。

在浏览器中输入 http://controller01/dashboard访问仪表盘。
如果你没有在本机配置controller01的hosts解析,那你需要用控制节点的ip来访问,例如:http://192.168.137.11/dashboard

解决dashboard启动bug

PS:如果还是打不开,需要对dashboard的httpd配置文件,增加一个参数,WSGIApplicationGroup %{GLOBAL}如下:.

vim /etc/httpd/conf.d/openstack-dashboard.conf
WSGIDaemonProcess dashboard
WSGIProcessGroup dashboard
WSGISocketPrefix run/wsgi
WSGIApplicationGroup %{GLOBAL}#新增在这里。

WSGIScriptAlias /dashboard /usr/share/openstack-dashboard/openstack_dashboard/wsgi/django.wsgi
Alias /dashboard/static /usr/share/openstack-dashboard/static

<Directory /usr/share/openstack-dashboard/openstack_dashboard/wsgi>
  Options All
  AllowOverride All
  Require all granted
</Directory>
<Directory /usr/share/openstack-dashboard/static>
  Options All
  AllowOverride All
  Require all granted
</Directory>

配置修改,记得重启服务。

验证使用 admin 或者demo用户凭证和default域凭证。

openstack 网页500 openstack django_f5