OpenStack Dashboard

目前我们已经讲解并安装了OpenStack的Keystone、Glance、Nova、Neutron。而且我们已经使用命令成功的创建了一台虚拟机,并且可以进行连接和访问。我相信大家已经迫不及待的想看到OpenStack的DashBoard了。 那么OpenStack的有三种管理方法Horizon、CLI和API。本小节,我们就来部署Horizon。 Horizon是OpenStack的Dashboard,是一个可以让云管理员和用户管理OpenStack各种资源和服务的web接口。Horizon通过OpenStack API和各个组件进行交互。 Dashboard会根据Keystone中注册的Service去显示相应的功能。所以如果你没有安装相应的服务,却再Keystone中做了注册,登陆Dashboard是会报错的。

Horizon部署

需要将Keystone和Hoarizon分开部署,彼此之间有冲突。部署到linux-node2节点上。

  1. 安装Horizon
[root@linux-node2 ~]# yum install -y openstack-dashboard
  1. Horizon配置
[root@linux-node2 ~]# vim /etc/openstack-dashboard/local_settings
#允许所有主机访问
ALLOWED_HOSTS = ['*', ]

#设置Keystone地址
OPENSTACK_HOST = "192.168.56.11"
OPENSTACK_KEYSTONE_URL = "http://%s:5000/v3" % OPENSTACK_HOST

#设置API版本,需要新增
OPENSTACK_API_VERSIONS = {
    "identity": 3,
    "volume": 2,
    "compute": 2,
}
#为通过仪表盘创建的用户配置默认的 user 角色
OPENSTACK_KEYSTONE_DEFAULT_ROLE = "user"
开启多域支持
OPENSTACK_KEYSTONE_MULTIDOMAIN_SUPPORT = True
设置默认的域
OPENSTACK_KEYSTONE_DEFAULT_DOMAIN = 'Default'



#设置Session存储到Memcached
SESSION_ENGINE = 'django.contrib.sessions.backends.cache'
CACHES = {
    'default': {
        'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache',
        'LOCATION': '192.168.56.11:11211',
    }
}

#启用Web界面上修改密码
OPENSTACK_HYPERVISOR_FEATURES = {
    'can_set_mount_point': True,
    'can_set_password': True,
    'requires_keypair': False,
}
#设置时区
TIME_ZONE = "Asia/Shanghai"
#禁用自服务网络的一些高级特性

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,
}
  1. 重新生产Horizon配置文件

如果根据官方文档,和默认安装的配置,访问/dashboard后跳转到/auth/login并且会提示404 Not Found,需要重新生成配置文件

[root@linux-node2 ~]# cd /usr/share/openstack-dashboard
[root@linux-node2 ~]# python manage.py make_web_conf --apache > /etc/httpd/conf.d/openstack-dashboard.conf
  1. 启动服务
[root@linux-node2 ~]# systemctl enable httpd.service
[root@linux-node2 ~]# systemctl restart httpd.service

好的,现在你就可以使用http://192.168.56.11/来访问仪表盘了。用户名和密码可以使用admin或者demo。需要你亲自来体验他们到底有什么不同。

Horizon的Session存储

我们经常在负载均衡的环境下,会遇到Session的问题,一般的解决办法有三种:

  • Session保持
  • Session复制
  • Session共享

Horizon作为一个典型的Django应用,是使用 Django session架构来处理用户的session数据,目前session支持以下几种存储方式:

  • 本地内存缓存
  • 键值对存储(Memcached或者Redis)
  • 数据库存储
  • cookies

通过修改 local_settings 文件的 SESSION_ENGINE 的配置值来自定制session后端

本地内存缓存

本地内存缓存是最快速和最简单的session后端配置方法,因为他不需要处理任何的依赖关系。尽管如此,他也拥有以下明显的缺点:

  • 存储为非共享的,不能跨进程
  • 进程终止后没有持续性。 单一的Horizon安装的默认为本地内存后端,因为他没有依赖性问题。生产环境是不推荐使用这个后端的,甚至在严肃的开发工作中也不推荐。你仍旧可以这样启用:
    SESSION_ENGINE = 'django.contrib.sessions.backends.cache'
    CACHES = {
      'BACKEND': 'django.core.cache.backends.locmem.LocMemCache'
    }
    

键值对存储

你可以使用Memcached 或 Redis 等应用程序作为session的外部缓存机制。这些应用程序为session提供了持久并可以共享的存储,这在小规模或开发环境中的部署中十分有用。

  1. Memcached

Memcached 是一个高性能和分布式的内存对象缓存系统,为小块的任意数据提供进驻内存的键值对的存储。 需求: Memcached服务运行并可以访问。 安装了python-memcached 的 Python 模块 通过下面的方法启用:

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

Redis是一个开源的,BSD许可的,高级键值对存储。他通常被称为数据结构服务器。 需求: Redis服务运行并可以访问 安装了 redis 以及 django-redis 的python模块 通过以下配置方法启用:

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",
        }
    }
}
Copyright © 赵班长@新运维社区 2019 all right reserved,powered by Gitbook该文件修订时间: 2020-02-04 21:35:15

results matching ""

    No results matching ""