[ English | 한국어 (대한민국) | português (Brasil) | français | español | English (United Kingdom) | русский | 中文 (简体, 中国) | Esperanto | Deutsch | Indonesia | नेपाली ]
设置仪表板的会话存储¶
仪表板使用 Django 会话框架 来处理用户会话数据。但是,您可以使用任何可用的会话后端。您可以通过在 local_settings.py 文件中的 SESSION_ENGINE 设置来定制会话后端。
在架构和实现核心 OpenStack 服务和其他必需的服务之后,结合以下仪表板服务步骤,用户和管理员可以使用 OpenStack 仪表板。有关登录仪表板的更多说明,请参阅 OpenStack 最终用户指南的 OpenStack 用户文档 章节。
以下部分描述了每种选项的优缺点,以及它与部署仪表板的关系。
本地内存缓存¶
本地内存存储是最快速、最简单的会话后端设置,因为它根本没有外部依赖项。它具有以下重大缺点:
进程或工作线程之间没有共享存储。
进程终止后没有持久性。
本地内存后端之所以被 Horizon 默认启用,仅仅是因为它没有依赖项。不建议将其用于生产环境,甚至不建议用于严肃的开发工作。
SESSION_ENGINE = 'django.contrib.sessions.backends.cache'
CACHES = {
'default' : {
'BACKEND': 'django.core.cache.backends.locmem.LocMemCache'
}
}
您可以使用诸如 Memcached 或 Redis 之类的应用程序进行外部缓存。这些应用程序提供持久性和共享存储,对于小型部署和开发非常有用。
Memcached¶
Memcached 是一个高性能的、分布式的内存对象缓存系统,为小块任意数据提供内存键值存储。
需求
Memcached 服务正在运行且可访问。
已安装 Python 模块
python-memcached。
SESSION_ENGINE = 'django.contrib.sessions.backends.cache'
CACHES = {
'default': {
'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache',
'LOCATION': 'my_memcached_host:11211',
}
}
Redis¶
Redis 是一个开源的、BSD 许可的、高级键值存储。它通常被称为数据结构服务器。
需求
Redis 服务正在运行且可访问。
已安装 Python 模块
redis和django-redis。
SESSION_ENGINE = 'django.contrib.sessions.backends.cache'
CACHES = {
"default": {
"BACKEND": "redis_cache.cache.RedisCache",
"LOCATION": "127.0.0.1:6379:1",
"OPTIONS": {
"CLIENT_CLASS": "redis_cache.client.DefaultClient",
}
}
}
初始化和配置数据库¶
基于数据库的会话是可扩展的、持久的,并且可以实现高并发和高可用性。
但是,基于数据库的会话是性能最慢的会话存储之一,并且在重负载下会产生很高的开销。数据库部署的正确配置也可能是一项艰巨的任务,超出了本文档的范围。
启动 MySQL 命令行客户端。
# mysql在提示时输入 MySQL root 用户的密码。
要配置 MySQL 数据库,请创建 dash 数据库。
mysql> CREATE DATABASE dash;为新创建的 dash 数据库创建一个 MySQL 用户,该用户对数据库具有完全控制权。将 DASH_DBPASS 替换为新用户的密码。
mysql> GRANT ALL PRIVILEGES ON dash.* TO 'dash'@'%' IDENTIFIED BY 'DASH_DBPASS'; mysql> GRANT ALL PRIVILEGES ON dash.* TO 'dash'@'localhost' IDENTIFIED BY 'DASH_DBPASS';
在
mysql>提示符下输入quit以退出 MySQL。在
local_settings.py文件中,更改以下选项:SESSION_ENGINE = 'django.contrib.sessions.backends.db' DATABASES = { 'default': { # Database configuration here 'ENGINE': 'django.db.backends.mysql', 'NAME': 'dash', 'USER': 'dash', 'PASSWORD': 'DASH_DBPASS', 'HOST': 'localhost', 'default-character-set': 'utf8' } }
配置
local_settings.py文件后,您可以运行 manage.py migrate 命令来填充新创建的数据库。# /usr/share/openstack-dashboard/manage.py migrate
为了避免在重新启动 Apache 时出现警告,请在仪表板目录中创建一个
blackhole目录,如下所示。# mkdir -p /var/lib/dash/.blackhole
重新启动 Apache 服务。
在 Ubuntu 上,重新启动
nova-api服务,以确保 API 服务器可以连接到仪表板而不会出现错误。# service nova-api restart
缓存数据库¶
为了缓解数据库查询的性能问题,您可以使用 Django cached_db 会话后端,它利用您的数据库和缓存基础设施来执行写通缓存和高效检索。
通过配置数据库和缓存(如前所述)来启用此混合设置。然后,设置以下值:
SESSION_ENGINE = "django.contrib.sessions.backends.cached_db"