OpenStack架构学习小结
1. 关于云计算
定义: 云计算是一种IT资源的交付和使用模式。通过网络以按需,易拓展的方式获得所需的资源(硬件,平台,软件及服务等)。提供资源的网络被称为“云”。 特征: 提供服务,可伸缩,共享,按需付费
–
2. 云计算系统分层体系架构
- 应用软件层
- 云系统软件层
- 云操作系统层
- 云硬件资源
– 1.云硬件资源层与pc系统不同点:
- 资源不单是单台服务器的内部资源,利用网络链接
- 资源分布在大量的服务器,存储设备上
- 资源也可能分布在多个数据中心
- 资源量很大,而且异构
– 2.云操作系统:
- 资源管理功能: 向上呈现统一的,抽象的资源视图,实现统一的资源监控,资源调度和资源生命周期管理(物理资源,虚拟资源,集群管理)
- 调度管理功能: 根据一定的调度策略和算法,为上层的各类软件,应用和任务优化分配资源,解决计算人物并行执行同步的问题
- 文件存储功能: 通过对底层的分布式存储资源进行抽象,为上层软件,应用和任务提供对文件,对象和数据的存储能力
– 3.云系统软件层
-
由支撑上层云应用软件执行的“部件”组成:
- 数据库
- 运行环境
- 应用框架
- 函数库
-
……
-
与pc系统差别:
- 不同开发商同时在其上进行开发,测试和运行
- 不同应用共享系统软件:数据库,文件系统等
– 4.云应用软件层
-
承载和运行各类用户或提供商的应用软件,应用和任务,给予paas层开发的“云应用”有:
- Azure
- GAE
3. 云系统架构与服务体系的对应关系
- 云应用软件—-saas
- 云系统软件—-paas
- 云操作系统—-iaas
- 云硬件资源—-云硬件资源
4. IaaS
定义: 将IT基础设施能力通过互联网提供给用户使用,并根据用户对资源的实际使用量或占有量进行计费的一种服务 提供的服务:
- 计算即服务
- 存储即服务
- 网络即服务
关键支撑技术:
- 服务器虚拟化(2种类型:裸金属架构,寄居架构.主要内容:cpu,内存,io设备)
- 存储虚拟化
- 网络虚拟化
- 云计算管理平台
应用场景:
- 服务提供商需要搭建和部署拥有海量资源的资源池供用户使用
- 当获得需求后,服务提供商从资源池中选取用户所需的处理器,内存,磁盘,网络等资源,并将这些资源组织称虚拟服务器提供给用户
- 用户看到的是一台能够痛过网络访问的服务器
- 用户需要负责操作系统,系统软件和应用软件的部署和管理。
5.什么是OpenStack
- 一个可以用来建立私有云和公有云的开源软件
- 良好的框架,具有良好的拓展性
- 经过验证:swift支撑100pb存储
- 虚拟化管理工具
6.OpenStack组件
- Dashboard(Horizon):提供了对于所有openstack services的一个基于web的用户界面。提供管理和使用云平台的ui界面
- Compute(Nova):将最终用户的api请求发送到正在运行的虚拟机上。提供计算即服务
- Image(Glance):主要用来管理镜像文件,这些文件在Compute中被使用。提供虚拟机镜像服务
- Ldentity(Keystone):提供验证和授权的所有openstack的服务 提供身份验证服务
- Object Store(Swift):提供对象的存储。提供存储即服务
- Network(Quantum):提供基于那些同样有nova的连接来提供对用户的服务。
- Block Storage(Cinder):给用户的虚拟机上提供持久的块存储。
7. Nova
1.Nova在openstack中的作用是:
- openstack平台的结构控制器
- 处理所有用来支持管理虚拟机生命周期的操作
- 管理所有的计算资源,网络,授权,以及提供云平台的可扩张性和可靠性
2.Nova有多个组件组成,这些组件可运行在同一服务器上,也可以单独运行在不同的服务器上。
3.Nova 设计特性
- 模块间不共享状态信息,即使是同类型的节点之间也是如此
- 模块间不直接通信都是通过messaging进行
- 异步通信
- 与虚拟层技术无关
4.Nova API节点
- 是一个提供nova-api服务的服务器
- 是外部使用和管理nova的界面
- 是外部请求转换成内部任务分发各个模块去执行,并将结果返回给请求者
5.Nova API请求流程
- 提交用户名和密码给身份验证服务器
- 返回“验证令牌“和”服务目录”
- 提交”验证令牌“ 和请求参数到nova接入端点
6.Nova messaging特点(消息队列的优势)
- 服务使用端(客户端)与服务提供端(服务器端)解耦
- 异步调用
- 容易实现服务器端负载均衡
- 分布式部署服务端
- 发布-订阅模式
8.同步和异步通信
同步定义:客户端直接请求服务器端,等待服务结果返回才能继续进行
异步定义:客户端与服务器端并不直接通信,客户端将请求的消息的形式放在请求消息队列中,然后可以处理其它业务逻辑
同步通信优势
- 更为简单而且更容易实现
- 发起方在系统中等待直到对方响应,这样避免了复杂的发送/确认/重传机制
- 实时性好
同步通信劣势
- 客户端因为需要同步等待而无法并发处理任务
- 造成服务器端的系统资源长时间被占用,服务实例因为要与客户端通信而不能在任务完成时立即处理下一个任务
- 服务实例临时不可用会造成客户端请求无法得到处理
异步通信优势
- 通信的达成只依赖于发送方和消息中间件,接收方以及网络的意外情况不造成影响
- 因为不必事先同步握手,异步通信通常效率更高
- 因为不必等待相应,异步通信倾向于实现更短的交易处理,节省系统资源占用
- 有利于提高系统并发度,提高系统吞吐能力
- 更有利于实现松耦合的系统结构
异步通信劣势
- 实现复杂
9.AMQP实现通信
因素:消息
实体:交换器,队列
机制:交换器与消息队列通过消息的绑定与转发机制实现消息通信
10.消息转发中交换器(exchange)
exchange有三种类型:fanout,direct,tipic
- fanout exchange:不处理路由键,速度最快,会发送到每一个队列上
- direct exchange: 精确匹配,如routing key = cloud,那么binding key 必须也为cloud
- topic exchange: 模糊匹配,“*”代表一个单词,”#”代表0个或者多个单词
11.组件之间如何工作
交换器通过AMQP消息头(header)中的路由选择关键字(routing key)而形成的绑定规则(binding)来实现消息的转发。
12.消息调用应用程序rpc.call(请求与响应)
- 通过2次消息发送完成一次rpc
- 任务发送者使用topic模式
- 任务执行者使用直接模式返回执行结果
13.rpc.cast单向请求
- 单向消息
- 不需要返回任务执行结果
- 异步传输
14.关键概念
- Exchange:消息交换机,指定消息按什么规则路由到哪个队列,三种类型
- Queue:消息队列载体,每个消息都会被投入到一个或多个队列
- Binding:绑定,将Exchange和Queue按照规则绑定起来
- Routing Key:路由关键字
15.消息队列的工作流程
消息生产者创建,接受消息转发至消息队列,再存储转发交换器传来的消息到消息消费者。
16.Nova Scheduler主要任务
- 决定往那里发送对Compute,Volume,Network的请求
- Compute,Volume可以使用不同的策略
- Network采用随机策略
17.Filltering和Weighting
Fillter作用:过滤哪些物理服务器可以考虑来响应请求
Weighting作用:
- 对每个过滤剩余的节点进行1/n个成本计算
- 然后对每一项进行加权计算
- 选择总成本最小的节点
Fill First(+1.0): 剩余内存越少,优先级越高,一个节点上尽可能多的部署虚拟机
Spread First (-1.0): 主机剩余内存越多,优先级越高,尽量将虚拟机分散到尽可能多的节点
18.Nova Network
1.网络ip地址
- 每个虚拟机可以有两个ip地址,fixed ip(内部ip),floating ip(外部ip)
- fixed ip用来进行虚拟机之间的通信,是固定的。
- floating ip虚拟机用来和外部的通信,可变的。
2.网桥bridge的作用
- 解决虚拟机网卡连接问题
3.安全组的作用
- 过滤进入虚拟机的网络流
19.Nova Compute
1.nova compute主要任务
- 管理物理服务器和其上的虚拟机生命周期
- 接受controller的命令进行相应的管理操作
- 连接各种服务器虚拟技术的驱动模块
2.虚拟机的生命周期
- 创建create
- 开启launch
- 暂停pause
- 继续continue
- 终止terminate
- 快照snapshot
20.Glance
- glance本身不实现对镜像的存储功能
- glance是一个代理,镜像存储服务和nova之间的纽带
- 支持两种镜像存储格式:简单文件存储,swift服务存储镜像机制
21.Cinder架构优缺点
- 优点:模块之间可以灵活的相互协调,架构容易扩展
- 缺点:rabbitmq负担重