Openstack的Havana将要2013年10月17日发布,目前Redhat和Ubuntu 的包都已经基本准备好,正式版本发布后,Redhat和Ubuntu 对新版本的支持,应该会在一个星期内就搞定。
这次我是使用Redhat的RDO来搭建 http://www.chenshake.com/centos-6-4-rdo-test/,尽量全面测试一下Dashboard的功能,让大家对Dashboard的功能有一定的了解,这也算是给Openstack做点贡献
Openstack的Dashboard,是基于OpenStack各个组件开发的web管理后台,项目名字是Horizon。目前 Dashboard并没有实现全部的API功能,很多功能可能是API提供,但是Dashboard没有去实现。同时Dashboard还欠缺不少功能, 等待大家一起完善。在Openstack的各个项目里,如果是一个小的功能,会做作为一个bug的方式去修复。大的功能,才会作为Blueprint。当 你希望做某个功能的时候,不只是把Blueprint看一遍,还需要把Bug列表看一遍,这样才能避免重复造轮。
写这个文档,我也基本尽量把各个项目的bug列表和Blueprint过一遍,加上相关的链接,各位开发者如果感兴趣,可以去修复。给 Openstack贡献代码,其实对个人的好处是很多的,能力和视野都会提高很多,在国内,如果你是某个项目的Core,那么你基本就是去各大外企都不是 问题,成为Core,并不是想象中那么高难度,尤其一些新项目。对于新手,如何提交第一个patch给Openstack,其实可以参考文章提到的各种 bug和功能,这样会更快成为一个Commiter.
Contents [hide]
1 登陆
2 Setting
2.1 用户设置
2.2 修改密码
3 Admin(管理员权限)
3.2.1 Domains(域)
3.2.2 Projects(项目)
3.2.3 Users(用户)
3.2.4 Groups(组)
3.2.5 Roles(角色)
3.1.1 Overview(概况)
3.1.2 Resouce Usage(资源使用情况)
3.1.3 Hypervisors(虚拟机管理器)
3.1.4 Instances(云主机)
3.1.5 Volumes(云硬盘)
3.1.6 Flavors(云主机类型)
3.1.7 Images(镜像)
3.1.8 Networks(网络)
3.1.9 Routers(路由)
3.1.10 Defaults(默认值)
3.1.11 System Info(系统信息)
3.1 System Panel(系统面板)
3.2 Identity Panel(认证面板)
4 Project(普通用户)
4.1 创建网络
4.2 创建路由器
4.3 Set Gateway
4.4 查看网络拓扑
4.5 设置安全组
4.6 创建秘钥
4.7 申请Floating Ip
4.8 创建虚拟机
用户注册的功能,这个并不难,可以自己开发。不过目前是不支持用户找回密码,这个是需要keystone的支持https://bugs.launchpad.net/keystone/+bug/884451 ,Dashboard才能实现取回密码。
基本所有的系统,都是右上角 “setting” 进行用户的设置
对于Dashboard来说,分为3栏,项目,管理员和Settings,
不过目前来说,用户设置里的语言和时区的设置,只是保存在cokie里,没没有存放在数据库里。默认语言是根据浏览器的语言来决定。用户的个性化的 设置,都是无法保存。因为目前keystone无法存放这些数据。你也无法修改用户的邮箱,所以也就导致你无法实现取回密码功能。https://bugs.launchpad.net/horizon/+bug/884492
如果希望修改默认时区,你需要修改 /etc/openstack-dashboard/local_settings 文件,不过我尝试修改,重启Apache,并不生效,还没确认这是否是bug。
#TIME_ZONE = "UTC"TIME_ZONE = "Asia/Chongqing"
例如虚拟机的数量太多,需要分页,多少条一页,这个目前还是无法实现。https://blueprints.launchpad.net/horizon/+spec/v3-pagination-support
据说这次香港峰会,会集中讨论这个问题,因为各个组件都有类似的需求。
在最新的H版本,用户已经可以修改自己的密码,修改完密码后,会强行退出再登陆,因为token需要update。很难想象,这样简单的功能,居然是到H版本才实现。
密码强度要求,这个其实可以在前端去实现,不过密码过期的功能,目前是没有,这个也是需要keystone提供的功能。https://blueprints.launchpad.net/keystone/+spec/user-password-expiration
用户操作日志也是没有的,用户的所有操作,都有消息提醒,不过这些消息,都没有记录下来,对于Dashboard来说,他是不知道记录在哪里,目前 看来应该是Ceilometer该做的事情。有一个stacktach的项目,可以将notification持久化,并且可以在web页面上进行搜索, 或者使用cli做分析。
这个tab,只有管理员权限的用户才能访问。
Overview:这里会列出所有的系统的虚拟机使用情况。包括删除的虚拟机。可以下载Excel表格,其实简单的计量功能。对于起步阶段,应该是可以满足计费的需求。目前我下载的CSV,中文是乱码,这也是一个bug:https://bugs.launchpad.net/horizon/+bug/1226910
项目名字,其实就是租户,在Openstack里,有点混乱,不同的版本,有时候是租户,有时候是project,没有接触过共有云的人,对租户的概念接触比较少,不好理解。你就把租户或项目理解成部门或者企业,租户下才有用户,用户才能设置密码。
这个是H版本新增加的功能,显示系统资源的使用情况。这是通过Ceilometer实现的功能,目前Ceilometer在计量方面做的工作,还是不错的,不过在监控上,还是比较弱。估计这也是为啥目前Redhat在RDO项目里集成Nagios的原因。
这里就使用的租户的概念,显示磁盘,网络的使用情况。而且只是30天内,无法自己定义范围,等待日后完善吧。
网络的使用情况,上面都是Neutron的影子
Stats这个标签是重点,可以让你查看某个时间段的使用情况。等日后产生数据,再好好查看一下。
这也是H版本新增加的功能,显示物理机器的资源情况,cpu,内存和硬盘,虚拟机数量
不过这里其实显示的结果是有点问题。
VCPU(total)其实是物理资源,就是cpu的核数*2 (超线程),这样的描述让人误会。提交了一个bug https://bugs.launchpad.net/horizon/+bug/1202965
你可以使用的VCPU:nova会把物理的cpu的核数,按照默认16:1进行虚拟化,这个比例你可以自己设置。但是目前通过api,你是无法获取虚拟化的比例,导致无法正确显示。
内存和硬盘,情况都是一样,默认内存是1.5:1,硬盘,好像是1:1
另外还有一个小问题,就是host无法点击进入详细页面,显示更多信息,例如在这台机器的虚拟机列表。
这里就是列出所有的虚拟机,并且可以对虚拟机进行操作,例如迁移,删除等。这个地方的信息比Overview详细很多。
显示用户使用和创建的卷。H版本增加的Volume Types的功能,就是假设你有两种的存储,高速的SSD,和普通的SAS存储,你通过volume Type区分,用户创建卷的时候进行选择。
管理员必须添加一个volume type,用户才能创建卷。
创建出来的volume type,如何和后端的存储进行绑定,我还没看明白,至少Dashboard目前是没有提供这个功能。
卷的列表里,是可以对卷进行删除操作。
这个其实看上去比较简单,其实非常复杂。目前默认有5个Flavor,你可以编辑Flavor,创建Flavor.
目前支持指定某个Flavor给租户使用。当用户要求的虚拟机不在Flavor里,那么你就可以使用这种方式,为特定的租户创建一个Flavor。 目前AWS,国内的青云,应该都是类似这种方式。Public=true,表示所有租户都可以使用,Public=False 表示只有某些租户可以使用。
普通用户是不能自己创建Flavor,也不能自己定义虚拟机的配置。不过对于私有云来说,其实是可以通过扩展一下nova的API就可以实现。这个同事已经验证,类似青云那种设计,用户可以自己定义虚拟机配置。
Flavor extra Specs:这个地方看上去不起眼,不过很多功能和需求,都是可以通过这个地方满足,例如你希望对虚拟机的cpu资源限制,网络带宽限制,磁盘IO限制,都可以通过这里设置参数。
目前添加这些参数,还是非常复杂,这个Blueprint是专门解决这个问题,Intel网卡的pci_passthrough的功能,都是通过这里进行设置 https://blueprints.launchpad.net/horizon/+spec/flavor-extra-specs-templates
就是镜像的管理,可以上传镜像,你需要知道你上传的image是什么格式。Glance支持很多格式,但是对于企业来说,其实用不了那么多格式,你可以进行配置,具体 http://openstack.redhat.com/forum/discussion/554/havana-horizon-no-formats-available-for-images/p1
可以使用一个ubuntu做好的image:链接填写下面地址就可以。
http://cloud-images.ubuntu.com/precise/current/precise-server-cloudimg-amd64-disk1.img
我上传了一个Ubuntu 12.04的官方提供的image。这个image的格式是QCOW2,你需要指定,否则会出错。
Public, 就是表示该Image可以所有租户都可以看见。对于Image来说,用户自己也是可以上传image,设置是否只是自己访问,还是所有租户都可以看见。
Protected:如果打钩,那么你在列表里就无法删除,可以避免误删除。如果需要删除,通过编辑,去掉打钩,就可以删除。
镜像对硬盘和内存的最小需求,其实是为了日后创建虚拟机的时候,如果Flavor无法满足Image的需求的情况下,就会隐藏该Flavor。https://bugs.launchpad.net/horizon/+bug/1116122 这个功能在H版本,应该是有机会实现,作为一个Bug修复。
可以从本地上传一个操作系统的ISO
我尝试上传4G的ISO,百兆的网络,火狐下,居然一点问题都没有,上传成功。
使用ISO来安装操作系统,你需要创建一个单独的Flavor,或者修改已有的Flavor,让Ephemeral disk不为0,你才能进行安装。
设置Protected,就没有more的删除按钮。
目前在image的详细页面里,image的上传时间UTC时间,而不是你设置的时区的时间。这个有待改进的地方。
这部分是我一直没搞明白的,借助龚永生的文档,终于搞定。这篇文档,所有打算玩Neutron,都应该好好看看。http://www.ustack.com/blog/neutron_intro/ 网络部分,还有很多细节,后面逐步完善。
这里管理员创建的网络,有点类似数据中心的接入,联通线路,电信线路。对于租户来说,可以选择不同的线路出去。不过目前路由器的出口,只能是1条线路。
我实验有一个网络 10.1.198.0/24 专门给虚拟机的Floating IP使用,网关是10.1.198.1。如果你希望你的网络和机器的网络是一个网段,可以参考文档 http://openstack.redhat.com/Neutron_with_existing_external_network 不过我没试验成功。
记住要勾选External Network, 点击创建。
进入网络的详细页面,
extnet的详细资料,黄色的部分,应该好好理解,我是采用RDO all in One安装,所以网络是local,
创建Subnet,所谓Subnet,我的理解就是Floating IP 地址池,分配公网IP给虚拟机。
Subnet Detail,这里是不需要设置。
添加后
管理员不需要创建路由器,可以查看到所有租户创建的路由器,并且进行删除。
这是系统的默认设置,目前就只有Quotas的默认设置,你可以修改这些默认设置,这样非常方便。
通过 Update Defaults,可以修改所有的Quota的默认设置,如果你希望对用户不做限制,那么就设置成-1.
作为管理员,还有一个需求,可以订制安全组的默认设置,这个功能,下一个版本应该是可以加入。
系统的基本信息
对于Openstack,有几个概念,让大家很头疼,需要搞明白
来源:http://kimizhang.wordpress.com/2013/08/26/openstack-zoning-regionavailability-zonehost-aggregate/
Region:这个概念来自亚马逊,可以理解成一个地区,一个Region,其实是可以对应多个数据中心,这几个数据中心,距离应该是100公里左右。
Availability zones(AZ):AZ,其实我的理解就是Region的某个数据中心,或者一个数据中心里,不同供电的机房单元类似的概念。
Cell:当你的在一个数据中心大规模部署的时候,节点数量到了一定程度,那么就会有服务产生瓶颈,那么如何扩展呢?每个Cell有自己的消息队列 和数据库服务,不过所有的Cell,都是统一的Nova API接口。就是一个Region下可以有多个Cell,每个Cell里,有自己的消息队列,数据库。
Host Aggregates:这个主要用途是设置调度,让某个image或者某个Flavor,创建在某些服务器上。
http://russellbryantnet.wordpress.com/2013/05/21/availability-zones-and-host-aggregates-in-openstack-compute-nova/
http://www.mirantis.com/blog/segregation-in-grizzly-availability-zones-versus-host-aggregates/
Service
Compute Service
Availability Zones
Host Aggregates
Netwrok Agent
H版本增加了Domain的功能,不过Dashboard应该仅仅是显示,还没搞明白Domain的用途。
编辑
Domain Groups
Project,相当于租户,系统内置两个租户
为了试验,我创建一个test租户
由于我现在还没有创建用户,所以别的tab不需要设置
系统会创建很多服务的用户
我们这里创建一个用户:chenshake, 添加到project:test
你可以创建组,可以往组里添加用户,不过这个组,我是没搞明白如何使用。
这是系统内置的Roles,添加roles,仅仅是添加一个名字,没有任何地方可以设置。
这里我不是使用管理员的账号,而是使用我文档上面创建的用户:chenshake 登陆进行完成。下面我就不按照菜单的顺序来介绍,而是按照一个虚拟机的创建流程来截图。
Create Network
直接创建就可以,不需要设置subnet detail
结果如图
路由详情
添加Interface
Subnet,就会显示刚才创建的网络,点击创建
结果
默认的安全组,是拒绝所有的访问,
我们需要打开22端口和允许ping。
22端口
允许ping
看看结果
下载到windows本地。
结果
Flavor选择的时候,需要注意,不能选择tiny,因为我的Ubuntu的镜像要求比tiny大。
选择网络
把网络添加完,就可以创建虚拟机
分配floating Ip
选择刚才申请的IP
大概过1,2分钟
这个时候,你就可以ping通虚拟机和ssh到虚拟机上面。