玩转企业云计算平台系列(七):Openstack 控制面板服务 Horizon
点击下方名片,设为星标!回复“1024”获取2TB学习资源!前面介绍了Openstack 入门、基础环境部署、Keystone、Glance、Nova、Neutron 等相关的知识点,今天我将详细的为大家介绍Openstack 控制面板服务 Horizon相关知识,希望大家能够从中收获多多!如有帮助,请点在看、转发分享朋友圈支持一波!!!Horizon 简介Horizon作为OpenSt...
点击下方名片,设为星标!
回复“1024”获取2TB学习资源!
前面介绍了 Openstack 入门、基础环境部署、Keystone 、Glance、Nova 、Neutron 等相关的知识点,今天我将详细的为大家介绍 Openstack 控制面板服务 Horizon 相关知识,希望大家能够从中收获多多!如有帮助,请点在看、转发分享朋友圈支持一波!!!
Horizon 简介
Horizon作为OpenStack的Web界面,它提供了对OpenStack各个模块的可视化操作。Horizon允许用户通过浏览器来访问OpenStack,而无需使用命令行工具以及其他客户端。Horizon是一个基于Django框架的Web应用程序,它是OpenStack的一个关键部分。使用Horizon,用户可以自由地管理云平台、云硬件设施以及虚拟化资源。
Horizon 功能框架
功能框架
Horizon主要由三个dashboard组成:用户dashboard、系统dashboard和设置dashboard。更多关于云计算服务 Openstack 系列的学习文章,请参阅:企业云计算平台 Openstack ,本系列持续更新中。
用户dashboard

系统dashboard

设置dashboard

Horizon 界面功能
Horizon作为OpenStack的Web界面,提供了丰富的可视化功能,让用户可以更加轻松地操作OpenStack平台。其中,主要包含如下功能:
-
1.用户认证:Horizon支持基于用户名和密码的认证方式,还提供了基于令牌的用户认证方式。
-
2.虚拟机管理:Horizon允许用户创建、启动、停止、重启虚拟机等操作,还提供了虚拟机列表、虚拟机快照等功能。
-
3.云存储管理:Horizon支持对云存储的创建、管理和删除操作,未来还会提供更多功能。
-
4.网络管理:Horizon可以对网络进行配置、控制和监控,从而提供完整的网络管理功能。
-
5.负载平衡器管理:Horizon提供了负载平衡器的创建、配置和监控等功能。
Horizon为两种用户提供了两种不同的功能界面:
-
1.云管理员:提供了一个整体的视图可以总览整个云的资源大小及运行状况,可以创建终端用户和项目,向终端用户分配项目并进行项目的资源配额管理;
-
2.终端用户:提供了一个自主服务的门户,可以在管理员分配的项目中,在不超过额定配额的限制内,自由操作、使用和 存储网络资源;
总之,Horizon提供了全面的OpenStack管理功能,并且具有良好的可维护性和扩展性。
安装和配置Horizon
安装软件包
[root@controller ~]# yum install -y openstack-dashboard
修改配置文件
编辑/etc/openstack-dashboard/local_settings
文件并完成以下操作。配置仪表板以使用 controller
节点上的 OpenStack 服务。
[root@controller ~]# vim /etc/openstack-dashboard/local_settings
OPENSTACK_HOST = "controller"
允许您的主机访问仪表板
ALLOWED_HOSTS = ['*']
配置memcached
会话存储服务
SESSION_ENGINE = 'django.contrib.sessions.backends.cache'
CACHES = {
'default': {
'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache',
'LOCATION': 'controller:11211',
},
}
启用身份 API 版本 3
OPENSTACK_KEYSTONE_URL = "http://%s:5000/v3" % OPENSTACK_HOST
启用对域的支持
OPENSTACK_KEYSTONE_MULTIDOMAIN_SUPPORT = True
配置API版本
OPENSTACK_API_VERSIONS = {
"identity": 3,
"image": 2,
"volume": 3,
}
配置Default
为您通过仪表板创建的用户的默认域。
OPENSTACK_KEYSTONE_DEFAULT_DOMAIN = "Default"
配置user
为您通过仪表板创建的用户的默认角色。
OPENSTACK_KEYSTONE_DEFAULT_ROLE = "user"
禁用对第 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,
}
配置时区
TIME_ZONE = "Asia/Shanghai"
应用程序的根目录是在 /dashboard
目录下。
WEBROOT = "/dashboard"
更多关于云计算服务 Openstack 系列的学习文章,请参阅:企业云计算平台 Openstack ,本系列持续更新中。
修改httpd文件
[root@controller ~]# vim /etc/httpd/conf.d/openstack-dashboard.conf
# 添加
WSGIApplicationGroup %{GLOBAL}
# WSGIApplicationGroup %{GLOBAL} 是一个 Apache 配置指令
# 用于设置 WSGI 应用程序的进程组
# 这个指令告诉 Apache 使用全局进程组来运行 WSGI 应用程序
重启httpd和缓存服务
[root@controller ~]# systemctl restart httpd.service memcached.service
访问
登陆方法:http://Horizone_server_ip/dashboard
概念理解
区域(Region)
-
1、地理上的概念,可以理解为一个独立的数据中心,每个所定义的区域有自己独立的Endpoint;
-
2、区域之间是完全隔离的,但多个区域之间共享同一个Keystone和Dashboard(目前Openstack中的Dashboard还不支持多个区域);
-
3、除了提供隔离的功能,区域的设计更多侧重地理位置的概念,用户可以选择离自己更新的区域来部署自己的服务,选择不同的区域主要是考虑那个区域更靠近自己,如用户在美国,可以选择离美国更近的区域;
-
4、区域的概念是由Amazon在AWS中提出,主要是解决容错能力和可靠性;
可用性区域(Availability Zone)
-
1、AZ是在Region范围内的再次切分,例如可以把一个机架上的服务器划分为一个AZ,划分AZ是为了提高容灾能力和提供廉价的隔离服务;
-
2、AZ主要是通过冗余来解决可用性的问题,在Amazon的声明中,Instance不可用是指用户所有AZ中的同一个Instance都不可达才表明不可用;
-
3、AZ是用户可见的一个概念,并可选择,是物理隔离的,一个AZ不可用不会影响其他的AZ,用户在创建Instance的时候可以选择创建到那些AZ中;
Host Aggreates
一组具有共同属性的节点集合,如以CPU作为区分类型的一个属性,以磁盘(SSD\SAS\SATA)作为区分类型的一个属性,以OS(Windows\Linux)为作区分类型的一个属性;
Cell
nova为了增加横向扩展以及分布式、大规模(地理位置级别)部署的能力,同时又不增加数据库和消息中间件的复杂度,引入了cell的概念,并引入了nova-cell服务。
-
主要是用来解决OpenStack的扩展性和规模瓶颈;
-
每个Cell都有自己独立的DB和AMQP,不与其他模块共用DB和AMQP,解决了大规模环境中DB和AMQP的瓶颈问题;
-
Cell实现了树形结构(通过消息路由)和分级调度(过滤算法和权重算法),Cell之间通过RPC通讯,解决了扩展性问题;
更多关于云计算服务 Openstack 系列的学习文章,请参阅:企业云计算平台 Openstack ,本系列持续更新中。
基本操作
修改密码
点击设置->更改密码
创建实例
创建实例前需要准备好三个工作:镜像、网络、实例类型。
实例类型(flavor)
看到这个图应该很容易理解了,就是定义一种资源类型,后面创建实例的时候,根据这个配置去创建。
镜像(image)
镜像的来源可以有很多种:
-
一是各大系统厂商会发布自己云镜像。注意:不是ISO镜像,用ISO镜像是无法直接创建实例的,通常是以img 、qcow2结尾的文件;(最为方便的方式,但是不支持密码登录和ssh连接等,在创建实例时要准备好脚本做对应的修改);
-
二是自定义镜像。使用KVM先通过ISO镜像生成一个虚拟机,然后进行一些自定义的操作,完成之后将QCOW2作为镜像上传到openstack使用;
下面演示使用云镜像创建实例:
上传镜像
上传已经下载好的云镜像,无论是img还是qcow2的文件,在镜像格式时都选择 QCOW2 - QEMU模拟器,其他可以不需要选择,然后点击创建镜像即可,等待上传。
创建实例
实例类型就是配置,黄色的感叹号是表示此项目下分配的内核数量不够了,不能创建这个配置了。
网络选择内网,也可以选择外网,但是一般不会这样选,因为外网IP相对来说是更为稀缺的资源。
可以选择相关的安全组规则,事先可以先定义安全组及其规则。
密钥登录,会生成一对密钥对,让你下载公钥,云镜像创建的实例部进行配置的话,就只能进行公钥免密登录。在配置这里可以放脚本,开机后就会执行,就可以进行一些初始化操作,比如配置密码,创建好就能用密码登录,后面的就可以先不选择。点击创建实例,等待创建即可。有时候卷会加载太久,超时导致实例创建失败,要调整一下参数,延长时间vim /etc/nova/nova.conf 。
所有跑了nova服务的节点都要修改,修改完重启nova服务生效。
以上就是openstack在web界面创建实例的大致过程。更多关于云计算服务 Openstack 系列的学习文章,请参阅:企业云计算平台 Openstack ,本系列持续更新中。
创建网络
创建vxlan10网络
子网名称填subnet172_16_10_0,网络地址172.16.10.0/24,网关不填,默认是172.16.10.1。
不同vxlan通信
新建vxlan11
新建vxlan11,与新建vxlan10步骤相同,子网为172.16.11.0/24,并创建cirros-vm3划入到vxlan11。cirros-vm3分配到的ip为172.16.11.5,测试vm1和vm3通信,失败,原因是两实例处在不同的vxaln。
新建路由/添加路由接口
新建路由router10_11 ,并将vxlan10、vxlan11加入到路由。并将vxlan10、vxlan11加入接口
172.24.4.14是路由router_10_11对外通信的网关,新建每个路由默认自带一个对外网关。
-
cirros-vm1 172.106.10.6
-
cirros-vm3 172.106.11.5
不同vxlan通信测试
再次测试,cirros-vm1与cirros-vm3两个位于不同vxlan的主机成功通过路由进行通信。
设置安全组
每个项目都可以定义其安全组。以demo用户登陆,查看安全组。以demo用户登陆,开放SSH服务和ICMP服务。选择管理规则->添加规则:
添加SSH服务
添加ICMP服务
配置密钥对
以demo用户登陆,定义项目的密钥对,用于虚拟机远程SSH连接。创建密钥对
给密钥对选择文件保存,这是用于连接的重要文件。更多关于云计算服务 Openstack 系列的学习文章,请参阅:企业云计算平台 Openstack ,本系列持续更新中。
扩展学习
实际上,Horizon并不会为OpenStack添加任何一个新的功能,它只是使用了OpenStack部分API功能,因此,我们可以扩展Horizon的功能,扩展Dashboard。
关于dashboard的界面,自己搭起环境后可以有一个直观的感受。
Horizon源码目录结构
以在admin这个Dashboard里扩展添加一个monitoring的panel为例,介绍扩展OpenStack Dashboard的流程。
定义panel
首先介绍Dashboard.py这个文件,它位于每个Dashboard的根目录,其作用是注册Dashboard(django里称为app)以及设置Dashboard的属性,比如Dashboard里有哪些panel。
打开admin目录下的Dashboard.py文件,设置SystemPanels有monitoring的panel:我们可以在Dashboard.py文件里随意的添加、删除panel属性,这对于调试程序的时候很方便。然后在amdin目录下创建一个monitoring的文件夹,并在monitoring文件夹里创建panel.py文件,定义panel:
这是最简单的panel,只定义了其名字。注意:slug属性的值要与monitoring文件夹名字一样。当定义完成后,要记得将其注册到Dashboard里。
定义URL
Horizon是基于Django框架,程序是通过url来找到panel的,因此,需要在monitoring目录下建立urls.py文件,定义url:
定义Table
table用于展示数据,Horizon提供了DataTable基类,我们可以通过继承DataTable来实现自定义的table:
在MonitoringTable里定义了两列resources和percent。
定义View
view是用来集成table或者tab的,Horizon提供了多种vie类,下面使用DataTableView来自定义我们自己的IndexView:在IndexView里定义好table_class和template_name的属性值,同时需要定义好get_data()方法,此方法用于获取数据展示在table里。至此,扩展Dashboard已完成,需要重启apache才能看到效果:sudo service apache2 restart。效果如下:
更多关于云计算服务 Openstack 系列的学习文章,请参阅:企业云计算平台 Openstack ,本系列持续更新中。
参考文章:https://blog.csdn.net/qq_52089863/
article/details/131453226 https://blog.csdn.net
/rookie23rook/article/details/127745572 https://blog.csdn.net/weixin_48878440/article
/details/131272355
读者专属技术群
构建高质量的技术交流社群,欢迎从事后端开发、运维技术进群(备注岗位,已在技术交流群的请勿重复添加)。主要以技术交流、内推、行业探讨为主,请文明发言。广告人士勿入,切勿轻信私聊,防止被骗。
扫码加我好友,拉你进群
推荐阅读 点击标题可跳转
原以为是Xshell、WindTerm的平替,没想到是个王者
PS:因为公众号平台更改了推送规则,如果不想错过内容,记得读完点一下“在看”,加个“星标”,这样每次新文章推送才会第一时间出现在你的订阅列表里。点“在看”支持我们吧!
更多推荐
所有评论(0)