openstack
云操作系统(OpenStack),用于联动计算、存储、网络资源,OpenStack和控制器以及网络增值设备如负载均衡设备或防火墙设备采用plugin对接。
OPENSTACK
基础
Openstack架构分布特点
Openstack采用模块化的设计,每个功能由单一的模块组件提供,模块与模块之间使用标准的RPC远程过程调用机制,接口为Restful API。
RPC
RPC定义:Remote Procedure Call(远程过程调用),是从远程主机调用一个过程/函数的机制。
RPC目标:让远程过程(服务)调用透明化;Openstack整体组件间的通信机制采用的就是RPC的方式。
Restful API
Restful api 是openstack各服务调用的接口,简单理解为可以通过网络去调用的函数。
⚫ 它是一种通过使用URL链接,通过HTTP协议里面,四个表示操作方式的动词:POST、GET、PUT、DELETE来对资源进行统一的操作。
⚫ Restful api的四大特点
➢ 使用HTTP方法;调用命令的CRUD(Create, Read, Update, Delete),对应着HTTP的四个动作。
➢ 无状态;无需关注服务端对会话的保存,更易于实现集群、负载均衡等功能,实现组件间的松耦合。
➢ URI命名/组织采用类似目录结构;通过目录的方式,对资源进行管理。
➢ 采用XML、JSON传输信息;易于编程解读。
openstack的重要组件
Nova —— 提供计算,按需响应包括生成,调度,回收虚拟机等
Neutron —— 提供网络连接
Cinder —— 提供块存储
Keystone —— 提供认证和授权
Glance —— 存储和检索虚拟机磁盘镜像
各组件关联关系
MQ
⚫ MQ全称为Message Queue,应用程序通过读写出入队列的消息(针对应用程序的数据)来通信,而无需专用连接来链接它们。
⚫ 服务内组件之间的消息全部通过MQ来进行转发,包括控制、查询、监控指标等。
RabbitMQ
RabbitMQ的特点
➢ 健壮的message(可靠性、灵活的routing、集群)
➢ 使用简单
➢ 支持所有主流操作系统
➢ 支持大量的平台
RabbitMQ中的角色
➢ Producer:消息生产者,就是投递消息的程序。
➢ Consumer:消息消费者,就是接受消息的程序。
RabbitMQ的工作流程
RabbitMQ工作中有一下几个概念需要理解:
➢ Exchange:消息交换机制,它指定消息按什么规则,路由到哪个队列。
➢ Queue:消息队列载体,每个消息都会被投入到一个或多个队列。
➢ Binding:绑定,它的作用就是把exchange和queue按照路由规则绑定起来。
➢ Routing Key:路由关键字,exchange根据这个关键字进行消息投递。
➢ Connection: 就是一个TCP连接。Producer和Consumer都是通过TCP连接到RabbitMQ Server的。以后我们可以看到,程序的起始就是建立这个TCP连接。
➢ Channel:消息通道,是在TCP连接中的虚拟连接,在客户端的每个TCP连接里,可建立多个channel,每个channel代表一个会话任务
RabbitMQ高可用模式
RabbitMQ作为整个openstack通讯的载体平台,如服务出现问题则会造成整个系统的瘫痪,所以现网对RabbitMQ基本是以集群的模式进行,常用集群分普通集群和镜像集群两种。