OpenStack云计算基础
1 云计算概述
1.1 云计算架构
-
laaS(基础设施即服务)
-
PaaS(平台即服务)
-
SaaS(软件即服务)
1.2 云计算部署模式
1.2.1 公共云
- 面向公众提供的应用和存储等资源,为外部客户提供服务。
- 最大优点是其所应用的程序、服务及相关数据都存放在公共云端,用户无需做相应的投资和建设。
- 安全性存在一定风险,可用性不受用户控制,存在一定的不确定性。
1.2.2 私有云
- 服务不是供公众使用,而是供自己内部人员或分支机构使用。
- 数据安全性、系统可用性、服务质量都可由自己控制。
- 细分为自有私有云和托管私有云。
1.2.3 混合云
- 既面向公共空间又面向私有空间提供服务,可以发挥出所混合的多种云计算模型各自的优势。
- 有助于提供所需的、外部供应的扩展。
2 Linux虚拟化技术
2.1 计算机虚拟化基础
2.1.1 虚拟化体系结构
2.1.2 Hypervisor
(1)原生型
(2)宿主型
2.1.3 全虚拟化和半虚拟化
(1)全虚拟化
(2)半虚拟化
2.2 OpenStack所支持的虚拟化技术
2.2.1 KVM
2.2.2 Xen
2.2.3 Linux容器
(1)LXC
(2)Docker
2.2.4 Hyper-V
2.2.5 VMware ESXi
2.2.6 Baremetal与Ironic
2.3 KVM——基于Linux内核的虚拟化解决方案
2.3.1 KVM模块
KVM模块作为整个虚拟化环境的核心工作在系统空间,负责CPU和内存的调度。
2.3.2 QEMU
QEMU作为模拟器工作在用户空间,负责虚拟机I/O模拟。
2.3.3 KVM架构
2.3.4 KVM虚拟磁盘(镜像)文件格式
(1)raw——原始的格式
(2)rcow2——QEMU引入的镜像文件格式
(3)qed——qcow2的一种改型
2.4 Libvirt套件
3 OpenStack
3.1 OpenStack含义
OpenStack作为一个云操作系统,通过数据中心控制大型的计算、存储、网络资源池,并可以使用Web界面和API进行管理。
3.2 OpenStack的主要项目
- 仪表板(Dashboard)——Horizon
- 计算(Compute)——Nova
- 网络(Network)——Neutron
- 对象存储(Object Storage)——Swift
- 块存储(Block Storage)——Cinder
- 身份(Identity)——Keystone
- 镜像(Image)——Glance
- 计量(Telemetry)——Ceilometer
- 编排(Orchestration)——Heat
- 数据库(Database )——Trove
- 数据处理(Data Processing)——Sahara
3.3 OpenStack的主要优势
- 模块松耦合
- 组件配置灵活
- 二次开发容易
3.4 OpenStack项目的组成
每个项目由一系列进程、命令行脚本、数据库和其他脚本组成。
- Web前端(Web frontend)
- 工作负载置备(Workload provisioning)
- 应用程序生命周期(Application lifecycle)
- 编排(Orchestration)
- 计算(Compute)
- 网络(Networking)
- 存储(Storage)
- 共享服务(Shared services)
- 监控工具(Monitoring tools)
- 优化与策略工具(Optimization / Policy tools)
- 计费和商业逻辑(Billing / Business logic)
- 多层工具(Multi-region tools)
- 部署和生命周期工具(Deployment/Lifecycle tools)
- 容器基础架构(Container infrastructure)
- 网络功能虚拟化(NFV)
3.5 OpenStack架构
3.5.1 OpenStack的概念架构
3.5.2 OpenStack的逻辑架构
3.5.3 OpenStack组件之间的通信关系
(1)基于AMQP协议的通信
- 用于每个项目内部各个组件之间的通信。
(2)基于SQL的通信
- 用于各个项目内部的通信。
(3)基于HTTP协议进行通信
- 通过各项目的API建立的通信关系,API都是RESTful Web API。
(4)通过Native API实现通信
- OpenStack各组件和第三方软硬件之间的通信。
3.5.4 OpenStack的物理架构
(1)OpenSatck的多节点部署
-
控制节点
控制节点一般来说只需要一个网络端口用于通信和管理各个节点。
- 支持服务
- 基础服务
- 扩展服务
-
计算节点
一个计算节点至少需要两个网络端口,一个与控制节点进行通信,受控制节点统一调配;另一个与网络节点和存储节点进行通信。
- 基础服务
- 扩展服务
-
存储节点
存储节点最少需要两个网络接口,一个连接管理网络,与控制节点进行通信,接受控制节点任务,受控制节点统一调配;另一个使用专门存储网络(数据网络),与计算节点和网络节点进行通信,完成控制节点下发的各类数据传输任务。
- Cinder块存储服务
- Swift对象存储服务
- 共享文件服务
-
网络节点
网络节点通常需要3个网络端口,分别用于与控制节点进行通信、与除控制节点之外的计算和存储节点之间的通信、外部的虚拟机与相应网络之间的通信。
- 提供者网络
- 自服务网络
(2)节点的组合
- 可以从控制节点中分出一个专门的API节点,API节点去除Neutron服务之外的管理控制服务(如Nova、Glance、KeyStone等)。
- API节点又可以与网络节点合二为一。
- 数据库服务器和消息队列协议可以部署在控制节点(或API节点)上,也可以运行于网络节点。
- Glance、KeyStone、Cinder服务可以在API节点运行,也可以在网络节点上运行,还可以在控制节点上运行。
- 可以创建单独的认证节点来运行KeyStone服务;还可以创建单独的镜像节点来运行Glance服务。
- 存储节点可以并到某个计算节点上。
- nova-compute与Neutron(openswitch、neutron-openvswitch-agent)服务必须在一个节点上运行,否则虚拟机实例无法获得网络分配。
3.5.5 OpenStack的物理网络类型
- Internet
- 外部网络
- 管理网络
- API网络
- 数据网络
- 项目(租户)网络
- 存储访问网络
- 存储后端网络