为 OpenStack 构建高可用性
2026-06-12
OpenStack 是一个开源的云计算平台,其架构包括计算、存储和网络服务,提供强大的虚拟化能力及自动化管理功能。为确保 OpenStack 平台的高可用性,需采用特定的架构方案与技术措施。本文将介绍一些常见的 OpenStack 高可用性架构方案。
OpenStack 高可用性
要理解如何实现高可用性,首先需明确哪些服务容易发生不可用。我们先来简要了解 OpenStack 的架构。
OpenStack 由五个主要组件组成:计算(Nova)、身份管理(Keystone)、镜像管理(Glance)、前端管理(Dashboard)和对象存储(Swift)。
Nova 是负责计算和控制的核心组件。它包括 nova-compute、nova-scheduler、nova-volume、nova-network 和 nova-api 等服务。与大多数其他分布式系统类似,OpenStack 分为两类节点:控制节点和计算节点。控制节点提供除 nova-compute 以外的所有服务。这些组件和服务可独立安装,并可根据需要选择不同组合。
Nova-compute 运行在每个计算节点上。目前,我们假设它是可信的;否则,可使用备用机器实现故障转移(尽管为每个计算节点配置备用机器的成本可能远高于其带来的收益)。
控制节点的高可用性
确保控制节点的高可用性是首要挑战,不同组件各有其特定的可用性要求与解决方案。
(1)如果控制节点发生故障,而整个系统仅由一个控制节点进行管理和控制,会发生什么情况?
这是常见的单点故障(SPoF)问题。仅靠一台机器无法实现高可用性。通常,解决方案的设计目标是在出现问题时快速接管故障机器,但这会带来更高的成本。
为解决单点故障问题,通常采用冗余设备或热备方案。由于硬件故障或人为失误随时可能导致一个或多个节点失效,且维护或升级有时需要临时停用某些节点,因此一个可靠的系统必须能够承受一个或多个节点的停机。
常见的部署模式包括:主备模式、双活模式和集群模式
(2)如何构建冗余控制节点?或者还有哪些其他方法可以实现高可靠性的控制?
许多人可能考虑采用主备模式,通过心跳机制或其他类似方法实现备份,并借助故障转移来实现高可用性。OpenStack 本身并不支持多个控制节点,因此 Pacemaker 需要为各项服务分别实现自身的备份、监控和切换机制。
仔细查看控制节点所提供的服务,可发现其主要包括 nova-api、nova-network、nova-scheduler、nova-volume,以及 Glance、Keystone 和 MySQL 数据库。这些服务各自独立运行。其中,nova-api、nova-network 和 Glance 可在每个计算节点上运行;RabbitMQ 可采用主备模式运行;MySQL 则可使用冗余的高可用集群。
以下章节将详细介绍这些组件。
关键组件的高可用性解决方案
1)nova-api 与 nova-scheduler 的高可用性
每个计算节点均可运行自身的 nova-api 和 nova-scheduler,从而实现负载均衡,保障系统正常运行。如此一来,当控制节点发生故障时,计算节点上的 nova-api 及相关服务仍可继续正常运行。
2)nova-volume 的高可用性
目前,nova-volume 尚无完善的高可用性(HA)解决方案,仍需进一步完善。但由于 nova-volume 基于iSCSI 实现,因此可通过将其与 DRBD 集成,或采用基于 iSCSI 的高可用硬件方案来实现高可用性。
3)网络服务高可用性(nova-network)
OpenStack 已经提供了多种高可用性网络解决方案。一种常用的方法是通过启用“多主机”选项来开启高可用性模式。其他常见方案还包括故障转移、多网卡、硬件网关和 Quantum。
4)Glance 和 Keystone 的高可用性
OpenStack 镜像可通过 Swift 存储,Glance 可在多个主机上运行。Pacemaker 是一款功能强大的高可用性解决方案,用于管理多节点集群,实现服务切换与故障转移,可与 Corosync 和 Heartbeat 配合使用。Pacemaker 灵活支持多种运行模式,例如主备模式(active-passive)、N+1 模式以及 N-N 模式。通过在各节点上安装 OCF 代理,可判断其他节点上的 Glance 和 Keystone 服务是否正常运行,从而协助 Pacemaker 启动、停止和监控这些服务。
5)Swift对象存储的高可用性
通常情况下,OpenStack 的分布式对象存储系统 Swift 无需额外配置高可用性(HA)。这是因为 Swift 本身采用分布式架构(无主节点设计),并内置了容错机制、冗余机制、数据恢复机制、可扩展性以及高可用性。
6)消息队列服务(RabbitMQ)的高可用性
如果 RabbitMQ 失败,消息可能会丢失。可以采用多种高可用性(HA)机制:
发布者确认方法会在数据写入磁盘失败时发出通知。
可以使用多节点集群机制,但节点故障仍可能导致队列失败。
主动-被动模式可在发生故障时确保故障转移,但启动备用节点可能会出现延迟,甚至失败。
为实现灾难恢复和高可用性,RabbitMQ 提供持久化队列,当队列服务崩溃时,未处理的消息将被存储在磁盘上。为防止因消息发送与写入之间存在延迟而导致消息丢失,RabbitMQ 引入了发布者确认(Publisher Confirm)机制,以确保消息确实已写入磁盘。
在集群支持方面,RabbitMQ 提供主动/被动(Active/Passive)和主动/主动(Active/Active)两种模式。例如,在主动/被动模式下,当某个节点发生故障时,备用节点会立即被激活,并迅速接管故障的主节点,继续处理消息投递。
构建高可用性 OpenStack
通常,高可用性通过建立冗余和备份来实现。常见策略包括:集群模式。 多机互备,即每个实例均被多次备份,且不依赖中心节点。例如分布式对象存储系统 Swift 以及 nova-network 的多主机模式。
自主模式。 在某些情况下,可通过允许每个节点独立运行来解决单点故障(SPoF)问题,从而消除主从关系,降低控制节点故障所带来的影响。例如,nova-api 仅负责其所在节点的事务。
主动-被动模式。 这是一种常见模型,其中被动节点处于待机和备份状态,在发生故障时进行切换。例如 MySQL 高可用集群,以及通过 Pacemaker 和 Heartbeat 实现冗余的 Glance 和 Keystone 等服务。
双活模式。 在此模式下,各节点相互备份并提供支持。例如,RabbitMQ 采用双活高可用集群,集群内的节点可复制队列。从架构角度看,该方案避免了被动节点无法启动或延迟过高的问题。
总之,OpenStack 的优化与改进工作正持续进行,其部署方式与应用场景也在不断探索与拓展。实际调优至关重要——优秀的架构设计与创新理念,必须通过真实环境的测试才能得到验证。
增强型 OpenStack 保护
尽管 OpenStack 通过冗余和高可用性架构降低了系统单点故障的风险,但数据保护依然至关重要。为确保业务连续性,必须采用专业的备份解决方案,以防止数据丢失以及灾难性故障带来的影响。
Vinchin 备份与恢复 是一款功能强大的 OpenStack 备份解决方案,支持免代理、高效率备份,具备数据去重、压缩、增量备份、文件级恢复及云归档等功能。该方案可确保快速恢复、与 OpenStack 无缝集成,并提供强大的数据安全保障,是管理与保护云环境的理想选择。
此外,数据加密和勒索软件防护可为您的 OpenStack 虚拟机备份提供双重保障。您还可轻松将数据从 OpenStack 主机迁移至其他虚拟化平台(例如 VMware、Hyper-V、Proxmox、XenServer、oVirt、AWS EC2 等),反之亦然。
使用 Vinchin 备份与恢复软件备份 OpenStack 虚拟机仅需以下 4 个步骤:
1. 选择备份对象。

2. 选择备份目标位置。

3. 配置备份策略。

4. 审核并提交任务

Vinchin 备份与恢复软件已获得数千家公司的信赖。立即开始您的15天全功能试用!
下载免费试用版
适用于多种数据备份
* 15天全功能免费安全下载
OpenStack 高可用性常见问题解答
1. OpenStack 中的可用区是什么?
在 OpenStack 中,可用区(AZ)是云环境内的一个逻辑分区,有助于分发工作负载,从而提升容错能力和资源管理效率。每个 AZ 都是一个独立的故障域,这意味着位于不同 AZ 中的实例受相同硬件或网络故障影响的可能性更低。AZ 通常用于对计算节点进行分组,而存储和网络服务也可各自拥有独立的可用区,以增强系统的弹性与冗余能力。用户在启动实例时可指定可用区,以优化性能与可靠性。
2. OpenStack 是 SaaS 还是 PaaS?
OpenStack 主要是一个 基础设施即服务(IaaS) 平台。它提供虚拟化的计算、存储和网络资源,使用户能够部署和管理云基础设施。虽然 OpenStack 可通过在其之上运行 Kubernetes 或 Cloud Foundry 等服务来支持平台即服务(PaaS)解决方案,但其核心功能是提供 IaaS,而非软件即服务(SaaS)或 PaaS。
结论
确保 OpenStack 的高可用性,需要综合运用架构设计策略与技术解决方案,以消除单点故障并提升系统韧性。通过部署主备(active-passive)和双活(active-active)模式、采用集群技术,并对 Nova、Glance、Keystone 和 RabbitMQ 等核心组件进行优化,OpenStack 可构建具备容错能力且高度可靠的云基础设施。此外,Swift 等分布式存储方案本身即具备冗余性与韧性。