OpenStack

开源的云操作系统

type
status
date
slug
summary
tags
category
icon
password

一、云计算简介

1. 云计算的优势

  • 按需自助服务:用户可自主申请资源,无需人工干预。
  • 广泛的网络接入:通过网络随时随地访问云服务。
  • 弹性伸缩:根据需求自动调整资源规模。
  • 资源池化:将底层资源抽象为共享池,隐藏技术细节。

2. 云计算类型

2.1 按服务范围分类

  • 公有云:面向公众开放,由云服务商提供。
  • 私有云:专用于单一组织,内部或托管部署。
  • 混合云:公有云与私有云结合,实现数据与应用互通。

2.2 按服务模式分类

  • IAAS(基础设施即服务):提供计算、存储、网络等基础资源。
  • PAAS(平台即服务):提供应用开发与运行平台。
  • SAAS(软件即服务):提供可直接使用的软件应用。

二、OpenStack 概述

OpenStack 是一个开源的云操作系统,用于构建和管理公有云、私有云及混合云平台。

三、OpenStack 核心组件

1. 组件概览

notion image
notion image
IAAS(基础设施即服务):
Nova:计算服务,负责云服务器整个生命周期管理
Glance:镜像服务,负责镜像维护操作
Neutron:网络服务,负责为云服务器提供网络连接功能
Cinder:块存储服务(卷服务),负责云硬盘整个生命周期管理
  • Swift:对象存储服务,提供对象存储
  • Keystone:身份认证服务,提供认证、授权
  • Heat:编排服务,基于yaml语法
  • Ironic:裸机管理服务(裸金属服务)
  • Zun:容器服务,提供容器服务
  • Horizon:提供Dashboard,webUI
    • Dashboard:Web 管理界面
/
文件系统存储(NAS,nfs/cifs)
块存储(SAN,scsi/iSCSI)
对象存储(OBS) 以平面结构存储,存非结构化文件(图片,音视频,动画)
notion image

四、核心组件详解

1. Nova(计算服务)

负责云服务器的生命周期管理(创建、启动、停止、删除等)。
notion image

核心进程:

  • nova-api:接收并响应客户端请求。
    • 实现了RESTful API功能,是外部访问Nova的唯一途径。接收外部的请求并通过Message Queue将请求发送给其他的服务组件,同时也兼容EC2 API,所以也可以用EC2的管理工具对nova进行日常管理。
      notion image
  • nova-scheduler:选择合适的计算节点运行虚拟机。
    • 决策虚拟机创建在哪个主机(计算节点)上。决策一个虚拟机应该调度到某物理节点,需要分为两个步骤:
      1. 过滤(filter):过滤出可以创建虚拟机的主机。
      notion image
      1. 计算权值(weight):根据权重大小进行分配,默认根据资源可用空间进行权重排序。
      notion image
  • nova-compute:调用 Hypervisor(如 KVM)管理虚拟机。
    • 负责虚拟机的生命周期管理,创建并终止虚拟机实例的工作后台程序hypervisor api
      notion image
  • nova-conductor:协调 nova-compute 与数据库之间的交互,读取云服务器相关元数据信息。
    • 计算节点访问数据的中间件,nova-compute服务和数据库之间的中间件。它消除了对云数据库的直接访问。
  • nova-novncproxy:提供 VNC 连接,支持控制台访问。
默认 Hypervisor:KVM

Nova创建虚拟机工作流程


2. Glance(镜像服务)

负责镜像的上传、管理、删除等操作。
notion image

核心进程:

  • glance-api:接收镜像操作请求。
    • 接收REST API的请求,然后通过其他模块(glance-registry及image store)来完成诸如镜像的查找、获取、上传、删除等操作,默认监听端口9292。
  • glance-registry:存储和管理镜像的元数据。
    • 用于与MariaDB数据库交互,用于存储或获取镜像的元数据(metadata),默认监听端口9191。

支持的存储后端:

  • Swift、S3、文件系统、Cinder Volume、Ceph RBD、Sheepdog、GridFS 等。

glance工作流程

notion image

3. Cinder(块存储服务)

为云服务器提供虚拟磁盘(云硬盘)服务。
notion image

核心进程:

  • cinder-api:接收 API 请求,调用 cinder-volume 执行操作。cinder-api 对接收到的 HTTP API 请求会做如下处理:
      1. 检查客户端传人的参数是否合法有效 2. 调用 cinder 其他子服务的处理客户端请求 3. 将 cinder 其他子服务返回的结果序列号并返回给客户端
  • cinder-scheduler:选择合适的存储节点。
  • cinder-volume:调用存储驱动创建/销毁卷。
  • cinder-backup:提供卷备份功能,通常与 Swift 配合使用。

使用技术:

  • LVM、iSCSI/SCSI 共享块设备
  • 支持多种存储驱动(如 FusionStorage、Ceph 等)

Cinder 工作流程


4. Neutron(网络服务)

为云服务器提供网络连接与虚拟网络功能。
notion image

核心进程:

  • neutron-server:接收网络请求,路由到相应网络插件。
    • L2 Agent(接入):负责虚拟交换机层操作(OVS 或 LinuxBridge)。
    • L3 Agent(路由):负责路由、NAT、防火墙操作(使用 iptables)。
    • DHCP Agent:为虚拟机提供 DHCP 服务(使用 dnsmasq)。

网络虚拟化技术:

  • Open vSwitch / Linux Bridge:虚拟交换机
    • Linux Bridge是 Linux 内核自带的虚拟交换机(Layer 2 Switch)。
      • 它能在宿主机上创建一个虚拟交换域(Bridge Domain),让多个网络接口(物理或虚拟)像连接在同一个交换机上一样通信。
  • VXLAN:在大规模虚拟化环境中,突破 VLAN ID 数量限制(4094 个),实现跨宿主机的二层网络隔离。
notion image
  • SDN(软件定义网络):控制平面与数据平面分离
    • 硬 SDN:专用硬件
    • 软 SDN:软件实现
VLAN 是一种在 同一物理网络中 划分 多个逻辑局域网 的技术。
通过给以太网帧添加 802.1Q 标签(VLAN ID) 来实现隔离。
  • 每个 VLAN ID 范围:1 ~ 4094
  • 不同 VLAN 的虚拟机互不通信,除非通过三层(L3)路由连接。
/
在二层网络中,当交换机(Switch)或虚拟交换机(如 OVS)收到一个 未知目的 MAC 地址(unknown destination MAC) 的帧时,它无法判断该帧应转发到哪个端口,于是:
它会把这个帧广播(flood)到除接收端口以外的所有端口。
这就是 泛洪(Flooding)
泛洪的目的,是为了让目标主机回应(发送 ARP Reply 或 ICMP Echo Reply),交换机就能学习到该 MAC 地址对应的端口,建立转发表(MAC Address Table)。

5. Swift(对象存储服务)

用于存储镜像文件、备份文件等非结构化数据。

6. Ceilometer(计量服务)

提供资源使用量监控与计费数据收集。

7. Keystone(身份认证服务)

负责用户认证、授权与服务目录管理。

8. Heat(编排服务)

通过模板自动化部署和管理云资源。

9. Dashboard(Web 界面)

提供图形化操作界面,便于用户管理云平台。

五、补充说明

1. Neutron 网络插件

  • Neutron 支持多种插件(如 ML2),可根据网络需求灵活选择。

3. Glance 多存储支持

  • Glance 支持多种后端存储,建议根据性能和可靠性需求选择合适的存储类型。

六、总结

OpenStack 是一个模块化、可扩展的云操作系统,通过各组件协同工作,提供完整的 IAAS 解决方案。掌握其核心组件的功能与交互流程,是构建和管理 OpenStack 云平台的基础。
Loading...