2013年12月5日星期四

Openstack Havana Dashboard测试和使用--讲的是管理界面的使用

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.

 

登陆

Snap4
用户注册的功能,这个并不难,可以自己开发。不过目前是不支持用户找回密码,这个是需要keystone的支持https://bugs.launchpad.net/keystone/+bug/884451 ,Dashboard才能实现取回密码。

Setting


用户设置

基本所有的系统,都是右上角 “setting” 进行用户的设置
Snap5
对于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
据说这次香港峰会,会集中讨论这个问题,因为各个组件都有类似的需求。

修改密码


Snap6
在最新的H版本,用户已经可以修改自己的密码,修改完密码后,会强行退出再登陆,因为token需要update。很难想象,这样简单的功能,居然是到H版本才实现。
密码强度要求,这个其实可以在前端去实现,不过密码过期的功能,目前是没有,这个也是需要keystone提供的功能。https://blueprints.launchpad.net/keystone/+spec/user-password-expiration
用户操作日志也是没有的,用户的所有操作,都有消息提醒,不过这些消息,都没有记录下来,对于Dashboard来说,他是不知道记录在哪里,目前看来应该是Ceilometer该做的事情。有一个stacktach的项目,可以将notification持久化,并且可以在web页面上进行搜索,或者使用cli做分析。

Admin(管理员权限)

这个tab,只有管理员权限的用户才能访问。

System Panel(系统面板)

Overview(概况)

Overview:这里会列出所有的系统的虚拟机使用情况。包括删除的虚拟机。可以下载Excel表格,其实简单的计量功能。对于起步阶段,应该是可以满足计费的需求。目前我下载的CSV,中文是乱码,这也是一个bug:https://bugs.launchpad.net/horizon/+bug/1226910
项目名字,其实就是租户,在Openstack里,有点混乱,不同的版本,有时候是租户,有时候是project,没有接触过共有云的人,对租户的概念接触比较少,不好理解。你就把租户或项目理解成部门或者企业,租户下才有用户,用户才能设置密码。
Snap7

Resouce Usage(资源使用情况)

这个是H版本新增加的功能,显示系统资源的使用情况。这是通过Ceilometer实现的功能,目前Ceilometer在计量方面做的工作,还是不错的,不过在监控上,还是比较弱。估计这也是为啥目前Redhat在RDO项目里集成Nagios的原因。
Snap9
这里就使用的租户的概念,显示磁盘,网络的使用情况。而且只是30天内,无法自己定义范围,等待日后完善吧。
Snap10
网络的使用情况,上面都是Neutron的影子
Snap11
Stats这个标签是重点,可以让你查看某个时间段的使用情况。等日后产生数据,再好好查看一下。
Snap13

Hypervisors(虚拟机管理器)

这也是H版本新增加的功能,显示物理机器的资源情况,cpu,内存和硬盘,虚拟机数量
Snap14
不过这里其实显示的结果是有点问题。
VCPU(total)其实是物理资源,就是cpu的核数*2 (超线程),这样的描述让人误会。提交了一个bughttps://bugs.launchpad.net/horizon/+bug/1202965
你可以使用的VCPU:nova会把物理的cpu的核数,按照默认16:1进行虚拟化,这个比例你可以自己设置。但是目前通过api,你是无法获取虚拟化的比例,导致无法正确显示。
内存和硬盘,情况都是一样,默认内存是1.5:1,硬盘,好像是1:1
另外还有一个小问题,就是host无法点击进入详细页面,显示更多信息,例如在这台机器的虚拟机列表。

Instances(云主机)

这里就是列出所有的虚拟机,并且可以对虚拟机进行操作,例如迁移,删除等。这个地方的信息比Overview详细很多。
Snap15

Volumes(云硬盘)

显示用户使用和创建的卷。H版本增加的Volume Types的功能,就是假设你有两种的存储,高速的SSD,和普通的SAS存储,你通过volume Type区分,用户创建卷的时候进行选择。
管理员必须添加一个volume type,用户才能创建卷。
Snap16
创建出来的volume type,如何和后端的存储进行绑定,我还没看明白,至少Dashboard目前是没有提供这个功能。
卷的列表里,是可以对卷进行删除操作。
Snap18

Flavors(云主机类型)

这个其实看上去比较简单,其实非常复杂。目前默认有5个Flavor,你可以编辑Flavor,创建Flavor.
Snap19
目前支持指定某个Flavor给租户使用。当用户要求的虚拟机不在Flavor里,那么你就可以使用这种方式,为特定的租户创建一个Flavor。目前AWS,国内的青云,应该都是类似这种方式。Public=true,表示所有租户都可以使用,Public=False 表示只有某些租户可以使用。
Snap20
普通用户是不能自己创建Flavor,也不能自己定义虚拟机的配置。不过对于私有云来说,其实是可以通过扩展一下nova的API就可以实现。这个同事已经验证,类似青云那种设计,用户可以自己定义虚拟机配置。
Flavor extra Specs:这个地方看上去不起眼,不过很多功能和需求,都是可以通过这个地方满足,例如你希望对虚拟机的cpu资源限制,网络带宽限制,磁盘IO限制,都可以通过这里设置参数。
Snap21
目前添加这些参数,还是非常复杂,这个Blueprint是专门解决这个问题,Intel网卡的pci_passthrough的功能,都是通过这里进行设置 https://blueprints.launchpad.net/horizon/+spec/flavor-extra-specs-templates

Images(镜像)

就是镜像的管理,可以上传镜像,你需要知道你上传的image是什么格式。Glance支持很多格式,但是对于企业来说,其实用不了那么多格式,你可以进行配置,具体http://openstack.redhat.com/forum/discussion/554/havana-horizon-no-formats-available-for-images/p1
可以使用一个ubuntu做好的image:链接填写下面地址就可以。
Snap23
我上传了一个Ubuntu 12.04的官方提供的image。这个image的格式是QCOW2,你需要指定,否则会出错。
Public, 就是表示该Image可以所有租户都可以看见。对于Image来说,用户自己也是可以上传image,设置是否只是自己访问,还是所有租户都可以看见。
Protected:如果打钩,那么你在列表里就无法删除,可以避免误删除。如果需要删除,通过编辑,去掉打钩,就可以删除。
镜像对硬盘和内存的最小需求,其实是为了日后创建虚拟机的时候,如果Flavor无法满足Image的需求的情况下,就会隐藏该Flavor。https://bugs.launchpad.net/horizon/+bug/1116122  这个功能在H版本,应该是有机会实现,作为一个Bug修复。
可以从本地上传一个操作系统的ISO
Snap24
我尝试上传4G的ISO,百兆的网络,火狐下,居然一点问题都没有,上传成功。
使用ISO来安装操作系统,你需要创建一个单独的Flavor,或者修改已有的Flavor,让Ephemeral disk不为0,你才能进行安装。
Snap26
设置Protected,就没有more的删除按钮。
目前在image的详细页面里,image的上传时间UTC时间,而不是你设置的时区的时间。这个有待改进的地方。

Networks(网络)

这部分是我一直没搞明白的,借助龚永生的文档,终于搞定。这篇文档,所有打算玩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  不过我没试验成功。
Snap29
记住要勾选External Network, 点击创建。
进入网络的详细页面,
Snap26
extnet的详细资料,黄色的部分,应该好好理解,我是采用RDO all in One安装,所以网络是local,
Snap27
创建Subnet,所谓Subnet,我的理解就是Floating IP 地址池,分配公网IP给虚拟机。
Snap31
Subnet Detail,这里是不需要设置。
添加后
Snap32

Routers(路由)

管理员不需要创建路由器,可以查看到所有租户创建的路由器,并且进行删除。

Defaults(默认值)

这是系统的默认设置,目前就只有Quotas的默认设置,你可以修改这些默认设置,这样非常方便。
Snap27
通过 Update Defaults,可以修改所有的Quota的默认设置,如果你希望对用户不做限制,那么就设置成-1.
作为管理员,还有一个需求,可以订制安全组的默认设置,这个功能,下一个版本应该是可以加入。

System Info(系统信息)

系统的基本信息
对于Openstack,有几个概念,让大家很头疼,需要搞明白
openstack-zoning
Region:这个概念来自亚马逊,可以理解成一个地区,一个Region,其实是可以对应多个数据中心,这几个数据中心,距离应该是100公里左右。
Availability zones(AZ):AZ,其实我的理解就是Region的某个数据中心,或者一个数据中心里,不同供电的机房单元类似的概念。
Cell:当你的在一个数据中心大规模部署的时候,节点数量到了一定程度,那么就会有服务产生瓶颈,那么如何扩展呢?每个Cell有自己的消息队列和数据库服务,不过所有的Cell,都是统一的Nova API接口。就是一个Region下可以有多个Cell,每个Cell里,有自己的消息队列,数据库。
Host Aggregates:这个主要用途是设置调度,让某个image或者某个Flavor,创建在某些服务器上。
Service
Snap28

Compute Service
Snap33
Availability Zones
Snap34
Host Aggregates
Snap35
Netwrok Agent
Snap36

Identity Panel(认证面板)

Domains(域)

H版本增加了Domain的功能,不过Dashboard应该仅仅是显示,还没搞明白Domain的用途。

Snap31
编辑
Snap32
Domain Groups
Snap33

Projects(项目)

Project,相当于租户,系统内置两个租户
Snap34
为了试验,我创建一个test租户
Snap35
由于我现在还没有创建用户,所以别的tab不需要设置

Users(用户)

系统会创建很多服务的用户
Snap36
我们这里创建一个用户:chenshake, 添加到project:test
Snap37

Groups(组)

你可以创建组,可以往组里添加用户,不过这个组,我是没搞明白如何使用。
Snap38

Roles(角色)

这是系统内置的Roles,添加roles,仅仅是添加一个名字,没有任何地方可以设置。
Snap40

Project(普通用户)

这里我不是使用管理员的账号,而是使用我文档上面创建的用户:chenshake 登陆进行完成。下面我就不按照菜单的顺序来介绍,而是按照一个虚拟机的创建流程来截图。

创建网络

Snap42
Create Network
Snap45

Snap46
直接创建就可以,不需要设置subnet  detail
Snap47

创建路由器

Snap49
Snap51

Set Gateway

Snap52
Snap53
结果如图
Snap57

路由详情
Snap58
添加Interface
Subnet,就会显示刚才创建的网络,点击创建
Snap59
结果
Snap60

查看网络拓扑

Snap67

设置安全组

Snap61
默认的安全组,是拒绝所有的访问,
Snap62
我们需要打开22端口和允许ping。
22端口
Snap64
允许ping
Snap65

看看结果
Snap63

创建秘钥

Snap66
下载到windows本地。

申请Floating Ip

Snap73
Snap74
结果
Snap75

创建虚拟机

Flavor选择的时候,需要注意,不能选择tiny,因为我的Ubuntu的镜像要求比tiny大。
Snap71
Snap69
选择网络
Snap70
把网络添加完,就可以创建虚拟机
Snap72
分配floating Ip
Snap76
选择刚才申请的IP
Snap77
大概过1,2分钟
Snap78
这个时候,你就可以ping通虚拟机和ssh到虚拟机上面。