Openstack Dashboard 二次开发

Openstack的Dashboard项目Horizon,其实作的很不错。其实若是你熟悉他的代码,对他进行一下简单修改,能够实现不少你须要的功能。不少时候,并不须要作太大的改动。python

不少人都是根据Openstack的dashboard来判断有什么功能,其实Dashboard只是Openstack的部分功能,不少你需求的 功能,可能很简单就能够实现,基本没啥代码量。当你读Openstack的代码,你带着下面这些需求去看,估计效果更好。若是你实现了下面这些功能,至少 说明你已经开始熟悉Openstack。须要记住一点就是下面的功能,所有都是经过调用API实现。linux

下面的这些功能,你就能够拿来练手。我大概估算一下工做量,若是一个python程序员,从熟悉Openstack开始,加上你们交流,我估计3个 月,应该就能够基本搞定下面的功能。这基本都是基于Openstack的Horizon来修改。如下的内容,我公司的开发人员,基本都已经玩了一遍。ios

大概是3,4百行的代码修改量。程序员

1:虚拟机自动得到Floating IPweb

当你建立虚拟机的时候,默认是得到一个fix ip,公网的IP,须要手工得到。如何能实现自动得到IP呢?其实nova默认就有这个功能,你只须要在nova.conf 文件加上一个参数就能够实现。如今Grizzly,也在努力实现这个功能。这个功能在HPcloud上已经实现。我同事已经验证了这个功能。这个其实不需 要增长一行代码。windows

2:默认安全组的改进api

这个实际上是让不少新手比较困惑的地方。默认的安全组是没任何规则,不容许访问。是否能够默认加上ssh和容许ping的规则呢? HPcloud,默认的每一个新的用户,都是打开22端口和容许ping。实现这个其实也不难,找对相应的文件的位置,修改就能够,经过调用API来实现。安全

3:安全组添加UI改进服务器

如今安全组添加完一条规则,立刻就关闭页面,若是添加多条规则,很不方便。这个实际上是考验你的web水平。如今Grizzly已经决定改进这个地方。这个实现起来,应该是很简单的。网络

https://blueprints.launchpad.net/horizon/+spec/security-group-rules

4:把虚拟机建立在指定的物理服务器

若是你是管理员,你是能够经过命令行,指定虚拟机在那台物理服务器上建立。若是你但愿在Dashboard里实现那么你须要作很多工做。首先你须要 把全部的服务器列出来,你才能去选择。须要实现经过API的方式,把你zone里的服务器列出来,产生一个列表,让用户选择。当你把服务器列出来后,后面 就简单了,你只须要把参数传过去就能够。

当你机器数量比较少的时候,这样玩是没问题的。并且用户也习惯这种方式。

5:虚拟机关机

默认虚拟机是不能关机的,这其实也是运营模式决定的。不过其实nova 的api是提供虚拟机关机的功能。你只须要调用API接口就能够实现。

6:变动虚拟机配置 Resize

这也是常常提到的问题。为了统一的管理,其实通常都是几个固定的配置,你能够根据你的要求,对配置进行变动。是否支持运行状态下变动配置,这其实基 本是由Hyper-V决定。vmware是能够支持cpu,硬盘,网卡,内存的在线添加。对于KVM来讲,就只能支持磁盘和网卡。

变动配置,在Openstack里是Resize, 他是要调整虚拟机的硬盘,内存和cpu。对于nova来讲,Resize仍是比较复杂的,出于运维,管理和成本的考虑,Resize,会对虚拟机进行一个迁移,这样你还须要处理网络的问题。

目前nova是提供了这个功能,不过要很好实现,目前仍是很麻烦。最简单的方式就是本地resize,这样你至少就不须要考虑网络。这个我同事基本已经实现了,本地实现resize。

关于Resize,sina修复了两个bug,这个能够看看,https://www.openstack.org/blog/2012/10/how-sina-contributes-to-openstack/

7:热迁移

其实之前你们都认为热迁移的实现,都是须要有共享存储,其实如今各个虚拟化引擎,都已经实现不须要共享存储,也能够实现热迁移。据专家说:KVM下实现热迁移,比Xen好不少。

Nova目前是支持热迁移了,不管是有共享存储仍是本地存储。若是是本地存储,为了减小网络的传输压力,若是你的image是qcow2的格式,你能够利用这个特性。至少在演示的时候很酷,本地存储,一会儿就迁移过去。

目前这种迁移,其实都是手工去触发。你须要把虚拟机迁移到那台机器上。其实这种操做,也就适合小规模的环境或者是在维护的时候。

在vmware的世界里,热迁移叫VMotion,不过据朋友介绍,当你的虚拟机内存达到16G的时候,你其实就很难迁移,多是几个小时都没法迁移过去。这其实更多的是一个玩具。

8:冷迁移

这个其实也简单。本地存储,共享存储,都是能够实现。nova都提供相应的API,你只须要在Web实现就能够。不过这种迁移,如何实现对现有的系统影响更少。这是一个问题,尤为是硬盘的IO上。

对于迁移,不管是冷迁移,热迁移,Resize,其实网络和volume都是麻烦的事情,尤为在quantum的网络里。目前这个应该是要花费大量的时间。

9:虚拟机设置root密码

默认nova是采用密钥登录。这确定是一个方向。不过用户的习惯,有时候很难改变。他可能更加但愿能够建立虚拟机的时候设置密码。

其实nova默认也是提供这个功能。你能够设置虚拟机的root的密码。也能够随机生成密码。你须要作的是如何告诉用户,随机密码是什么。

linux的ssh登录,密码和密钥,你只能二选一,因此你作image的时候,须要进行设置。

10:集成监控Nagios

Openstack缺少监控,如何加上监控,集成在Dashboard里?这个应该比想象中简单。由于Horizon默认就考虑到这个。你看一下代 码就能够实现。你的模板须要默认启用snmp,这样你的虚拟机均可以监控。考验的就是你对Nagios熟悉。这种方式,在企业内部使用,应该是很是方便 的。

Intel的一个Openstack修改版本,已经实现了这个功能。效果其实很不错。

11:多Region实现

当你的环境下有几个环境,或者有Xen和KVM,如何用一个Dashbaord来管理。如今新浪的搞的Stacklab就是相似的方式实现的。

其实这个也很简单,不须要配置任何东西,只须要配置一下就能够。若是若是你但愿多个环境使用统一的用户验证,估计须要调整一下。这个是不须要修改代码。

12:用户修改密码

目前用户是无法修改本身的密码,只有管理员能够修改本身的密码。这个功能实际上是必定要加上的。实现起来应该不难。目前管理员是能够重设用户的密码,就说明已经有接口,看一下如何实现就能够。须要你了解一下keystone的接口。

13:批量建立虚拟机时候的计算机名字

若是你使用qcow2 镜像格式,批量建立虚拟机是一件比较爽的事情。惟一的问题就是建立出来的虚拟机的命令都是同样。但愿能够实如今你指定的计算机名字后面加上数字来区别。邮件列表里有老外提问,不过没有解决。Hpcloud不容许客户本身定义计算机名,是随机生成。

这个同事已经实现。不过只是linux的虚拟机。windows的虚拟机,若是解决呢?如今看来仍是有可能实现的。慢慢研究。

13:snapshot备份改进

目前Dashboard里是提供的snapshot的功能。若是你采用qcow2的格式,那么他实际的过程是把base部分和增量部分合并,保存到glance里。这里面是没法实现增量的备份。

一直以来,用户都须要经过快照的方式实现备份,因为虚拟机比较大,因此必须实现增量。

新浪目前已经在实现如何增量备份虚拟机。正在把代码加入Grizzly中 ,这个贡献可真不小啊。https://blueprints.launchpad.net/cinder/+spec/local-storage-volume

很是值得期待。

14: 修改调度

若是才能最大化利用资源,充分利用机器的全部的cpu和内存。咱们须要修改它的调度。

假设我有两组机器,1组是新机器,1组是旧机器。我但愿实现配置1的虚拟机,都是在新组机器建立,配置2的虚拟机都是在旧的那组机器建立。我如何修改调度去实现这个需求。

目前这个需求实现仍是比较困难。正在想办法。

通过学习,好像将来的Grizzly版本,已经解决了这个问题:http://www.cloudcomp.ch/2013/02/how-do-you-organise-your-openstack-deployment/

相关文章
相关标签/搜索