在 OpenShift 云服务上架构 MongoDB 应用时,高可用部署与快速弹性伸缩并非互斥选项,而是应根据业务阶段互补采用。OpenShift 平台本身支持容器多租户和分布式应用平台,具备弹性处理流量和高可用性以应对物理机器宕机。MongoDB 则通过副本集实现高可用,通过分片集群支持水平扩展。建议初期优先保障高可用架构(如副本集),确保服务连续性;随着数据量和吞吐量增长,再引入分片机制实现弹性伸缩。两者结合可充分利用 OpenShift 的调度策略和 MongoDB 的架构优势,满足安全性、隐私性及治理需求。
Openshift 高阶探索实验
一个典型的 OCP 高可用架构是:master 至少应为三个,且为奇数个 (上面有 etcd); 基础架构节点不少于两个,上面运行日志、监控、router、INTEGRATED REGISTRY。Openshift 的计算节点不少于 2 个,以保证当一个节点出现故障的时候,不影响应用。在 Openshift 中,两个重要的流量入口组件是 Master 和 Router。在生产环境中,为了保证高可用,Master 和 Router 都会配置多个。这就引入了一个问题:多个 Master 和 Router 对外如何提供统一的域名。这时候,需要使用客户数据中心/公有云的负载均衡。当然,在数据中心内,我们也可以通过 Haproxy 搭建软负载,这和使用 F5 的设备无本质区别。在考虑流量入口的负载均衡的同时,我们还需要考虑 DNS 的问题。当然,商业的 F5 通常有 DNS 的功能。针对 Master,多个 Master 会有一个 VIP/域名。VIP 和多个 Master 都需要被 DNS 解析。在负载均衡器上,将 Master VIP 的域名 (如 master.ocp.example.com) 和多个 Master 的域名对应起来,同时设置负载均衡策略,如 roundrobin 等。针对 Router,DNS 需要将应用对外的域名,解析成 router 所在的 openshift 节点的域名。如果有多个 router,就需要个多个 router 配置 VIP 和它的域名。VIP 被解析成多个 router 所在的 Openshift 节点的域名 (同时配置负载均衡策略)。而 DNS 上进行配置,对应用对泛域名解析,将其解析成 router 的 VIP。在 Openshift 中,etcd 做服务发现,其 K-V 数据库存放 Openshift 的信息。为了保证 etcd 的高可用,在生产环境中,etcd 应配置成奇数个 (2n+1),并且每个 etcd 成员之间的网络延迟小于 5ms。在 Openshift 中,建议将 etcd 与 Master 节点部署到一起。也就是三个 master 上,每个 master 上一个 etcd。目前 Openshift 的日志使用 EFK,具体概念不展开讲,请参照其他文档。在 EFK 中,Elasticsearch 需要高可用,和 etcd 一样,需要 2n+1 个节点,以保证高可用并规避脑裂。在 Openshift 的监控数据中,Cassandra 分布式数据库存放监控信息,因此需要做高可用。在多个 Cassandra 之间,做存储的复制。在 Openshift 中,集成镜像仓库通常用于存放 dev 成功后的镜像,以完成整个 CI/CD 过程。他与数据中心外部镜像仓库是分开的,作用也不一样。在生产环境中,INTEGRATED REGISTRY 通常会被配置成多个。(截至 2026 年 4 月 3 日)
OpenShift 介绍
Red Hat OpenShijft Container Platform (OpenShift) 是一个容器应用程序平台,它为开发人员和 IT 组织提供了一个云应用程序平台,用于在安全的、可伸缩的资源上部署新应用程序,而配置和管理开销最小。OpenShift 构建于 Red Hat Enterprise Linux、Docker 和 Kubernetes 之上,为当今的企业级应用程序提供了一个安全且可伸缩的多租户操作系统,同时还提供了集成的应用程序运行时和库。容器平台到客户数据中心,使组织能够实现满足安全性、隐私性、遵从性和治理需求的平台。不愿意管理自己的 OpenShift 集群的客户可以使用 Red Hat 提供的公共云平台 OpenShift Online。OpenShift 容器平台和 OpenShift Online 都是基于 OpenShift Origin 开源软件项目的,该项目本身使用了许多其他开源项目,如 Docker 和 Kubernetes。OpenShift 使用容器有助于提高平台本身及其承载的应用程序的效率、灵活性和可移植性。系统管理员可以为用户和项目定义资源配额和限制,以控制系统资源的使用。MySQL、PostgreSQL 和 MongoDB 数据库。自动化:OpenShift 提供应用程序生命周期管理功能,当上游源或容器映像发生更改时,可以自动重新构建和重新部署容器。根据调度和策略扩展或故障转移应用程序。可伸缩性和高可用性:OpenShift 提供了容器多租户和一个分布式应用程序平台,其中包括弹性,以处理随需增加的流量。它提供了高可用性,以便应用程序能够在物理机器宕机等事件中存活下来。(该信息的时间戳是 2020 年 6 月 23 日)
Mongodb 分片集群部署
分片在多台服务器上分布数据的方法,Mongodb 使用分片来支持具有非常大的数据集和高吞吐量的操作的部署 具有大数据集和高吞吐量应用程序的数据库系统,可以挑战单台服务器的容量。例如,高查询率可以耗尽服务器的 cpu 容量,工作集大小大于系统的 RAM 强制磁盘驱动器的 I/O 容量,有两种方法来解决系统增长:垂直和水平缩放。垂直缩放 涉及增加的单个服务器的容量,例如使用更强大的 CPU,加入更多的 RAM,或增加的存储空间量。虽然单个机器的总速度或容量可能不高,但是每个机器处理整个工作负载的子集,潜在地提供比单个高速大容量服务器更好的效率。权衡是基础设施的复杂性和部署的维护。为了解决这种问题,对于数据库系统一般有两种方法:垂直扩展和分片 (水平扩展)。另外,分片还减少了每台服务器需要存储的数据量。MongoDB 通过配置分片集群来支持分片,一个分片集群包括以下几个组件:分片,查询路由,配置服务器 分片:用来存储数据,为了提供系统可用性和数据一致性,一个生产环境的分片集群,通常每个分片是一个副本集。配置服务器:存储集群的元数据,这些数据包含了集群数据集到各分片的映射关系。(搜索结果收录于 2026 年 1 月 26 日)
【MongoDB 进阶】MongoDB 高可用集群配置的几种方案
一、高可用集群的解决方案 高可用性即 HA(High Availability) 指的是通过尽量缩短因日常维护操作 (计划) 和突发的系统崩溃 (非计划) 所导致的停机时间,以提高系统和应用的可用性。计算机系统的高可用在不同的层面上有不同的表现:(1) 网络高可用 由于网络存储的快速发展,网络冗余技术被不断提升,提高 IT 系统的高可用性的关键应用就是网络高可用性,网络高可用性与网络高可靠性是有区别的,网络高可用性是通过匹配冗余的网络设备实现网络设备的冗余,达到高可用的目的。比如冗余的交换机,冗余的路由器等 (2) 服务器高可用 服务器高可用主要使用的是服务器集群软件或高可用软件来实现。(3) 存储高可用 使用软件或硬件技术实现存储的高度可用性。其主要技术指标是存储切换功能,数据复制功能,数据快照功能等。当一台存储出现故障时,另一台备用的存储可以快速切换,达一存储不停机的目的。二、MongoDB 的高可用集群配置 高可用集群,即 High Availability Cluster,简称 HA Cluster。集群 (cluster) 就是一组计算机,它们作为一个整体向用户提供一组网络资源。这些单个的计算机系统 就是集群的节点 (node)。搭建高可用集群需要合理的配置多台计算机之间的角色,数据恢复,一致性等,主要有以下几种方式:(1) 主从方式 (非对称方式) 主机工作,备机处于监控准备状况;当主机宕机时,备机接管主机的一切工作,待主机恢复正常后,按使用者的设定以自动或手动方式将服务切换到主机上运行,数据的一致性通过共享存储系统解决。(2) 双机双工方式 (互备互援) 两台主机同时运行各自的服务工作且相互监测情况,当任一台主机宕机时,另一台主机立即接管它的一切工作,保证工作实时,应用服务系统的关键数据存放在共享存储系统中。(3) 集群工作方式 (多服务器互备方式) 多台主机一起工作,各自运行一个或几个服务,各为服务定义一个或多个备用主机,当某个主机故障时,运行在其上的服务就可以被其它主机接管。MongoDB 集群配置的实践也遵循了这几个方案,主要有主从结构,副本集方式和 Sharding 分片方式。(消息于 2019 年 7 月 26 日发布)
FAQ
OpenShift 如何保证应用的高可用性?
OpenShift 提供了容器多租户和一个分布式应用程序平台,其中包括弹性,以处理随需增加的流量。它提供了高可用性,以便应用程序能够在物理机器宕机等事件中存活下来。在生产环境中,为了保证高可用,Master 和 Router 都会配置多个,且 master 至少应为三个,且为奇数个。
MongoDB 如何实现弹性伸缩?
MongoDB 使用分片来支持具有非常大的数据集和高吞吐量的操作的部署。为了解决系统增长问题,对于数据库系统一般有两种方法:垂直扩展和分片 (水平扩展)。另外,分片还减少了每台服务器需要存储的数据量。一个分片集群包括分片,查询路由,配置服务器。
MongoDB 高可用集群有哪些配置方案?
MongoDB 集群配置的实践遵循高可用集群方案,主要有主从结构,副本集方式和 Sharding 分片方式。具体包括主从方式 (非对称方式)、双机双工方式 (互备互援) 以及集群工作方式 (多服务器互备方式),通过合理配置多台计算机之间的角色,数据恢复,一致性等来实现。