将使用 MySQL 的云原生应用部署到 Oracle Cloud Infrastructure

可以使用 Oracle Container Engine for Kubernetes (OKE)、Oracle Cloud Infrastructure RegistryOracle MySQL Database Service (MDS) 开发和部署云原生应用程序,以及将旧有应用程序迁移到云。

OKE 是完全托管、可扩展的高可用性服务,可用于将容器化应用部署到云。当开发团队希望可靠地构建、部署和管理云原生应用时,请使用 OKE。

您可以使用 Oracle Cloud Infrastructure Registry 作为专用 Docker 注册表,供内部使用,使用 Docker V2 API 和标准 Docker 命令行界面 (command line interface, CLI) 在注册表中推送和拉取 Docker 映像。

MDS 是完全托管的 Oracle Cloud Infrastructure 本机服务,可自动执行备份和恢复等任务以及数据库和操作系统打补丁。

Oracle Cloud Infrastructure Compute 上使用 MDS 具有以下优势:

  • 只需几分钟即可部署 MySQL。
  • 得益于完全托管的 OCI 服务。
  • 专注于开发,而不是基础设施管理。
  • 为现代应用使用工具和最新功能。
  • 根据您的需求扩展。
  • 避免影子 IT。

体系结构

此参考体系结构包含使用 MDS 构建的高可用性数据库层和 OKE 群集。

下图说明了此引用体系结构。

后面是 architecture-kubernetes-mysql-oci.png 的说明
插图体系结构的说明 -kubernetes-mysql-oci.png

architecture-kubernetes-mysql-oci-oracle.zip

在活动域子网中部署 MDS 时,MDS 将部署 MySQL 实例的集群,每个容错域中有一个实例来提供冗余。一个实例是主实例,另外两个实例是辅助实例。主数据库包括单个端点,支持读取和写入数据库,而辅助数据库从主数据库接收复制的数据。不允许直接访问辅助节点。

如果发生故障或手动切换,则其中一个辅助节点将成为新的主节点,并将端点重定向到它。这意味着端点 IP 地址不会更改,并且不需要更新应用程序。OCI 管理数据库的高可用性方面。

该体系结构包括 OKE 集群,该集群与 Oracle Cloud Infrastructure Registry 一起使用,可容纳开发的和可部署的云原生应用。

该体系结构具有以下组成部分:

  • 堡垒主机

    堡垒主机是计算实例,用作从云外部访问拓扑的安全受控入口点。堡垒主机通常在非军事区 (DMZ) 中进行预配。它使您可以通过将敏感资源放置在无法直接从云外部访问的专用网络中来保护敏感资源。拓扑有一个已知入口点,您可以定期监视和审计。因此,您可以避免公开拓扑中更敏感的组件,而不会影响对它们的访问。

  • Container Engine for Kubernetes

    Oracle Cloud Infrastructure Container Engine for Kubernetes 是一款完全托管、可扩展且高度可用的服务,可用于将容器化应用部署到云端。您可以指定应用所需的计算资源,Container Engine for Kubernetes 将其预配在现有租户的 Oracle Cloud Infrastructure 上。Container Engine for Kubernetes 使用 Kubernetes 自动在主机集群中部署、扩展和管理容器化应用。

  • Oracle MySQL 数据库服务

    Oracle MySQL 数据库服务是完全托管的 Oracle Cloud Infrastructure (OCI) 数据库服务,可帮助开发人员快速开发和部署安全的云原生应用。Oracle MySQL 数据库服务针对 OCI 进行了优化并且具有独占可用性,由 OCI 和 MySQL 工程团队完全构建、管理和支持。

    Oracle MySQL 数据库服务集成了高性能分析引擎 (HeatWave),可以直接对运营 MySQL 数据库运行复杂的实时分析。

  • 注册表

    Oracle Cloud Infrastructure Registry 是一个由 Oracle 管理的注册表,可用于简化开发到生产的工作流。通过注册表,您可以轻松地存储、共享和管理开发构件,例如 Docker 映像。Oracle Cloud Infrastructure 的高可用性和可扩展性架构可确保您能够可靠地部署和管理应用。

  • 区域

    Oracle Cloud Infrastructure 区域是一个局部地理区域,其中包含一个或多个数据中心,称为可用性域。区域独立于其他区域,而广阔的距离可以分离它们(跨国家甚至大陆)。

  • 虚拟云网络 (VCN) 和子网

    VCN 是可在 Oracle Cloud Infrastructure 区域中设置的可定制的软件定义网络。与传统的数据中心网络一样,VCN 允许您完全控制您的网络环境。VCN 可以具有多个不可重叠的 CIDR 块,您可以在创建 VCN 后更改这些块。您可以将 VCN 分段到子网,这些子网可以限定到区域或可用性域。每个子网包含一个连续的地址范围,这些地址与 VCN 中的其他子网不重叠。您可以在创建子网后更改其大小。子网可以是公共子网,也可以是专用子网。

  • 可用性域

    可用性域是一个区域中的独立数据中心。每个可用性域中的物理资源都与其他可用性域中的资源隔离,因而具备容错能力。可用性域不共享电源、冷却设备或内部可用性域网络等基础设施。因此,一个可用性域出现故障不会影响区域中的其他可用性域。

  • 故障域

    故障域是可用性域内一组硬件和基础设施。每个可用性域具有三个具有独立电源和硬件的容错域。在多个容错域之间分配资源时,您的应用可以承受容错域中的物理服务器故障、系统维护和电源故障。

  • 动态路由网关 (DRG)

    DRG 是一个虚拟路由器,它提供 VCN 与区域之外的网络之间的专用网络通信路径,例如另一个 Oracle Cloud Infrastructure 区域中的 VCN、内部部署网络或其他云提供商中的网络。

  • 服务网关

    通过服务网关,可以从 VCN 访问其他服务,例如 Oracle Cloud Infrastructure Object Storage。从 VCN 到 Oracle 服务的流量通过 Oracle 网络结构传输,永远不会经过互联网。

  • Internet 网关

    互联网网关允许 VCN 中的公共子网与公共互联网之间的通信。

  • 安全列表

    对于每个子网,您可以创建安全规则来指定必须允许传入和传出子网的通信的源、目标和类型。

  • 路由表

    虚拟路由表包含将流量从子网路由到 VCN 之外的目的地(通常通过网关)的规则。

建议

您的要求可能不同于此处描述的体系结构。使用以下建议作为起点。

  • 堡垒主机

    使用具有一个 CPU 和 1 GB 内存的 VM.Standard.E4.Flex 配置以及最新的 Oracle Linux 操作系统。

  • OKE 集群

    使用控制台中的“Custom Create(定制创建)”选项,以便您可以指定用于部署的 VCN 和子网。创建三节点群集,然后选择 VM.Standard.E4.Flex 作为初始配置。对于较大的部署,您可以使用较大的集群大小和较高的计算配置。

  • 数据库系统配置

    此体系结构使用 MDS 中的高可用性来提供分布在容错域中的三台 MySQL 服务器。对于轻量负载,我们建议使用 MySQL。VM.Standard.E3.1.8GB.HA。您可以使用较大的配置来运行要求更高的负载。

  • 正在连接到 MDS

    您可以直接通过 MySQL 客户机或安装在应用程序 VM 或容器上的 MySQL shell 访问 MDS。

  • MDS 数据库存储

    MDS 数据库存储性能随着为数据库系统选择的存储大小而扩展。无法限制或编辑 MDS 存储 IOPS。您必须根据数据大小和性能要求预配存储大小。MDS 通过 iSCSI 使用 "Block Volume Service Higher Performance" 选项。最终性能结果可能因不同的配置和方案而异。

  • 容器注册表

    Oracle 管理注册表,因此您不必选择大小或任何其他选项。我们建议为安全最佳实践创建专用注册表。

  • VCN

    创建 VCN 时,根据计划连接到 VCN 中的子网的资源数量,确定所需的 CIDR 块数和每个块的大小。使用标准专用 IP 地址空间内的 CIDR 块。

    选择与要设置专用连接的任何其他网络(在 Oracle Cloud Infrastructure、您的内部部署数据中心或其他云提供商)不重叠的 CIDR 块。

    创建 VCN 后,您可以更改、添加和删除其 CIDR 块。

    设计子网时,请考虑流量和安全性要求。将特定层或角色中的所有资源连接到可以用作安全边界的同一子网。

考虑事项

  • 可扩展性

    您可以通过更改每个计算节点的 VM 配置来垂直扩展 MySQL。使用核心计数较高的配置可以增加分配给计算实例的内存和网络带宽。

  • 应用程序可用性

    此体系结构使用 MDS 中的高可用性在多个容错域之间分布计算实例,这可以消除单点故障并提供冗余。

  • 成本

    根据数据库所需的核心、内存和网络带宽选择 VM 配置。您可以从单核形状开始。如果应用程序或数据库节点需要更高的性能、内存或网络带宽,您可以稍后更改 VM 配置。

部署

此参考体系结构的 Terraform 代码在 Oracle Cloud Infrastructure Resource Manager 中作为样例堆栈提供。您还可以从 GitHub 下载代码,并对其进行定制以满足您的特定需求。

  • 使用 Oracle Cloud Infrastructure Resource Manager 中的示例堆栈进行部署:
    1. 单击 部署到 Oracle Cloud

      如果您尚未登录,请输入租户和用户凭据。

    2. 查看并接受条款和条件。
    3. 选择要部署堆栈的区域。
    4. 按照屏幕上的提示和说明创建堆栈。
    5. 创建堆栈后,单击 Terraform 操作,然后选择计划
    6. 等待任务完成,然后复核计划。

      要进行任何更改,请返回到 "Stack Details"(堆栈详细信息)页面,单击 Edit Stack(编辑堆栈),然后进行所需的更改。然后,再次运行计划操作。

    7. 如果不需要进一步更改,请返回“堆栈详细信息”页,单击 Terraform 操作,然后选择应用
  • 在 GitHub 中使用 Terraform 代码进行部署:
    1. 转至 GitHub
    2. 将存储库克隆或下载到本地计算机。
    3. 按照 README 文档中的说明进行操作。

更改日志

此日志列出重大更改: