基于 OpenStack 云计算平台的应用与研究

cjc7373 2022-01-09 23:45:09

背景

云计算已经渗透到了互联网的每一个角落, 如今, 几乎每一个大型互联网应用都部署在云端, 以实现较低的运维成本和较高的可扩展性.

概述

本项目将实现搭建 OpenStack 云计算平台, 并基于 OpenStack 平台进行云计算平台中的数据转发, 路由更新, 虚机迁移, 健康检测等应用场景进行研究和优化, 以期提高云平台的可扩展性和鲁棒性.

OpenStack 是一个由 OpenStack 基金会管理的开放标准的云计算平台, 其通常作为基础设施即服务 (IaaS) 在公有云或私有云中被部署. OpenStack 涵盖了管理数据中心的各个方面, 包括计算, 存储, 网络等资源.

架构

OpenStack 的逻辑架构如下:


图源: https://docs.openstack.org/install-guide/get-started-logical-architecture.html

OpenStack 遵循了高内聚, 低耦合的原则, 所有组件均可独立部署, 组件之间通过 RESTful API 通信.

由于需求的不断更新, 越来越多的组件被加入到了 OpenStack 中, 上图仅展示了 OpenStack 的核心组件, 其中包括:

  • Horizon, 管理前端, 是与用户交互的主要通道.
  • Keystone, 身份认证组件, 管理用户数据库, 管理所有组件的认证 (Authentication) 和鉴权 (Authorization).
  • Nova, 计算服务, 管理虚拟机资源, 包括虚拟机的创建, 销魂, 迁移等
  • Ironic, 管理裸金属服务器, 提供包括 PXE 等的管理协议的支持
  • Swift, 对象存储, 管理大量无结构的数据
  • Trove, 数据库即服务, 提供数据库引擎接口
  • Cinder, 块存储, 提供挂载到虚拟机上的卷资源
  • Galance, 镜像服务, 虚拟机镜像的存储和检索
  • Heat, OpenStack 的编排服务, 管理所有 OpenStack 组件的部署
  • Ceilometer, 遥测服务, 从各个组件收集运行状态数据
  • Neutron, 管理网络资源, 提供网络虚拟化的支持
  • Sahara, 数据处理的调度引擎, 对 Nova, Swift 等组件进行编排来进行大数据处理

我们在这里以 Nova 组件为例, 描述其简化的需求和设计.

需求

Nova 提供了统一的计算资源抽象, 这些计算资源可以是物理机, 虚拟机或容器.
画出用例图如下:

img

设计


图源: https://docs.openstack.org/nova/latest/user/architecture.html

遵循 Openstack 的总体设计, Nova 对外提供 RESTful API, 而其内部则使用 RPC 进行通信, 使用一个中心化的数据库来存储数据.
Nova 内部共有五个组件, 其中除 db 之外均可进行横向扩展, 以提高其处理能力:

  • API: 作为对外的接口提供了 RESTful API
  • Conductor: 负责长时任务 (新建/迁移虚拟机等) 的协调, 同时也作为 Compute 等组件访问数据库的代理
  • Scheduler: 负责决定在哪个 host 上创建虚拟机
  • Compute: 管理 hypervisor, 负责和虚拟机通信
  • DB: 数据库

以创建虚拟机为例, 操作的时序图如下:

img


API 首先向 conductor 分配任务, conductor 生成虚拟机的元数据并向 schduler 分发调度任务, 收到响应后 conductor 再去请求 compute 执行创建操作, 并向 api 返回结果.

设计模式

  • Conductor 提供了数据库的代理机制, 应用了代理模式. 应用代理模式主要有以下几点考虑:

    • 提升 Compute 服务对数据库访问的性能. 对数据库本身的访问是阻塞的, 而 RPC 通信是非阻塞的.
    • 提升访问数据库的安全性
    • 在数据库升级过程中对旧组件提供了向下的兼容性
  • API 提供了统一的对外接口应用了外观模式, 其对外提供了一个简单的接口, 提升了易用性.

  • 各个组件间的通信应用了观察者模式, 组件间 RPC 使用了消息队列以实现非阻塞式的调用, 调用者通过订阅调用的结果来避免轮询结果导致的性能开销.

作者: 144

...全文
289 回复 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

571

社区成员

发帖
与我相关
我的任务
社区描述
软件工程教学新范式,强化专项技能训练+基于项目的学习PBL。Git仓库:https://gitee.com/mengning997/se
软件工程 高校
社区管理员
  • 码农孟宁
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧