Scaling your cloud——详解 Nova 中的 Region, Cell, Availability Zone, Host Aggregates Zone

为了提供规模化、分布式部署、资源优化利用和兼容 AWS 的功能,openstack 引入了 Region,Cell,Availability Zone(AZ) 和 Host Aggregates Zone(HAZ) 四个概念,其中 Region 和 AZ 是从公有云大哥 AWS 引入,Cell 是为了扩充一个 Region 下的集群的规模而引入的,Host Aggregates
是优化资源调度和利用引入的。这四个概念均和集群部署相关,某些地方含义有相近之处,对于初学 openstack 的童鞋来说容易混淆和模糊,本文将详细分析这四个概念。

从部署层次来说,它们有以下关系

Region > Cell > Availabiliy Zone > Host Aggregates

Region

顾名思义,Region 直译过来就是区域,地域的概念,而事实上,AWS 按地域(国家或者城市)设置一个 Region,每个 Region 下有多个 Availability Zone。Openstack 同样支持 Region 的概念,支持全球化部署,比如为了降低网络延时,用户可以选择特定的 Region 来部署服务。各个 Region 之间的计算资源、网络资源、存储资源都是独立的,但所有
Region 共享账户用户信息,因为 Keystone 是实现 openstack 租户用户管理和认证的功能的组件,所以 Keystone 全局唯一,所有 Region 共享一个 Keystone,Keystone endpoint 中存储了访问各个 Region 的 URL。

Cell

Cell 概念的引入,是为了扩充单个 Region 下的集群规模,主要解决 AMQP 和 Database 的性能瓶颈,每个 Region 下的 openstack 集群都有自己的消息中间件和数据库,当计算节点达到一定规模(和IBM,easystack,华为等交流的数据是300~500),消息中间件就成为了扩展计算节点的性能瓶颈。Cell 的引入就是为了解决单个 Region
的规模问题,每个 Region 下可以有多个 Cell,每个 Cell 维护自己的数据库和消息中间件,所有 Cell 共享本 Region 下的 nova-api,共享全局唯一的 Keystone。

官网手册提到 Cell 不成熟(Considered experimental),巴黎峰会也提到 Cell 的痛点,虽然现在已进入 K 版本迭代开发中了,但是本人还未听说业界成熟使用 Cell 的案例。关于 Cell 更详细的介绍,请参考以下链接

http://www.ibm.com/developerworks/cn/cloud/library/1409_zhaojian_openstacknovacell/index.html

Availability Zone & Host Aggregates Zone

之所以把 AZ 和 HAZ 放到一同分析,是因为二者的概念实在类似。

AWS 每个 Region 下有多个 AZ。Openstack 也引入了 AZ 的概念,我个人理解 AZ 的引入是基于安全的角度考虑,比如我们定义一个机房为一个 AZ,把该机房所有计算节点纳入到一个 AZ 中,其中一个机房因为某种原因down 掉,不会影响其它机房的虚拟机和网络;同时, AZ 对用户来说是一个可见的概念,用户创建虚拟机时,可以明确指出在哪个 AZ,用户可以通过在多个
AZ 创建虚拟机来保证高可靠性。

HAZ 也是把一批具有共同属性的计算节点划分到同一个 Zone 中,HAZ 可以对 AZ 进一步细分,一个 AZ 可以有多个 HAZ。 同一个
HAZ 下的机器都具有某种共同的属性,比如高性能计算,高性能存储(SSD),高性能网络(支持SRIOV等)。HAZ 和 AZ 另一个不同之处在于 HAZ 对用户不是明确可见的,用户在创建虚拟机时不能像指定 AZ 一样直接指定 HAZ,但是可以通过在 Instance Flavor 中设置相关属性,由 nova-scheduler 调度根据该调度策略调度到满足该属性的的 Host Aggregates Zones 中。

Availability Zone 和 Host Aggregates Zone 的使用方法

Availability Zone 使用方法

Nova 调用创建 HAZ 的 API 创建 AZ,即在创建 HAZ 时,定义一个 AZ。

$  nova   aggregate-create   HAZ-01   AZ-01

+——+—————+——————————+————+—————+

| Id      | Name         | Availability Zone          | Hosts      | Metadata   |

+——+—————+——————————+————+—————+

| 3       | HAZ-01      |  AZ-01                            |                |                    |

+——+—————+——————————+————+—————+

创建好 AZ 后,把计算节点加入到该 HAZ,因为 HAZ 属于 AZ,因此新增的计算节点也属于该 AZ

$  nova   aggregate-add-host   3   compute01

+——+————+————————+————————+——————————————+

| Id      | Name     | Availability Zone   | Hosts                     | Metadata                                    |

+——+————+————————+————————+——————————————+

| 3       | HAZ-01  | AZ-01                      | [u‘compute-1‘]     | {u‘availability_zone‘: u‘AZ-01′}   |

+——+————+————————+————————+——————————————+

创建虚拟机时,指定 AZ 名字即可

nova boot  –flavor m1.small  –image cirros –availability-zone AZ-01 vm

Host Aggregates Zone 的使用方法

配置 nova.conf

scheduler_default_filters=AggregateInstanceExtraSpecsFilter,AvailabilityZoneFilter,RamFilter,ComputeFilter

创建一个 HAZ

$   nova aggregate-create HAZ-SSD

+——+—————+————————+———+—————+

| Id      | Name         | Availability Zone   | Hosts  | Metadata   |

+——+—————+————————+———+—————+

| 4       | HAZ-SSD    | None                     |            |                    |

+——+—————+————————+———+—————+

设置 Metadata 属性

$   nova aggregate-set-metadata 4 ssd=true

+——+—————+————————+————+—————————+

| Id      | Name         | Availability Zone   | Hosts      | Metadata                  |

+——+—————+————————+————+—————————+

| 4       | HAZ-SSD    | None                     | []             | {u‘ssd‘: u‘true‘}         |

+——+—————+————————+————+—————————+

添加计算节点到 HAZ

$   nova aggregate-add-host 4 compute02

+——+—————+————————+———————+————————+

| Id      | Name         | Availability Zone   | Hosts                 | Metadata              |

+——+—————+————————+———————+————————+

| 5       | HAZ-SSD    | None                     | [u‘compute02‘] | {u‘ssd‘: u‘true‘}       |

+——+—————+————————+———————+————————+

创建 flavor

$   nova flavor-create m1.ssd auto 4096 10 2 –is-public true

+———+————+——————+———+—————+———+———+——————+————+——————+

| ID         | Name      | Memory_MB  | Disk    | Ephemeral  | Swap   | VCPUs | RXTX_Factor  | Is_Public  | extra_specs   |

+———+————+——————+———+—————+———+———+——————+————+——————+

| ......        | m1.ssd    | 4096               | 10       | 0                 |            | 2          | 1.0                  | True        | {}                   |

+———+————+——————+———+—————+———+———+——————+————+——————+

设置 flavor 属性

$   nova flavor-key m1.ssd set ssd=true

$   nova flavor-show m1.ssd

+———+————+——————+———+—————+———+———+——————+————+———————+

| ID         | Name      | Memory_MB  | Disk    | Ephemeral  | Swap   | VCPUs | RXTX_Factor  | Is_Public  | extra_specs       |

+———+————+——————+———+—————+———+———+——————+————+———————+

| ......        | m1.ssd    | 4096               | 10       | 0                 |            | 2          | 1.0                  | True        | {u‘ssd‘: u‘true‘}  |

+———+————+——————+———+—————+———+———+——————+————+———————+

采用 m1.ssd 创建虚拟机

nova boot –flavor m1.ssd –image  cirros vm_ssd

参考资料

http://docs.openstack.org/openstack-ops/content/scaling.html

http://www.ibm.com/developerworks/cn/cloud/library/1409_zhaojian_openstacknovacell/index.html

http://kimizhang.wordpress.com/tag/availability-zone/

http://blog.chinaunix.net/xmlrpc.php?r=blog/article&uid=20940095&id=4064233

时间: 2024-11-05 11:46:52

Scaling your cloud——详解 Nova 中的 Region, Cell, Availability Zone, Host Aggregates Zone的相关文章

详解Android中那些酷炫返回方式的实现

Android手机都会有返回键,不管是实体键,还是虚拟键.Android用户主要也都是通过这个返回键操控页面返回方式的,不比IOS逼格甚高的只保留一个操作键.这种方式是最普遍的返回方式,还有一种也是比较常见的,那就是页面内部自己响应.绝大多数APP每个页面的设计图顶部左侧都会有一个返回键图标,偶尔也有奇葩的设计放在底部左侧,点击这个图标即finish掉当前页面.简单的介绍完了最常见的两种方式,下面为大家介绍两种更友好的交互方式. 拿大家比较常用的三款社交软件的交互来说.腾讯微博的返回方式除去上述

CSS学习笔记(9)--详解CSS中:nth-child的用法

详解CSS中:nth-child的用法 前端的哥们想必都接触过css中一个神奇的玩意,可以轻松选取你想要的标签并给与修改添加样式,是不是很给力,它就是":nth-child". 下面我将用几个典型的实例来给大家讲解:nth-child的实际用途: Tips:还用低版本的IE浏览器的哥们请绕过! :nth-child(2)选取第几个标签,"2可以是你想要的数字" .demo01 li:nth-child(2){background:#090} :nth-child(n

详解HTTP中get和post的区别

1.详解HTTP中GET和POST的区别 http://www.jellythink.com/archives/806 2.HTTP 方法:GET 对比 POST http://www.cnblogs.com/liu-ke/p/4198815.html

详解mysql中的Using与On的用法

多用才可以体会各个关键字的用法啊... 原文来自[http://bbs.php100.com/read-htm-tid-148469.html] 在用Join进行多表联合查询时,我们通常使用On来建立两个表的关系.其实还有一个更方便的关键字,那就是Using.那么这两个关键字在使用上有啥区别呢?往下看.假设有如下两张表:    mysql> select * from pets; +---------+---------+--------+-----------+ | pets_id | ani

详解Webwork中Action 调用的方法

详解Webwork中Action 调用的方法 从三方面介绍webwork action调用相关知识: 1.Webwork 获取和包装 web 参数 2.这部分框架类关系 3.DefaultActionProxyFactory.DefaultActionProxy.DefaultActionInvocation 终于要开始 webwork 核心业务类的总结,webwork 通过对客户端传递的 web 参数重新包装,进行执行业务 Action 类,并反馈执行结果,本篇源码分析对应下图 WebWork

实例详解 EJB 中的六大事务传播属性--转

前言 事务 (Transaction) 是访问并可能更新数据库中各种数据项的一个程序执行单元 (unit).在关系数据库中,一个事务可以是一条或一组 SQL 语句,甚至整个程序.它有通常被称为 ACID 的原子性(Atomicity).一致性(Consistency).隔离性(Isolation).持续性(Durability)四大特性: 原子性(Atomicity):一个事务是一个不可分割的工作单位,事务中包括的诸操作要么都做,要么都不做. 一致性(Consistency):事务必须是使数据库

一张图详解Linux中的top命令

一张图详解Linux中的top命令及每个参数的含义:

图文详解Unity3D中Material的Tiling和Offset是怎么回事

图文详解Unity3D中Material的Tiling和Offset是怎么回事 Tiling和Offset概述 Tiling表示UV坐标的缩放倍数,Offset表示UV坐标的起始位置. 这样说当然是隔靴搔痒. 下面用*.3ds文件作为模型,介绍Tiling和Offset到底是怎么回事. 3DS格式解析 比如我有这样一个tank_player.3ds模型.右侧的'select'处的图片就是贴图. *.3ds文件最基本的内容包括顶点列表Vertices.贴图坐标列表UVs.面列表Faces.其中Ve

详解Android中的屏幕方向

详解Android中的屏幕方向 屏幕方向 是对Activity而言的,所以你可以在AndroidManifest.xml 文件中,通过<activity> 标记的screenOrientation 属性进行设定,例如: <activity android:name=".SketchpadActivity" android:screenOrientation="landscape"/><!--让该Activity总是显示为横屏-->