Horizon介绍


Dashboard服务,这里具体的产品就是Horizon
1、它提供一个Web界面操作Openstack的系统
2、使用Django框架基于Openstack API开发
3、支持将Session 存储在DB、Memcached
4、支持集群

 

安装和配置Horizon


1、安装软件包

[root@linux-node1 ~]# yum install openstack-dashboard -y
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 * base: mirrors.163.com
 * epel: mirror01.idc.hinet.net
 * extras: mirrors.163.com
 * updates: mirrors.163.com
Package 1:openstack-dashboard-9.0.1-1.el7.noarch already installed and latest version
Nothing to do
[root@linux-node1 ~]#

  

2、更改配置文件

/etc/openstack-dashboard/local_settings

1、把这里改成控制节点的IP,下面的URL的%s调用了它

2、把URL的版本改成v3

3、把角色改成user,目前我们只有user和admin两种角色,通过openstack role list可以查看

[root@linux-node1 ~]# vim /etc/openstack-dashboard/local_settings
[root@linux-node1 ~]#

openstack多节点架构 openstack 节点_创建虚拟机

 

30行,允许访问的主机改成*,表示所有,逗号留着,表示列表

 

openstack多节点架构 openstack 节点_消息队列_02

 

55行,默认如下

openstack多节点架构 openstack 节点_openstack多节点架构_03

改成如下

配置API版本,去掉除了56行的注释

openstack多节点架构 openstack 节点_openstack多节点架构_04

 

 

启用对域的支持
OPENSTACK_KEYSTONE_MULTIDOMAIN_SUPPORT = True

openstack多节点架构 openstack 节点_openstack多节点架构_05

通过仪表盘创建用户时的默认域配置为 default :
OPENSTACK_KEYSTONE_DEFAULT_DOMAIN = "default"

openstack多节点架构 openstack 节点_消息队列_06

 

 

如果您选择网络参数1,禁用支持3层网络服务:

需要把下面的True都改成false

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,
}

openstack多节点架构 openstack 节点_消息队列_07

改完之后如下

openstack多节点架构 openstack 节点_linux_08

 

配置时区,改为如下

TIME_ZONE = "Asia/Shanghai"

openstack多节点架构 openstack 节点_linux_09

 

3、重启服务

[root@linux-node1 ~]# systemctl restart httpd.service memcached.service
[root@linux-node1 ~]# 

[root@linux-node1 ~]# systemctl reload httpd
[root@linux-node1 ~]#

 

 

网页登录和操作


 

浏览器输入
http://192.168.56.11/dashboard打开如下界面

openstack多节点架构 openstack 节点_消息队列_10

先用普通用户登录

openstack多节点架构 openstack 节点_linux_11

 

 

openstack多节点架构 openstack 节点_openstack多节点架构_12

 

 可以通过此页面登录云主机控制台

openstack多节点架构 openstack 节点_openstack多节点架构_13

 

openstack多节点架构 openstack 节点_openstack多节点架构_14

 

openstack多节点架构 openstack 节点_openstack多节点架构_15

 

使用admin用户登录

openstack多节点架构 openstack 节点_消息队列_16

 

openstack多节点架构 openstack 节点_openstack多节点架构_17

 

通过页面创建云主机

再次使用demo用户登录,删除云主机

openstack多节点架构 openstack 节点_创建虚拟机_18

 

openstack多节点架构 openstack 节点_openstack多节点架构_19

 

 

openstack多节点架构 openstack 节点_linux_20

 

openstack多节点架构 openstack 节点_创建虚拟机_21

 

openstack多节点架构 openstack 节点_消息队列_22

 

openstack多节点架构 openstack 节点_消息队列_23

 

openstack多节点架构 openstack 节点_linux_24

 

openstack多节点架构 openstack 节点_linux_25

 

openstack多节点架构 openstack 节点_创建虚拟机_26

 

 

点击启动实例

openstack多节点架构 openstack 节点_openstack多节点架构_27

 

openstack多节点架构 openstack 节点_创建虚拟机_28

 

可以登录控制台

 

openstack多节点架构 openstack 节点_linux_29

 

虚拟机的创建流程介绍


openstack多节点架构 openstack 节点_linux_30

第一阶段
用户通过keystone认证,获得一个token,就可以请求别的服务了
比如创建虚拟机。nova-api拿着这个token去keystone对比,是否合法
然后nova-api把创建虚拟机这个事件写到库里
第一阶段完成了

第二阶段是nova组件之间的交互
通过rabbitmq消息队列,nova-api把创建虚拟机消息发到消息队列里
其它的nova-compute,nova-conductor以及nova-scheduler是订阅了消息队列这个主题的,不是api主动通知它们,而是它们监听消息队列自己取消息
nova-scheduler先过滤符合条件的计算节点,然后根据权重选择一个最佳的节点
计算权重有一个默认算法,资源使用率低的先创建。以及从数据库里取计算节点数据,然后把计算结果存到数据库里。
其实它计算完毕,还会发消息发送到消息队列里,然后nova-compute从消息队列里取事件(上面图用双向表示了,其实可以再分解详细的)
nova-compute取到创建虚拟机事件,要去数据库里取创建虚拟机的属性(配置等)(图上第9步)
这个图是老图了,因为现在M版的nova-compute不能直接连接数据库的,其实是通过nova-conductor连接数据库的
由此可以看到消息队列的枢纽中心作用。它挂了不影响现网,但是影响创建虚拟机

第三阶段
最后获取镜像,网络,存储资源,分别校验。nova-compute带着token请求的。
比如镜像,它拿着这个token去keystone验证,有没有效。成功后才获得镜像许可

第四阶段
nova-compute通过api调用libvirt创建kvm,同时nova-api不停的轮询查询数据库,看kvm的状态,更新状态给消息队列,然后dashboard取得最新数据状态
图里没画出来