点击下方名片,设为星标

回复“1024”获取2TB学习资源!

前面介绍了 Openstack 入门基础环境部署Keystone 、GlanceNova 、Neutron 等相关的知识点,今天我将详细的为大家介绍 Openstack 控制面板服务 Horizon 相关知识,希望大家能够从中收获多多!如有帮助,请点在看、转发分享朋友圈支持一波!!!

Horizon 简介

Horizon作为OpenStack的Web界面,它提供了对OpenStack各个模块的可视化操作。Horizon允许用户通过浏览器来访问OpenStack,而无需使用命令行工具以及其他客户端。c55f851df282c538093f4d9bc322c3a6.pngHorizon是一个基于Django框架的Web应用程序,它是OpenStack的一个关键部分。使用Horizon,用户可以自由地管理云平台、云硬件设施以及虚拟化资源。

Horizon 功能框架

功能框架

ee47fc27d4a0bd270ea4db048ac30486.pngHorizon主要由三个dashboard组成:用户dashboard、系统dashboard和设置dashboard。更多关于云计算服务 Openstack 系列的学习文章,请参阅:企业云计算平台 Openstack ,本系列持续更新中。

用户dashboard
a72a9461d2f087a75cd82fed263dba0a.png
系统dashboard
7f2e70768bb55df8944ebe9498406b97.png
设置dashboard
39d2a797ea7a4b70cdf588e804d18445.png

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/dashboard28b0623b002679b60d75a29baea2cab5.pngd8003f9a9112a3faba8c635d08ae4602.png

概念理解
区域(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)为作区分类型的一个属性;9284d75ac5c2de5470ac9423721720b2.png

Cell

nova为了增加横向扩展以及分布式、大规模(地理位置级别)部署的能力,同时又不增加数据库和消息中间件的复杂度,引入了cell的概念,并引入了nova-cell服务。

  • 主要是用来解决OpenStack的扩展性和规模瓶颈;

  • 每个Cell都有自己独立的DB和AMQP,不与其他模块共用DB和AMQP,解决了大规模环境中DB和AMQP的瓶颈问题;

  • Cell实现了树形结构(通过消息路由)和分级调度(过滤算法和权重算法),Cell之间通过RPC通讯,解决了扩展性问题;c5698e95ccf1218962307659a947d2ae.png更多关于云计算服务 Openstack 系列的学习文章,请参阅:企业云计算平台 Openstack ,本系列持续更新中。

基本操作

修改密码

c6656b8624a9529b33b3d21c651d5398.png点击设置->更改密码ec19b1aa8a819466b130e95c2f867a10.png

创建实例

创建实例前需要准备好三个工作:镜像、网络、实例类型。

实例类型(flavor)

289a929967c11c42ee5856dac7dff247.pngcb389a5f53a68868a0fff1af829a4a62.png看到这个图应该很容易理解了,就是定义一种资源类型,后面创建实例的时候,根据这个配置去创建。

镜像(image)

镜像的来源可以有很多种:

  • 一是各大系统厂商会发布自己云镜像。注意:不是ISO镜像,用ISO镜像是无法直接创建实例的,通常是以img 、qcow2结尾的文件;(最为方便的方式,但是不支持密码登录和ssh连接等,在创建实例时要准备好脚本做对应的修改);

  • 二是自定义镜像。使用KVM先通过ISO镜像生成一个虚拟机,然后进行一些自定义的操作,完成之后将QCOW2作为镜像上传到openstack使用;

下面演示使用云镜像创建实例:

上传镜像

78bc1161595a2be895c4fcf481c82eb2.png8f562db3945a776e14fa3d4d669c4cf3.png上传已经下载好的云镜像,无论是img还是qcow2的文件,在镜像格式时都选择 QCOW2 - QEMU模拟器,其他可以不需要选择,然后点击创建镜像即可,等待上传。

创建实例

3b42c2aab571d8c91677eed6b5381912.pngc320d0e2321239aad24d0c877a60af77.pngbad009e30d6a32267d43b76692b1f373.png3856b1afd97efe69f526d09e1edf2449.png实例类型就是配置,黄色的感叹号是表示此项目下分配的内核数量不够了,不能创建这个配置了。
18960b498342a79daa45ada34c17583f.png网络选择内网,也可以选择外网,但是一般不会这样选,因为外网IP相对来说是更为稀缺的资源。
3d14518ad76438779e0308ffaa699c09.png可以选择相关的安全组规则,事先可以先定义安全组及其规则。
bcac55e9116621a74a70561e378955a6.png
密钥登录,会生成一对密钥对,让你下载公钥,云镜像创建的实例部进行配置的话,就只能进行公钥免密登录。
190f973084cfe0d81d55ac6bd165ea54.png在配置这里可以放脚本,开机后就会执行,就可以进行一些初始化操作,比如配置密码,创建好就能用密码登录,后面的就可以先不选择。点击创建实例,等待创建即可。有时候卷会加载太久,超时导致实例创建失败,要调整一下参数,延长时间vim /etc/nova/nova.conf 。1d2bda9c7ff0eb3aeb92a764ab76ebae.png所有跑了nova服务的节点都要修改,修改完重启nova服务生效。

以上就是openstack在web界面创建实例的大致过程。更多关于云计算服务 Openstack 系列的学习文章,请参阅:企业云计算平台 Openstack ,本系列持续更新中。

创建网络
创建vxlan10网络

子网名称填subnet172_16_10_0,网络地址172.16.10.0/24,网关不填,默认是172.16.10.1。1057ef25d3bd3984b9fb7971d490536c.png761f2095460c403e2ced3a450fd452b0.png

不同vxlan通信
新建vxlan11

新建vxlan11,与新建vxlan10步骤相同,子网为172.16.11.0/24,并创建cirros-vm3划入到vxlan11。fc2ce8de8f015882a0bda7dba8e23ca2.png20650e97a2e42830704d3a02c0572b28.pngcirros-vm3分配到的ip为172.16.11.5,测试vm1和vm3通信,失败,原因是两实例处在不同的vxaln。cc0ea9c86e7ad165a3ca6a267268f935.png

新建路由/添加路由接口

新建路由router10_11 ,并将vxlan10、vxlan11加入到路由。c3ca2d7776e17dc53c51b7682fb2db74.png并将vxlan10、vxlan11加入接口88924d274d744721c48073d0ead5e07a.png172.24.4.14是路由router_10_11对外通信的网关,新建每个路由默认自带一个对外网关。842b3a47704df6421e5c527df4ae9ef1.png

  • cirros-vm1 172.106.10.6

  • cirros-vm3 172.106.11.5

不同vxlan通信测试

再次测试,cirros-vm1与cirros-vm3两个位于不同vxlan的主机成功通过路由进行通信。596a50472663375135963d3e91eca106.png

设置安全组

每个项目都可以定义其安全组。以demo用户登陆,查看安全组。afe38199db828a7adad3b222f4861bdb.png以demo用户登陆,开放SSH服务和ICMP服务。选择管理规则->添加规则:09b32977c021436176c8251a6b869064.png添加SSH服务f0b5f5a6938ae7d873363e6fc82ca704.png添加ICMP服务332fac7af7063a7f94d94af322304be2.png

配置密钥对

以demo用户登陆,定义项目的密钥对,用于虚拟机远程SSH连接。b1039c629e00f0df3bf38af355833f23.png创建密钥对ae45fa3fdbe61574784ed4ef2c3aae97.png给密钥对选择文件保存,这是用于连接的重要文件。更多关于云计算服务 Openstack 系列的学习文章,请参阅:企业云计算平台 Openstack ,本系列持续更新中。

扩展学习

实际上,Horizon并不会为OpenStack添加任何一个新的功能,它只是使用了OpenStack部分API功能,因此,我们可以扩展Horizon的功能,扩展Dashboard。

关于dashboard的界面,自己搭起环境后可以有一个直观的感受。

Horizon源码目录结构

162859416d2fd306671223b7ba8e7d00.png以在admin这个Dashboard里扩展添加一个monitoring的panel为例,介绍扩展OpenStack Dashboard的流程。

定义panel

首先介绍Dashboard.py这个文件,它位于每个Dashboard的根目录,其作用是注册Dashboard(django里称为app)以及设置Dashboard的属性,比如Dashboard里有哪些panel。

打开admin目录下的Dashboard.py文件,设置SystemPanels有monitoring的panel:
2e74c77208cd6dba61f24518de6d1123.png我们可以在Dashboard.py文件里随意的添加、删除panel属性,这对于调试程序的时候很方便。然后在amdin目录下创建一个monitoring的文件夹,并在monitoring文件夹里创建panel.py文件,定义panel:
0e6779b5ee94e71fd7c0dde3f76642d9.png这是最简单的panel,只定义了其名字。注意:slug属性的值要与monitoring文件夹名字一样。当定义完成后,要记得将其注册到Dashboard里。

定义URL

Horizon是基于Django框架,程序是通过url来找到panel的,因此,需要在monitoring目录下建立urls.py文件,定义url:
be1b0067a561ebf1e5f887168c3255da.png

定义Table

table用于展示数据,Horizon提供了DataTable基类,我们可以通过继承DataTable来实现自定义的table:
493cb41dd80d63ca94a42db20cf80ac8.png
在MonitoringTable里定义了两列resources和percent。

定义View

view是用来集成table或者tab的,Horizon提供了多种vie类,下面使用DataTableView来自定义我们自己的IndexView:在IndexView里定义好table_class和template_name的属性值,同时需要定义好get_data()方法,此方法用于获取数据展示在table里。
7bf6905dae5afa41f54dbe60f228270e.png至此,扩展Dashboard已完成,需要重启apache才能看到效果:sudo service apache2 restart。效果如下:
60472235c84465b0cc7b3a8eb095ecfd.png更多关于云计算服务 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

读者专属技术群

构建高质量的技术交流社群,欢迎从事后端开发、运维技术进群(备注岗位,已在技术交流群的请勿重复添加)。主要以技术交流、内推、行业探讨为主,请文明发言。广告人士勿入,切勿轻信私聊,防止被骗。

扫码加我好友,拉你进群

c1e133163f60e2f11132ca76de3febf3.jpeg

推荐阅读 点击标题可跳转

扔掉 ELK !来试试这套轻量级k8s日志解决方案

原以为是Xshell、WindTerm的平替,没想到是个王者

淘宝、京东重大调整!网友:已经被逼到绝路了

一个比 Navicat 更强大、更牛逼的客户端工具

打败Notion的年度笔记软件!到底还有多少牛X功能

把电脑分辨率改成500%的犟种们,解决办法来了

7bc51fd0a631abc367bcd1f7ed30984f.png

PS:因为公众号平台更改了推送规则,如果不想错过内容,记得读完点一下在看,加个星标,这样每次新文章推送才会第一时间出现在你的订阅列表里。点在看支持我们吧!

Logo

技术共进,成长同行——讯飞AI开发者社区

更多推荐