文章目录
技术
虚拟化
云计算
- 一种业务模式(资源池)
- 按需分配,随时伸缩
- 通过互联网传输
云计算的实现需要依托虚拟化技术
OpenStack
openstack是由许多开源项目堆积起来的,对应IaaS(基础设施即服务)。计算功能借助于VMware。
项目
- Nova 计算服务
- Neutron 网络服务
- Cinder 块存储,磁盘挂载
- Glance 镜像服务
- Keystone 认证服务
- Swift 对象存储,存储文件系统
OpenStack发展演进
版本更新很快
- 2010.6 OpenStack诞生
- 2010.10 Austin Nova Swift
- 2011.2 Bexar Glance
- 2011.4 Cactus
- 2011.10 Diablo Keystone Horizon
- 2012.4 Essex
- 2012.10 Folsom Quantum Cinder
- 2013.4 Grizzy
- 2013.10 Havana Quantum->Neutron
- 2014.4 Icehouse
- 2014.10 Juno
- 2015.4 Kilo
- 2105.10 Liberty
OpenStack特点
OpenStack开发语言为Python
组件与组件之间通过api交互,组件内部通过消息队列交互
OpenStack架构设计特点:无中心、分布式、异步执行(发送方把消息发送到消息队列中)、插件化可配置、Restful API
OpenSatck架构优势:部署灵活、易扩展、易集成
Docker:提供了一种程序运行的容器,同时保证这些容器相互隔离
底层技术(虚拟化)
计算虚拟化
CPU特权级:ring0【内核态】、ring1、ring2、ring3【用户态】 (x86)
数字越小特权级越高
计算虚拟化解决多个cpu的虚拟
hypervisor 虚拟化管理程序
虚拟化管理程序VMM
- 半虚拟化 TYPE2
对客户操作系统的内核进行修改 - 全虚拟化
硬件辅助虚拟化 TYPE1
一个cpu虚拟成多个cpu
客户操作系统不需要修改
全虚拟化的性能优于半虚拟化
libvirt
libvirt是一套免费、开源的支持Linux下主流虚拟化管理程序的C函数库,为包括KVM在内的各种虚拟化管理程序提供一套方便、可靠的接口。
关键名词:
- 节点Node:一个物理机,上面可能运行着多个虚拟客户机
- 域Domain:在Hypervisor上运行的一个客户机操作系统实例
网络虚拟化
数据链路层:提供可靠的点对点数据直链
网络层:在网络的各个节点之间进行地址分配
软件定义网络SDN
使用软件驱动底层硬件,处理数据平面的编排
Open vSwitch
- 简称OVS。常用在虚拟化平台,为虚拟机提供二层交换功能,支持Xen/XenServer,KVM,VirtualBox多承虚拟化技术。
- 支持openflow协议,可以使用任何支持openflow协议的控制器对OVS进行远程管理控制。
重要概念:
- Bredge:代表一个以太网交换机,一个主机中可以创建一个或者多个Bridge设备
Linux Bridge
跟二层交换机功能相似,在linux内核中,稳定性高
通用组件
L版本之后使用Python3
L之前的使用python2
Rest
- rest是一种架构风格,其核心是面向资源,基于http协议
- HTTP协议里面,四个表示方式的动词:GET、POST、PUT、DELETE
- GET用来获取资源、POST用来新建资源、PUT用来更新或新建资源、DELETE用来删除资源
WSGI
WSGI web server gateway interface
- WSGI是一个规范,描述了web server如何与web application交互、web application如何处理请求
- WSGI包含Server、Middleware、Application
Paste Deployment
Paste Deployment (简称PD)是一个WSGI工具包
MariaDB
关系数据库
openstack核心项目keystone、cinder、glance、neutron、nova等均使用到它来配置持久型关系数据库
RabbitMQ
MQ是消费者-生产者模型的一个典型的代表,一端网消息对流中不断写入信息,另一端可以读取或者订阅队列中的消息
主要名词:
- 交换器 exchange
- 队列 queue
- 绑定器 bind
opensatck中模块cinder、neutron、nova等项目的内部之间的通信是通过AMQP协议实现,消息由RabbitMQ作为中间件转发