如何调试和修改OpenStack中的Horizon部分

如何调试和修改OpenStack中的Horizon部分,第1张

Openstack 有很多项目,比如 nova 是虚拟机管理,neutron 是虚拟网络管理, glance 是存储管理,而 horizon 是负责 Openstack 的统一界面。horizon 的源代码和 neutron 的不太一样,分布在两个地方,一个是/usr/lib/python2.7/dist-packages/horizon 下面,这里放的是一些最基本的、可以共享的类、表格和模板等。另一个是/usr/share/openstack-dashboard 下面,这里放的是跟界面有直接关系、更加具体的类、表格和模板等,也是我们需要修改的地方。

Horizon 是一个基于 Django 的项目,如果熟悉 Django 的同学会发现其实 Horizon openstack-dashboard 里面的文件命名与摆放位置与 Django 几乎是一样的:

.../openstack-dashboard/

- bin/

- openstack_dashboard/

- static/

- manage.py

- settings.py

从这个文件夹的结构就可以看出来,openstack-dashboard 其实就是 Django 的一个 project,而openstack_dashboard 是一个 app。进入 app,我们可以看到,其中一些比较重要的文件和文件夹有:

openstack_dashboard/

- __init__.py

- views.py

- urls.py

- settings.py

- dashboards/

- enabled/

- static/

- templates/

- test/

...

是不是很熟悉?一下子就能知道各个文件和文件夹是用来干嘛的。url.py 负责最顶层的 url 跳转, views.py 负责接受和处理请求然后返回结果,static 里面放静态资源, templates 里面放模板, test 里面放 unittest。只有两个文件夹需要探索一下,dashboards 和 enabled。如果进到 enabled 文件夹里去看一下的话会发现,里面有好多添加和删除 panel 还有 group 的例子,其实这里就是一个可以比较简单的在 horizon 里面注册我们自己想要新建的 panel 的地方。例如我们可以把_admin_add_panel.py.example 的后缀去掉,变成_admin_add_panel.py,然后修改其中的内容:

# The name of the panel to be added to HORIZON_CONFIG. Required.

PANEL = 'plugin_panel'

# The name of the dashboard the PANEL associated with. Required.

PANEL_DASHBOARD = 'admin'

# The name of the panel group the PANEL is associated with.

PANEL_GROUP = 'admin'

# Python panel class of the PANEL to be added.

ADD_PANEL = \

'openstack_dashboard.dashboards.admin.plugin_panel.panel.PluginPanel'

这样,我们就在一个叫做 admin 的 dashboard 里面添加了一个叫做 plugin_panel 的 panel,并且告诉 horizon 具体的定义将会在openstack_dashboard.dashboards.admin.plugin_panel.panel.PluginPanel 中出现。

那这个时候我们就要去 dashboards 里面打量打量,然后做些具体的事情啦。首先我们可以看到 dashboards 的结构是这样的:

dashboards/

- __init__.py

- admin/

- project/

-router/

- settings/

由此可知,horizon 现在共有三个 dashboards,分别是 admin,project,和 router。admin 代表的是管理员可以看到的界面,project 代表的是用户可以看到的界面,两者在 *** 作权限上会有一定的区别。而 router 的功用我也不是特别清楚。简单保险起见,我们的自定义 panel 就落户在 admin 中。admin 文件夹中包括了很多文件和子文件夹,我就不在这里一一赘述了。我们直接在其中创建一个子文件夹叫做 plugin_panel,然后再这个子文件夹中创建四个文件,使得这个文件夹看起来是这样的:

plugin_panel/

- __init__.py

- panel.py

- url.py

- views.py

待会儿 PluginPanel 这个类就会定义在 panel.py 中,而 url.py 和 views.py 将会分别承担这一层的路由跳转和收发请求及回复的作用。

Horizon使用的是Django应用程式为用户和管理员提供一个管理OpenStack服务的接口。

基本介绍中文名 :控制台 外文名 :Horizon 简介,Horizon View 6.0中的RDSH farm,Horizon的RDSH farm,发布Horizon的RDSH桌面, 简介 1、Horizon通常通过Apache中的mod_uwgis搭建。代码分为可重复使用的python模组(和不同的OpenStack API进行互动)和展示模组,在二次开发中可以使用nginx配合uwsgi等方式进行搭建。 2、资料库服务,因为这主要用来存放其他服务的数据,存放自己的数据很少。 3、Horizon个性化定制,提供与各组件的每一个服务公用API通信的功能。 Horizon View 6.0中的RDSH farm Horizon View 6.0可以让管理员使用HorizonRDSH farm发布虚拟桌面。那么Horizon在RDSH farm是如是什么?如何实现的?

VMware Horizon 6.0的View 在IT使用HorizonRDSH的方式上带来了一些重大变化。

新功能之一就是Horizon的RDSH farm,员工可以从桌面池中访问它们的Horizon的RDSH桌面。建立一个RDSH farm,然后发布一个桌面。

在Horizon 6.0之前的View版本中,IT可以创建一个终端服务池,聚集多个Horizon的RDSH伺服器,为用户组交付桌面。每个Horizon的RDSH伺服器承载多个用户桌面,所以Horizon的终端服务池始终都是浮动的。

在旧版Horizon的View中,Horizon的RDSH看起来像第二选择,因为它不支持PCoIP,但是在Horizon 6.0之后View版本中,Horizon的RDSH桌面是可以使用PCoIP。 Horizon的RDSH farm

Horizon的RDSH farm iew中的一个组成部分,其实是创建一组相同的HorizonRDSH伺服器,将它们视为一个运行桌面和Horizon应用程式的资源池。

在资源池中的Horizon的RDSH伺服器都有着相同的配置,所以Horizon可以相互交替。让Horizon保持一致的最简单的方法就是从同一个模板结合子作业系统自定义来部署所有的Horizon的RDSH伺服器。

在模板中不要安装Horizon的View Agent。正常情况下,来宾自定义会触发Horizon的Agent重新注册connection伺服器,但是,最重要的是模板应该保持注册connection伺服器时的虚拟机名字。

可以使用自定义规范来设定一个RunOnce值,来开启Horizon的Agent静默安装。例如:

VMware-viewagent-y.y.y-xxxxxx.exe /s /v"/qn

VDM_VC_MANAGED_AGENT=0 VDM_SERVER_NAME=MyView.lab.local"

在VDM_SERVER_NAME后面替换为自己的connection server,一定要确保虚拟机设定为自动登录。然后,使用有许可权的域账户将Horizon的Agent添加到Horizon的View中,或者在Horizon的Agent安装命令行中写入用户名和密码。

一旦Horizon的RDSH伺服器创建完,就可以在Horizon的View中添加场。在标识和设定页面,可以设定一些通用属性套用到一个桌面池上。在场上设定的授权组和一些显示协定可以套用到场中的所有池上。 Horizon还有一些其他属性,比如会话逾时等,Horizon这些主要是套用到应用程式池,应用程式池就是用户从Horizon的View client端启动应用程式而不是一个完整的桌面。

一个用户启动一个应用程式,就会与单个Horizon的RDSH伺服器建立一个会话,由于Horizon的登录脚本、用户配置档案、和组策略对象(GPO)都会在第一个应用程式启动时被处理,所以后续再启动其他应用程式速度会明显加快。Horizon的逾时控制可以自动注销会话。当用户关闭Horizon所有应用程式时,会话将会变为空闲状体。如果当会话是打开状态时用户启动其他Horizon应用程式,只需要打开新的应用程式即可。

另一方面,Horizon在会话注销前用户配置档案不会卸载;在会话关闭前,Horizon主机只使用极少的资源。如果用户注销之前的会话,那么Horizon再启动新的应用程式时,登录脚本,用户配置档案、和GPO将会再次执行。

Horizon空闲会话逾时和Horizon注销下线的会话持续的时间越长,用户在启动Horizon新套用时就会越快。如果时间设定的越短,那么Horizon的RDSH伺服器的负载就会越少,Horizon配置档案就会被快速删除。正确的Horizon平衡取决于环境。在用户学习使用Horizon的RDSH应用程式池的过程中,管理员可能需要做出一些调整。

一旦设定了会话逾时,从Connection Servers已注册的主机列表中选择主机,任意一个主机都可以是唯一的Horizon的RDSH场的成员。 发布Horizon的RDSH桌面

创建Horizon的RDSH桌面池和创建其他桌面池一样,在桌面池类型中选择HorizonRDS桌面池。 因为Horizon的RDSH主机已经都部署完成,而且可以通过Horizon的RDSH场来控制远程显示协定,所以Horizon桌面池的设定相对较少。管理员可以控制flash频宽,也可以使用标签来限制对池中服务。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/bake/11374537.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-15
下一篇2023-05-15

发表评论

登录后才能评论

评论列表(0条)

    保存