前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >玩转企业云计算平台系列(七):Openstack 控制面板服务 Horizon

玩转企业云计算平台系列(七):Openstack 控制面板服务 Horizon

作者头像
民工哥
发布2024-01-05 13:39:08
6840
发布2024-01-05 13:39:08
举报

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

安装软件包
代码语言:javascript
复制
[root@controller ~]# yum install -y openstack-dashboard
修改配置文件

编辑/etc/openstack-dashboard/local_settings 文件并完成以下操作。配置仪表板以使用 controller节点上的 OpenStack 服务。

代码语言:javascript
复制
[root@controller ~]# vim /etc/openstack-dashboard/local_settings
OPENSTACK_HOST = "controller"

允许您的主机访问仪表板

代码语言:javascript
复制
ALLOWED_HOSTS = ['*']

配置memcached会话存储服务

代码语言:javascript
复制
SESSION_ENGINE = 'django.contrib.sessions.backends.cache'
CACHES = {
    'default': {
        'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache',
        'LOCATION': 'controller:11211',
    },
}

启用身份 API 版本 3

代码语言:javascript
复制
OPENSTACK_KEYSTONE_URL = "http://%s:5000/v3" % OPENSTACK_HOST

启用对域的支持

代码语言:javascript
复制
OPENSTACK_KEYSTONE_MULTIDOMAIN_SUPPORT = True

配置API版本

代码语言:javascript
复制
OPENSTACK_API_VERSIONS = {
    "identity": 3,
    "image": 2,
    "volume": 3,
}

配置Default为您通过仪表板创建的用户的默认域。

代码语言:javascript
复制
OPENSTACK_KEYSTONE_DEFAULT_DOMAIN = "Default"

配置user为您通过仪表板创建的用户的默认角色。

代码语言:javascript
复制
OPENSTACK_KEYSTONE_DEFAULT_ROLE = "user"

禁用对第 3 层网络服务的支持。

代码语言:javascript
复制
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,
}

配置时区

代码语言:javascript
复制
TIME_ZONE = "Asia/Shanghai"

应用程序的根目录是在 /dashboard 目录下。

代码语言:javascript
复制
WEBROOT = "/dashboard"

更多关于云计算服务 Openstack 系列的学习文章,请参阅:企业云计算平台 Openstack ,本系列持续更新中。

修改httpd文件
代码语言:javascript
复制
[root@controller ~]# vim /etc/httpd/conf.d/openstack-dashboard.conf
# 添加
WSGIApplicationGroup %{GLOBAL}
# WSGIApplicationGroup %{GLOBAL} 是一个 Apache 配置指令
# 用于设置 WSGI 应用程序的进程组
# 这个指令告诉 Apache 使用全局进程组来运行 WSGI 应用程序

重启httpd和缓存服务

代码语言:javascript
复制
[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

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2024-01-03,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 民工哥技术之路 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Horizon 简介
  • Horizon 功能框架
  • Horizon 界面功能
  • 安装和配置Horizon
    • 安装软件包
      • 修改配置文件
        • 修改httpd文件
          • 访问
            • 概念理解
            • 基本操作
              • 修改密码
                • 创建实例
                  • 创建网络
                    • 不同vxlan通信
                      • 设置安全组
                        • 配置密钥对
                        • 扩展学习
                          • 定义panel
                            • 定义URL
                              • 定义Table
                                • 定义View
                                相关产品与服务
                                对象存储
                                对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
                                领券
                                问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档