文章目录

  • 技术
  • 虚拟化
  • 云计算
  • OpenStack
  • 项目
  • OpenStack发展演进
  • OpenStack特点
  • 底层技术(虚拟化)
  • 计算虚拟化
  • hypervisor 虚拟化管理程序
  • libvirt
  • 网络虚拟化
  • Open vSwitch
  • 通用组件
  • Rest
  • WSGI
  • Paste Deployment
  • MariaDB
  • RabbitMQ


技术

虚拟化

云计算

  • 一种业务模式(资源池)
  • 按需分配,随时伸缩
  • 通过互联网传输
    云计算的实现需要依托虚拟化技术

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

  1. 半虚拟化 TYPE2
    对客户操作系统的内核进行修改
  2. 全虚拟化
    硬件辅助虚拟化 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作为中间件转发