云计算管理平台之OpenStack Web管理工具dashboard

  在上一篇博客中,我们成功的基于两种网络启动虚拟机;这意味着openstack的核心服务都搭建完成,并正常运行着;有关启动虚拟机实例请参考上一篇博客;今天我们来了解下,基于一个web界面图形工具来管理openstack上的虚拟机;

  openstack是iaas(Infrastructure as a Service)服务模型,所谓iaas指基础设施及服务;它的意思就是把基础设施用服务的方式通过网络对外提供;比如,我们要10台虚拟机;我们可以在openstack的web界面上点点鼠标就能给我们启动10台虚拟机,至于这些虚拟机在哪里,怎么启动的我们不用关心;我们只需要关心我们期望的10台虚拟机是不是能够正常使用,是不是我们期望的配置,网络是不是通畅;简单点讲iaas就是把基础设施以服务的方式对外提供,对用户来讲,它隐藏了基础设施的构建过程;常用的还有其他服务模型,比如saas,paas,lbaas,fwaas等等,这些都是在讲把什么抽象成服务的形式对外提供;这些服务模型的出现,大大简化了传统从底层开始构建的复杂过程;

  在上一篇博客我们主要聊了下在命令行通过命令的方式在openstack环境上启动虚拟机,通常这种方式不太适合对普通用户使用;为了让openstack易用,我们得给openstack提供一个图形界面,以实现方便任何人使用;dashboard是openstack环境中提供web界面的服务,其项目名称叫horizon,主要作用就是提供一个web管理界面,方便用户管理运行在openstack之上的虚拟机;

  1、dashboard服务的安装配置

  环境说明,dashboard这个服务可以运行在控制节点,也可以运行在其他一个单独的节点上,但是运行在单独的一个节点上,请提前配置好yum仓库,时间同步,以及主机名解析等等;有关基础环境的配置,请参考//www.cnblogs.com/qiuhom-1874/p/13886693.html;我这里用一台独立的服务安装dashboard服务;

  安装dashboard

[root@node04 ~]# yum install openstack-dashboard -y

  编辑/etc/openstack-dashboard/local_settings配置文件,配置OPENSTACK_HOST地址

OPENSTACK_HOST = "controller"

  提示:这里可以是主机名,可以是ip地址,默认是127.0.0.1;如果配置主机名,请提前对主机名做名称解析;

  配置任何主机都允许访问dashboard服务

ALLOWED_HOSTS = ['*', ]

  提示:*表示通配所有主机;

  配置存储session的服务为memcached,并配置memcached的地址

SESSION_ENGINE = 'django.contrib.sessions.backends.cache'

CACHES = {
    'default': {
         'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache',
         'LOCATION': 'controller:11211',
    }
}

  提示:配置了memcached作为session存储服务器,下面默认的CACHES配置就要全部注释;

  启用Identity API版本3

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

  提示:上面红框中的配置表示把%s替换成OPENSTACK_HOST这个变量的值;也就是说OPENSTACK_KEYSTONE_URL = “//controller:5000/v3”

  启用对域的支持

OPENSTACK_KEYSTONE_MULTIDOMAIN_SUPPORT = True

  配置API版本

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

  配置default域为用户的默认域

OPENSTACK_KEYSTONE_DEFAULT_DOMAIN = "Default"

  配置创建用户的角色默认为user角色

OPENSTACK_KEYSTONE_DEFAULT_ROLE = "user"

  配置网络相关参数,如果openstack中的neutron服务配置的的是provider network ,需要禁用对三层网络的支持,如果是self-service network保持默认即可

  默认配置是

  如果选用的是provider network这种网络模型,配置是

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,

  配置时区

TIME_ZONE = "Asia/Shanghai"

  在/etc/httpd/conf.d/openstack-dashboard.conf配置文件导入以下配置

WSGIApplicationGroup %{GLOBAL}

  启动httpd服务,并将其设置为开机启动

  提示:以上启动httpd没有成功的原因是在node04上没有安装连接memcache的驱动,所以导致启动httpd时连接memcached找不到模块;

  安装连接memcached驱动

[root@node04 ~]# yum install python-memcached
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 * base: mirrors.aliyun.com
 * centos-qemu-ev: mirror.bit.edu.cn
 * extras: mirrors.aliyun.com
 * updates: mirrors.aliyun.com
Resolving Dependencies
--> Running transaction check
---> Package python-memcached.noarch 0:1.58-1.el7 will be installed
--> Finished Dependency Resolution

Dependencies Resolved

========================================================================================================================
 Package                       Arch                Version                    Repository                           Size
========================================================================================================================
Installing:
 python-memcached              noarch              1.58-1.el7                 centos-openstack-rocky               38 k

Transaction Summary
========================================================================================================================
Install  1 Package

Total download size: 38 k
Installed size: 123 k
Is this ok [y/d/N]: y
Downloading packages:
python-memcached-1.58-1.el7.noarch.rpm                                                           |  38 kB  00:00:00     
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  Installing : python-memcached-1.58-1.el7.noarch                                                                   1/1 
  Verifying  : python-memcached-1.58-1.el7.noarch                                                                   1/1 

Installed:
  python-memcached.noarch 0:1.58-1.el7                                                                                  

Complete!
[root@node04 ~]# 

  再次启动httpd,看看是否能够起来?

[root@node04 ~]# systemctl start httpd
[root@node04 ~]# ss -ntl
State      Recv-Q Send-Q               Local Address:Port                              Peer Address:Port              
LISTEN     0      128                              *:22                                           *:*                  
LISTEN     0      100                      127.0.0.1:25                                           *:*                  
LISTEN     0      128                             :::80                                          :::*                  
LISTEN     0      128                             :::22                                          :::*                  
LISTEN     0      100                            ::1:25                                          :::*                  
[root@node04 ~]# systemctl enable httpd.service 
Created symlink from /etc/systemd/system/multi-user.target.wants/httpd.service to /usr/lib/systemd/system/httpd.service.
[root@node04 ~]# 

  用浏览器访问httpd所在服务器ip地址+/dashboard,看看是否能够访问到dashboard?

  用default域demo用户帐号和密码,登录dashbroad

  查看demo用户启动的虚拟机实例,看看是否能够看到之前我们启动的实例?

  管理实例,连接实例控制台

  停止实例

  创建3个虚拟机实例

  选择镜像

  选择模板

  选择网络

  创建实例

  提示:可以看到我们想要的3个虚拟机实例创建好了;

  验证:在计算节点上,看看是否有4个虚拟机处于运行状态呢?

[root@node03 ~]# virsh list 
 Id    Name                           State
----------------------------------------------------
 1     instance-00000001              running
 13    instance-0000000e              running
 14    instance-0000000c              running
 15    instance-0000000d              running

[root@node03 ~]# 

  提示:可以看到有4个虚拟机处于运行状态;

  查看网络top图

  ok,到此dashboard服务就搭建好了;后续我们就可以使用这个web图形界面去管理虚拟机了;