使用 OCI 托管的 PostgreSQL、Redis 和 OpenSearch 实现应用开发现代化
通过提高性能、可扩展性、弹性、安全性和成本效率,实现企业应用现代化,以满足客户、供应商、员工和监管机构不断变化的需求。此架构展示了使用企业级开源技术(例如 OCI 托管 PostgreSQL、OpenSearch、Redis 和 Kubernetes)实现应用现代化。
寻求业务灵活性、运营敏捷性、服务连续性、用户体验改善、性能提升、成本降低以及整体平台治理的企业正越来越多地转向应用现代化,以获得竞争优势。云原生应用和托管服务是实现应用现代化的优秀杠杆。
包括重新平台化、重构或重新架构应用在内的现代化战略由开源和云原生技术推动,因为它们大大降低了培训成本和运营开销。
此参考架构展示了如何使用 OCI Kubernetes Engine (适用于应用前端)、Redis(适用于缓存)、PostgreSQL(适用于事务数据)和 OpenSearch(适用于高级搜索、日志和跟踪分析)在 Oracle Cloud Infrastructure (OCI) 上部署现代应用。此多数据库实施非常适合管理多种数据类型(例如电子商务、游戏、社交媒体和 FinTech)的行业,在这些行业中,性能、可扩展性、弹性、易操作性、安全性和治理至关重要。
体系结构
此架构演示了 OCI 上的现代应用部署。使用此架构通过微服务和 OCI 托管的开源数据库实现应用现代化,确保在可扩展、安全的平台上实现高效的数据检索和强大的分析功能。
在此参考架构中,您将利用微服务部署以及 OCI 管理的开源技术(例如用于编排和扩展应用前端的 OCI Kubernetes Engine (OKE)、用于数据持久性的 PostgreSQL、用于加速数据检索的 Redis 和 Valkey 作为高速缓存层,以及用于快速准确搜索和分析功能的 OpenSearch,实现应用现代化。这些服务加上 OCI 固有的可扩展性和全面的安全功能,为在 OCI 上实现应用现代化奠定了坚实的基础。
下图说明了此引用体系结构。

插图 oke-architecture-diagram.png 的说明
oke-architecture-diagram-oracle.zip
该体系结构包含以下组件:
- 受管理服务
托管服务提供特定功能,不需要您执行与优化性能、可用性、扩展、安全性或升级相关的维护任务。通过托管服务,您可以集中精力为客户提供功能,而不必担心运营的复杂性。托管服务为云原生开发提供了可扩展的安全组件。使用托管服务来开发和运行您的应用并存储其数据。您可以获得一流的解决方案,而无需每个领域的专业知识即可构建和运行您的应用。
- Kubernetes 引擎
Oracle Cloud Infrastructure Kubernetes Engine ( OCI Kubernetes 引擎或 OKE )是一项全托管式、可扩展的高可用性服务,您可以使用它将容器化应用程序部署到云中。您可以指定应用所需的计算资源,Kubernetes Engine 在现有租户的 Oracle Cloud Infrastructure 上预配这些资源。OKE 使用 Kubernetes 跨主机集群自动部署、扩展和管理容器化应用。
- Cache with Redis
Oracle Cloud Infrastructure Cache with Redis 是一个基于开源 Redis 的全面、内存中托管缓存解决方案。这一全托管式服务可加快数据读取和写入速度,显著提高应用响应时间和数据库性能,从而改善客户体验。
- Database with PostgreSQL
Oracle Cloud Infrastructure Database with PostgreSQL 是一项托管式 PostgreSQL 服务,可帮助您的团队摆脱日常任务,例如打补丁和备份。OCI Database 优化存储的突出功能可提高系统可恢复性和性能。OCI Database with PostgreSQL 支持您独立扩展计算和存储。此外,它通过端到端加密提供增强的数据安全性。
- 使用 OpenSearch 搜索
OCI Search with OpenSearch 是一项托管服务,可用于构建基于 OpenSearch 的应用程序内搜索解决方案,使您能够在毫秒内搜索大型数据集并返回结果,而无需专注于管理基础设施。OpenSearch 具有用于度量、跟踪和日志分析的观测功能。
- 堡垒服务
Oracle Cloud Infrastructure Bastion 提供对没有公共端点且需要严格资源访问控制的资源(例如裸金属和虚拟机、Oracle MySQL Database Service 、 Autonomous Transaction Processing (ATP)、Oracle Cloud Infrastructure Kubernetes Engine ( OKE ) 以及允许安全 Shell 协议 (SSH) 访问的任何其他资源)的受限和限时安全访问。通过 OCI Bastion 服务,您可以启用对专用主机的访问,而无需部署和维护跳转主机。此外,您还可以利用基于身份的权限以及集中、经过审计和有时限的 SSH 会话来改善安全状况。OCI Bastion 消除了对堡垒访问的公共 IP 的需求,消除了提供远程访问的麻烦和潜在攻击面。
- Identity and Access Management
Oracle Cloud Infrastructure Identity and Access Management (IAM) 为 Oracle Cloud Infrastructure (OCI) 和 Oracle Cloud Applications 提供用户访问控制。借助 IAM API 和用户界面,您可以管理身份域及其中的资源。每个 OCI IAM 身份域代表一个独立的身份和访问管理解决方案或不同的用户群体。
- 对象存储
通过 OCI Object Storage ,您可以访问任何内容类型的大量结构化和非结构化数据,包括数据库备份、分析数据和丰富的内容,例如图像和视频。您可以直接从互联网或云平台安全地存储数据。您可以在不降低性能或服务可靠性的情况下扩展存储。
将标准存储用于需要快速、立即和频繁访问的“热”存储。将归档存储用于长期保留、很少访问或很少访问的“冷”存储。
- 密钥 Vault
Oracle Key Vault 可安全地将加密密钥、Oracle Wallets、Java KeyStores、SSH 密钥对和其他密钥存储在可扩展的容错集群中,该集群支持 OASIS KMIP 标准并在 OCI、Microsoft Azure、Amazon AWS 和 Google Cloud 以及本地部署的专用硬件或虚拟机上部署。
- API 网关
使用 Oracle Cloud Infrastructure API Gateway ,您可以发布具有可从网络内访问的专用端点的 API,并根据需要向公共互联网公开这些 API。这些端点支持 API 验证、请求和响应转换、CORS、验证和授权以及请求限制。
- Oracle 服务网络
Oracle 服务网络 (OSN) 是 Oracle Cloud Infrastructure 中为 Oracle 服务保留的一个概念性网络。这些服务具有可通过互联网访问的公共 IP 地址。Oracle Cloud 外部的主机可以使用 Oracle Cloud Infrastructure FastConnect 或 VPN Connect 私下访问 OSN。VCN 中的主机可以通过服务网关对 OSN 进行专用访问。
- 区域
Oracle Cloud Infrastructure 区域是一个本地化地理区域,其中包含一个或多个数据中心,托管可用性域。地区独立于其他地区,远距离可以把它们分开(跨越国家甚至大陆)。
- 虚拟云网络 (VCN) 和子网
VCN 是一个可定制的软件定义网络,您可以在 Oracle Cloud Infrastructure 区域中设置。与传统的数据中心网络一样,VCN 允许您控制您的网络环境。VCN 可以具有多个不重叠的 CIDR 块,您可以在创建 VCN 后更改这些块。您可以将 VCN 划分为子网,子网可以限定为区域或可用性域。每个子网都包含一系列不与 VCN 中的其他子网重叠的连续地址。可以在创建后更改子网的大小。子网可以是公共子网,也可以是专用子网。
- FastConnect
Oracle Cloud Infrastructure FastConnect 可在您的数据中心与 Oracle Cloud Infrastructure 之间创建专用的私有连接。与基于 Internet 的连接相比,FastConnect 提供了更高的带宽选项和更可靠的网络体验。
- 动态路由网关 (DRG)
DRG 是虚拟路由器,用于为同一区域中的 VCN 之间、VCN 与区域外的网络(例如另一个 Oracle Cloud Infrastructure 区域中的 VCN、内部部署网络或另一个云提供商中的网络)之间的专用网络流量提供路径。
- Internet 网关
通过互联网网关,可以在 VCN 中的公共子网与公共互联网之间进行流量传输。
- 服务网关
通过服务网关,您可以从 VCN 访问其他服务,例如 Oracle Cloud Infrastructure Object Storage 。从 VCN 到 Oracle 服务的流量通过 Oracle 网络结构传输,不会通过互联网传输。
- Cloud Guard
您可以使用 Oracle Cloud Guard 监视和维护 Oracle Cloud Infrastructure 中资源的安全性。Cloud Guard 使用检测器配方,您可以定义该配方来检查资源是否存在安全漏洞,以及监视操作员和用户是否存在某些风险活动。检测到任何配置错误或不安全活动时,Cloud Guard 会根据您可以定义的响应器配方推荐更正操作并协助执行这些操作。
在 OKE 中部署了以下软件:
- 服务网格
服务网格产品通过向集群上运行的应用程序添加专用基础设施层(即“服务网格”)来管理 Kubernetes 集群中服务之间的网络通信。例如,您可以使用 Istio,它是一个独立于平台的开源服务网格,在流量管理的基础上提供策略实施和遥测收集。
- Metrics 服务器
Metrics Server 是资源使用情况数据的集群范围聚合器,它提供了用于监视 OKE 集群和应用程序的运行状况和性能的基本数据。Metrics Server 从节点和 pod 收集资源度量,例如 CPU 和内存利用率,并使其可用于其他 Kubernetes 组件,例如水平 pod 自动缩放器和 Kubernetes 仪表盘。
- Kubernetes 仪表盘
通过 Kubernetes 仪表盘,可以洞察正在运行的云池数量、运行状况、资源利用率以及其他关键指标。此外,您还可以执行扩展部署、查看日志和删除资源等操作。还可以部署替代方案,例如 K9s、Rancher 或其他替代方案。
- 入站控制器
Kubernetes 入站控制器实施在 Kubernetes 入站中定义的规则和配置选项,以对传入流量进行负载平衡并将传入流量路由到集群中 Worker 节点上运行的服务云池。您可以部署 OCI 本机入站控制器或第三方入站控制器,例如 Nginx 入站控制器。
- 集群观测
为了实现可观测性,更具体地说,应用性能监控,Prometheus 将被部署到报废和存储 OKE 发出的各种指标。Grafana 将用于度量可视化。将部署 Fluentbit 以从 OKE 集群检索日志。数据将通过 OpenSearch 转发到 OCI Search。
推荐
应用程序可扩展性
OCI 支持在预配期间和部署后灵活调整服务规模,以满足您的具体需求。通过垂直调整大小,可以增加或减少群集节点的内存和 CPU 资源。水平调整大小允许您调整节点数。为了尽可能减少停机时间,蓝绿部署支持块存储卷克隆,与行业标准滚动更新相比,更新速度大大加快。此外,计算和存储的分离允许独立扩展两种资源,OCI 的高性能网络可促进分片重新分配。
- Kubernetes 引擎
Kubernetes 可使用内置的水平云池自动缩放器动态扩展和减少服务实例数量。如果需要,还可以使用 Kubernetes 集群自动缩放器来添加和删除 Kubernetes worker,以“适当调整”集群大小,以满足当前负载,而不会通过超额预配来浪费计算资源。
- Cache with Redis 和 Valkey
您可以根据工作负载调整每个节点的内存大小。您可以将副本节点添加到集群,以确保高可用性并提高读取操作带宽。由于您还可以部署分片集群并连接多达 99 个节点,因此使用内存较小的节点可以实现更好的读取性能。此外,在发生故障时,这将加快节点恢复。
- Database with PostgreSQL
您可以为每个节点选择群集所需的确切 CPU 和内存量。该服务使用 OCI Database Optimized Storage (DBoS),它依靠区域块存储卷来确保零数据丢失,即使在集群完全发生故障的情况下也是如此。由于分配的存储根据数据库系统中的实际数据增长和收缩,因此此处无需调整大小。
- 使用 OpenSearch 搜索
OpenSearch 支持纵向和横向缩放。为了进一步横向扩展,您可以部署其他集群并通过跨集群连接互连,从而在所有部署的集群中有效地搜索数据。
表 - 可扩展性选项
Kubernetes 引擎 | Cache with Redis 和 Valkey | Database with PostgreSQL | 使用 OpenSearch 搜索 | |
---|---|---|---|---|
节点 - 扩展 | 是 | 是 | 是 | 是 |
节点 - 纵向收缩 | 是 | 是 | 是 | 是 |
集群 - 横向扩展 | 是 | 是 | 是 | 是 |
集群 - 横向收缩 | 是 | 是 | 是 | 无 |
高可用性
高可用性是 OCI 管理服务的核心设计特性。为了确保最长正常运行时间和可访问性,我们建议部署至少包含三个节点的生产集群:一个主集群和两个副本。OCI 在 OCI 区域中的可用性域或容错域之间自动分配这些节点,以避免单点故障导致的停机。如果节点出现故障,OCI 会自动预配替换节点以恢复集群大小。通过以下自动化操作进一步保证服务可用性:
- Kubernetes 引擎
Kubernetes 围绕高可用性而设计,服务部署的多个实例会自动分布在多个 Worker 中,确保在出现服务可用问题时。Kubernetes 将检测和重新启动服务的失败实例,并具有健康状况监视功能,这些功能与服务实例结合使用,以识别遇到问题的实例并重新启动它们。为了在升级期间保持持续的服务可用性,Kubernetes 支持对服务部署进行滚动更新和回退。此外,Kubernetes 控制层固有的冗余允许对 Kubernetes 本身进行滚动升级。
- Cache with Redis 和 Valkey
副本节点自动承担主节点角色,并预配替换副本节点。
- Database with PostgreSQL
与高速缓存类似,副本节点将自动承担主节点角色,并预配替换副本节点。数据库的优化存储可确保在节点发生故障时不会丢失任何数据,因为数据会跨区域块存储进行复制并与计算节点分离。
- 使用 OpenSearch 搜索
系统自动将符合领导条件的节点提升为领导节点,以确保服务可用性。
这些自动故障转移流程可实现零恢复点目标 (RPO),并为用户提供区域性的高可用性并实现高度的简单性。

插图 ha-architecture-diagram.png 的说明
ha-architecture-diagram-oracle.zip
灾难恢复
OCI 托管服务提供强大的灾难恢复功能,可确保业务连续性。灾难恢复策略可保护服务免受区域故障的影响。通过 OCI 服务,您可以在故障转移区域中实现零恢复点目标 (recovery point objective,RPO) 和不到一分钟的恢复时间目标 (recovery time objective,RTO)。
OCI 通过动态路由网关 (Dynamic Routing Gateway,DRG) 和 OCI 主干简化区域间连接。OCI 主干网是一个专用的、安全且高度可用的网络,可在全球范围内互连 OCI 区域。默认情况下,同一领域内的区域间公共和专用 IP 流量会遍历 OCI 主干,而不是互联网。
表 - 灾难恢复选项和可用工具
Kubernetes 引擎 | Database with PostgreSQL | 使用 OpenSearch 搜索 | |
---|---|---|---|
冷备用 | OCI Full Stack Disaster Recovery | 自动备份和还原 | 自动快照 API |
热备用 | pglogical, GoldenGate | 跨集群复制(提前访问) |
下图深入分析了具有热备用数据库的跨区域灾难恢复。

插图 dr-architecture-diagram.png 的说明
dr-architecture-diagram-oracle.zip
您可以利用以下组件:
- 主区域和备用区域
区域分组到领域中。您的租户存在于单个领域中,可以访问属于该领域的所有区域。目前,Oracle Cloud Infrastructure 有多个领域,包括商业、政府和专用领域。巴黎和马赛是商业 (OC1) 领域的一部分。
- OCI Full Stack Disaster Recovery
OCI Full Stack Disaster Recovery (FSDR) 是 Oracle Cloud Infrastructure 灾难恢复业务流程和管理服务,可为应用程序堆栈的所有层(包括基础结构、中间件、数据库和应用程序)提供全面的灾难恢复功能。FSDR 服务与 OKE 和底层 OCI 资源协同工作,将数据库、文件存储和块存储卷中的应用程序数据复制到其他区域。对于 Kubernetes,它将 OKE 配置和清单的详细信息(例如,服务、部署和配置映射)复制到另一个远程区域。这种复制的数据和配置可以在灾难极不可能发生的事件中使用,灾难需要整个区域在另一个 OCI 区域中启动服务。
- 复制工具
将数据复制到备用区域。由于在故障转移时实施了自动缩放,因此可以缩小备用数据库的大小。
- OCI Database with PostgreSQL 提供自动备份,可创建数据库数据的副本并进行远程存储,以便在需要时(例如在区域数据中心发生故障后)将其用于恢复到原始状态。PostgreSQL 还提供了逻辑复制选项,例如 pglogical 扩展,它使用发布/订阅模型和 Oracle GoldenGate 为 PostgreSQL 提供逻辑流复制,提供实时数据集成、数据复制、事务性更改数据捕获、数据转换等。
- 使用 OCI Search with OpenSearch 跨集群复制,您可以将索引、映射和元数据从一个 OpenSearch 集群复制到另一个集群,包括在其他 OCI 区域中。
- CI/CD
Oracle DevOps 服务为开发人员提供了持续集成和部署 (CI/CD) 平台。您可以使用 DevOps 服务在 Oracle Cloud 上轻松构建、测试和部署软件和应用。DevOps 构建和部署管道可减少变更驱动的错误,并减少客户在构建和部署版本上花费的时间。
该服务还提供用于存储代码的专用 Git 资源库,并且支持与外部代码资料档案库的连接。无论是将工作负载从本地或其他云迁移到 OCI,还是在 OCI 上开发新应用,您都可以使用 DevOps 服务来简化软件交付生命周期。
- 版本升级
OCI 将以滚动方式应用的补丁程序的形式处理次要版本升级,以确保服务连续性。虽然主要升级需要迁移路径过程。
- 安全
使用 Oracle Cloud Guard 主动监视和维护 OCI 中资源的安全性。Oracle Cloud Guard 使用检测器配方,您可以定义检测器配方来检查资源是否存在安全漏洞,以及监视操作员和用户是否有风险活动。检测到任何配置错误或不安全活动时,Oracle Cloud Guard 会根据您可以定义的响应器配方建议更正操作并协助执行这些操作。
对于需要最高安全性的资源,Oracle 建议您使用安全区域。安全区域是与 Oracle 定义的基于优秀实践的安全策略配方关联的区间。例如,安全区域中的资源必须无法从公共 Internet 访问,并且必须使用客户管理的密钥对它们进行加密。在安全区域中创建和更新资源时,OCI 会根据安全区域配方中的策略验证操作,并拒绝违反任何策略的操作。
- 安全区域
克隆和定制 Oracle 提供的默认配方,以创建定制检测器和响应器配方。通过这些配方,您可以指定哪种类型的安全违规会生成警告,以及允许对它们执行哪些操作。例如,您可能希望检测可见性设置为公共的对象存储桶。
在租户级别应用 Cloud Guard,以涵盖最广泛的范围并减轻维护多个配置的管理负担。
还可以使用“托管列表”功能将某些配置应用于检测器。
- 网络安全组
您可以使用网络安全 Gruops (NSG) 定义一组适用于特定 VNIC 的入站和出站规则。我们建议使用 NSG 而非安全列表,因为 NSG 使您能够将 VCN 的子网体系结构与应用的安全要求分开。
- 负载平衡器带宽
创建负载平衡器时,您可以选择提供固定带宽的预定义配置,也可以指定定制(灵活)配置来设置带宽范围,并允许服务根据流量模式自动扩展带宽。通过任一方法,您都可以在创建负载平衡器后随时更改配置。
注意事项
部署此引用体系结构时,请考虑以下几点。
- 工作量观测
OCI 可立即捕获和监视托管服务指标、跟踪和日志。您可以在 OCI 控制台中浏览这些数据,或者将观测数据集成到您选择的工具中(例如,Prometheus、OpenSearch、Grafana、Jaeger、OCI Application Performance Monitoring)。
- 监管
OCI Cloud Adoption Framework 可帮助组织提高业务敏捷性并促进创新解决方案开发。为了充分利用云,组织应遵循以下策略:利用基于经验的建议来管理人员、流程和技术,并采用分阶段的方法来进行云转型。OCI 云采用框架提供了优秀实践和结构化方法,可帮助您的组织成功采用云。
- 成本优化
OCI 在全球范围内提供一致的定价以及可预测的成本。OCI 提供各种计费和成本管理工具,可帮助您轻松管理服务成本。您可以估算成本,创建预算以设置支出阈值,查看使用情况,并通过图表和报告可视化支出。
根据当前需求调整环境大小对于保证成本控制至关重要。在需要时,您可以随时使用 OCI 服务的可扩展性功能,随时根据工作负载调整基础设施。我们还建议您删除未使用的服务,并在办公时间之外自动停止非生产环境实例。
浏览更多
详细了解此架构的特性以及优秀实践,以充分利用基于 OCI 的应用现代化项目。
查看以下其他资源:
- Oracle Cloud Infrastructure 的体系结构完善的框架
- Oracle Cloud Infrastructure 文档中的 Kubernetes Engine
- Oracle Cloud Infrastructure 文档中的使用 OpenSearch 进行搜索
- Oracle Cloud Infrastructure 文档中的 OCI Cache
- Oracle Cloud Infrastructure 文档中的 OCI Database with PostgreSQL
- 云采用框架
- Oracle Cloud Infrastructure 文档
- Oracle Cloud 成本估算器
- 现代应用程序开发