一 Tenant(租户)
1 资源的集合,资源的容器,资源的拥有者是租户
- 计算资源(物理机),存储资源(云硬盘),网络资源,镜像资源等等。
- 往往又叫project
- Devstack默认创建两个tenant:admin和demo
2 Tenant的配额(tenant quotas)
- Instances个数
- vcpu个数
- 内存数量
- 内部ip和公网ip数量
默认admin的配额如下:
二 User(用户)
1 认证的对象
- 访问openstack中的每一个服务,都是user这个对象去访问的
- user要归属某个tenent,默认生成admin和demo两个user
- AWS EC2没有tenant的概念,只支持user
三 role(角色)
1 权限的集合,并将权限赋给用户(role->user)
_member_:代表权限在tenant内,admin代表在所有tenant都有权限
role是可嵌套的,语法格式为:rule:[result]
- rule表明这条规则是啥,对应一个action,以scope:action的形式出现
- result代表rule的判定结果
四 service(服务)
Openstack包含的每个模块都有一个服务
对外提供REST API-Representational State Transfer(表述性状态转移)
- 如何正确的、统一的使用web标准
- 将所有的对象定义为唯一的ID
- 将所有的对象管理一起
- 使用标准方法
- 资源多重表述
- 无状态通信(或交互)
五 endpoint(服务的网络地址)
[root@controller0 ~]# nova endpoints
+-------------+----------------------------------+
| glance | Value |
+-------------+----------------------------------+
| adminURL | http://controller0:9292 |
| id | 0ce6051ae46c45b7807b307103e51b09 |
| internalURL | http://controller0:9292 |
| publicURL | http://controller0:9292 |
| region | regionOne |
+-------------+----------------------------------+
+-------------+-------------------------------------------------------------+
| nova | Value |
+-------------+-------------------------------------------------------------+
| adminURL | http://controller0:8774/v2/4e845b494bf74cbf89213bf552db8599 |
| id | 3a080f9956db47b3811328f30e4c77b0 |
| internalURL | http://controller0:8774/v2/4e845b494bf74cbf89213bf552db8599 |
| publicURL | http://controller0:8774/v2/4e845b494bf74cbf89213bf552db8599 |
| region | regionOne |
| serviceName | nova |
+-------------+-------------------------------------------------------------+
+-------------+----------------------------------+
| neutron | Value |
+-------------+----------------------------------+
| adminURL | http://controller0:9696 |
| id | 90d8c77ce55143f596827769bf86698c |
| internalURL | http://controller0:9696 |
| publicURL | http://controller0:9696 |
| region | regionOne |
+-------------+----------------------------------+
+-------------+----------------------------------+
| keystone | Value |
+-------------+----------------------------------+
| adminURL | http://controller0:35357/v2.0 |
| id | 4578c1e95d7b4ae7a6854924d0546e01 |
| internalURL | http://controller0:5000/v2.0 |
| publicURL | http://controller0:5000/v2.0 |
| region | regionOne |
+-------------+----------------------------------+
六 Tenant-User-Role-Permission之间的相互关系
七 Region(分区)
- 地理上的概念,每个region有自己独立的endpoint,一个独立的数据中心。
- regions之间完全隔离,但是多个region之间共享一个keystone和dashboard。(注:目前openstack的dashboard还不支持多region)
- 除了提供隔离的功能,region的设计更多侧重地理位置的概念,用户可以选择离自己更近的region来部署自己的服务。
- region是AWS(亚马逊)提出的概念。
- 是为了解决容错性和可靠性
八 Availability Zone
- az是在region范围内的再次切分,例如可以把一个机架上的机器划分在一个az中,划分az是为了提高容错性和提供廉价服务。(机架独立供电)
- 选择不同的region主要考虑哪个region靠近你的用户群体,比如用户在美国,自然会选择离美国近的region。
- az主要是通过冗余来解决可用性问题,在亚马逊的声明中,instance不可用指的是用户所有az中的同一instance都不可达才表明不可用
- az是用户可见的一个概念,用户在创建instance的时候可以选择创建到哪些AZ中。
1 packstack搭建环境中的az
2 devstack搭建环境中的az
九 Host Aggreates
1 一组节点的组合,但强调这组节点具有共同的属性。
cpu是指定类型的一组节点,disks是ssd的一组节点,os是linux或windows
2 用户不可见概念,主要用来给nova-scheduler调度算法使用
数据库服务的instances都调度到具有ssd属性的Host Aggregate中
某个flavor或某个image的instance调度到同一个Host Aggregate中
十 Cell
1 主要用来解决openstack的扩展型和规模瓶颈
2 每个cell有自己独立的DB和AMQP
openstack是由很多的组件通过松耦合构成,当达到一定的规模后,某些模块必然成为整个系统的瓶颈,比较典型的组件就是database和AMQP
3 cell实现为树形结构,自然而然引入了分级调度的概念。
4 通过在每级cell中引入nova-cell服务,实现了以下功能
- Messages的路由,即父cell通过nova-cell将Message路由到子cell的AMQP模块。
- 分级调度功能,即调度某个instances的时候先要进行cell的选择,支持filter和weighing的调度策略。
- 资源统计,子cell定时的将自己的资源信息上报给父cell,用来给分级调度策略提供决策数据和基于cell的资源监控。
- cell之间的通信(通过rpc完成)
十一 高级概念图示