部署高可用性 CockroachDB 集群
CockroachDB 是基于事务和一致的密钥/值存储构建的分布式 SQL 数据库。
体系结构
此引用体系结构显示 CockroachDB 在 Oracle Cloud Infrastructure 计算实例上的典型三节点部署。公共负载平衡器用于在这三个节点之间分配负载。
下图说明了此引用体系结构。

插图 cockroachdb-oci.png 的说明
- 区域
Oracle Cloud Infrastructure 区域是一个本地化地理区域,包含一个或多个数据中心,称为可用性域。区域独立于其他区域,而且广阔的距离可以分开(跨越国家或甚至大陆)。
- 可用性域
可用性域是区域内的独立独立数据中心。每个可用性域中的物理资源都与其他可用性域中的资源隔离,从而提供故障容差。可用性域不共享基础结构,例如电源、冷却或内部可用性域网络。因此,一个可用性域的故障不可能影响该区域中的其他可用性域。
- 故障域
故障域是可用性域中的一组硬件和基础结构。每个可用性域都有三个具有独立电源和硬件的故障域。在多个故障域之间分配资源时,应用程序可以容忍故障域中的物理服务器故障、系统维护和电源故障。
- 虚拟云网络 (VCN) 和子网
VCN 是在 Oracle Cloud Infrastructure 区域中设置的可自定义、软件定义的网络。与传统的数据中心网络一样,VCN 为您提供了对网络环境的完全控制。VCN 可以有多个非重叠 CIDR 块,您可以在创建 VCN 后更改这些块。您可以将 VCN 细分为子网,子网可以被限定为区域或可用性域。每个子网包含一系列与 VCN 中的其他子网不重叠的地址。您可以在创建后更改子网的大小。子网可以是公共的或专用的。
此体系结构使用一个公共子网托管公共负载平衡器和运行 CockroachDB 的三个计算实例。
- 负载平衡器
Oracle Cloud Infrastructure Load Balancing 服务提供了从一个入口点到可从 VCN 访问的多个服务器的自动通信分配。此体系结构具有两个侦听器,一个用于 TCP 端口 8080,另一个用于 TCP 端口 26257。负载平衡器还具有两个与这两个监听程序对应的后端集。
- 安全列表
对于每个子网,可以创建安全规则,以指定必须允许进出子网的源、目标和流量类型。
此体系结构对 TCP 端口 8080 和 26257 使用入站规则,以便客户机可以访问 HTTP 和 CockroachDB 监听程序通信量。
建议
您的要求可能与此处描述的体系结构不同。使用以下建议案作为起点。
- 计算形状
此体系结构使用带有 VM.Standard.E3.Flex 计算配置的 Oracle Linux 7 .9 OS 映像。对于应用程序,如果需要更多的内存、核心或网络带宽,则可以选择其他配置。
- VCN
-
创建 VCN 时,根据计划附加到 VCN 中子网的资源数确定所需的 CIDR 块数和每个块的大小。使用标准专用 IP 地址空间内的 CIDR 块。
-
选择不与您要设置专用连接的任何其他网络(在 Oracle Cloud Infrastructure、内部部署数据中心或其他云提供商中)重叠的 CIDR 块。
-
创建 VCN 后,可以更改、添加和删除其 CIDR 块。
-
设计子网时,请考虑流量和安全要求。将特定层或角色中的所有资源附加到可用作安全边界的同一子网。
- 使用区域子网。
-
- 负载平衡器带宽
创建负载平衡器时,您可以选择提供固定带宽的预定义形状,也可以指定定制(灵活)形状,在其中设置带宽范围,并允许服务根据流量模式自动缩放带宽。使用任一方法,可以在创建负载平衡器后随时更改形状。
考虑事项
- 可扩展性
实现法定人数所需的最小节点数为三个,因此此体系结构部署三个节点。您可能需要更多节点来满足应用程序的性能或高可用性要求。
您可以通过添加更多计算节点并将其包含在负载平衡器后端集中来水平缩放数据库集群。
可以通过更改每个计算节点的 VM 配置来垂直缩放数据库集群。使用较高的核心计数配置还会增加分配给计算实例和网络带宽的内存。
- 可用性
故障域提供了单个可用性域中的最佳弹性。在此体系结构中,您可以在具有多个可用性域的区域中部署执行相同任务的计算实例,而不是在一个可用性域中部署应用程序。此设计通过引入冗余来消除单点故障。部署体系结构后,使用负载平衡器的公共 IP 地址使用内置 SQL 客户机连接到 CockroachDB。
- 成本
根据数据库所需的核心、内存和网络带宽选择虚拟机 (VM) 配置。您可以从一个核心配置开始,如果需要数据库节点的性能、内存或网络带宽增加,可以稍后更改 VM 配置。
部署
此引用体系结构的 Terraform 代码在 Oracle Cloud Infrastructure Resource Manager 中作为示例堆栈提供。您还可以从 GitHub 下载代码,并根据特定要求进行定制。
- 使用 Oracle Cloud Infrastructure Resource Manager 中的示例堆栈进行部署:
- 在 GitHub 中使用 Terraform 代码进行部署:
- 转到 GitHub。
- 将资料档案库克隆或下载到本地计算机。
- 按照
README文档中的说明操作。