部署高可用性 Apache Cassandra 集群
Apache Cassandra 是一个开源 NoSQL 数据库。它线性缩放,数据会自动复制到多个节点。在 Oracle Cloud Infrastructure 中运行 Apache Cassandra 群集,并利用企业级可靠性、安全性和运营灵活性。
体系结构
此引用体系结构显示在 Oracle Cloud Infrastructure 计算实例上运行的 Apache Cassandra 集群的 6 节点部署。

插图 cassandra-oci.eps 的说明
体系结构由以下组成部分组成:
- 区域
Oracle Cloud Infrastructure 区域是一个本地化地理区域,包含一个或多个数据中心,称为可用性域。区域独立于其他区域,它们之间的巨大距离可以分开(跨越国家或甚至大陆)。
此体系结构中的所有组成部分都部署在一个区域中。
- 可用性域
可用性域是区域内的独立独立数据中心。每个可用性域中的物理资源与其他可用性域中的资源隔离,这些资源提供故障容差。可用性域不共享基础设施,例如电源、冷却或内部可用性域网络。因此,一个可用性域的故障不可能影响该区域的其他可用性域。
- 故障域
故障域是可用性域中的硬件和基础结构的分组。每个可用性域都有三个具有独立电源和硬件的故障域。在多个故障域之间分配资源时,应用程序可以容忍故障域中的物理服务器故障、系统维护和电源故障。
- 虚拟云网络 (VCN) 和子网
VCN 是在 Oracle Cloud Infrastructure 区域中设置的可自定义、软件定义的网络。与传统的数据中心网络一样,VCN 为您提供了对网络环境的完全控制。VCN 可以有多个非重叠 CIDR 块,您可以在创建 VCN 后更改这些块。可以将 VCN 细分为子网,子网可以被限定为区域或可用性域。每个子网包含一系列与 VCN 中的其他子网不重叠的地址。您可以在创建后更改子网的大小。子网可以是公共的或专用的。
- Apache Cassandra 集群
此体系结构显示一个 Apache Cassandra 集群,该集群由三个种子节点和三个在 Oracle Cloud Infrastructure 计算实例上运行的非种子节点组成。这些节点分布在单个可用性域中的故障域上。所有计算实例都附加到单个公共子网。
- Internet 网关
此体系结构中的互联网网关允许公共子网和公共互联网之间的通信。
- 安全列表
对于每个子网,您可以创建安全规则,以指定必须允许进出子网的源、目标和流量类型。
此体系结构包括 TCP 端口 7000、7001、7199、9042 和 9160 的入站规则。Apache Cassandra 使用端口 7000 进行集群之间的通信(如果启用了 SSL,则使用端口 7001)和 JMX 的端口 7199 之间的通信。端口 9042 是客户机端口,9160 是本机传输端口。
- 路由表
虚拟路由表包含用于将流量从子网路由到 VCN 外部的目标的规则,通常是通过网关路由。
建议
您的要求可能与此处描述的体系结构不同。使用以下建议案作为起点。
- 计算形状和操作系统
为此体系结构提供的 Terraform 模板部署运行 Oracle Linux 7 .8 的计算实例。根据您的需求,为计算实例选择适当的配置。Apache Cassandra 节点的内存越多,读取性能就越好。更高的 CPU 转换为更好的写入性能。
- VCN
创建 VCN 时,根据您计划附加到 VCN 中的子网的资源数确定所需的 CIDR 块数和每个块的大小。使用标准专用 IP 地址空间内的 CIDR 块。
选择不与您打算设置专用连接的任何其他网络(在 Oracle Cloud Infrastructure、内部部署数据中心或其他云提供商中)重叠的 CIDR 块。
创建 VCN 后,可以更改、添加和删除其 CIDR 块。
设计子网时,请考虑流量和安全要求。将特定层或角色中的所有资源附加到可用作安全边界的同一子网。
使用区域子网。
- 安全性
-
使用 Oracle Cloud Guard 可以在 Oracle Cloud Infrastructure 中主动监视和维护资源的安全性。Cloud Guard 使用检测器配方,您可以定义这些配方来检查您的资源是否存在安全弱点,并监视操作员和用户是否有风险活动。检测到任何不正确的配置或不安全的活动时,Cloud Guard 会根据您可以定义的响应方配方建议更正操作并协助执行这些操作。
-
对于需要最大安全性的资源,Oracle 建议您使用安全区域。安全区域是与基于最佳实践的 Oracle 定义的安全策略配方关联的区间。例如,不能从公共 Internet 访问安全区域中的资源,必须使用客户管理的密钥对其进行加密。在安全区域中创建和更新资源时,Oracle Cloud Infrastructure 将根据安全区域配方中的策略验证操作,并拒绝违反任何策略的操作。
-
考虑事项
实施此体系结构时,请考虑以下因素:
- 可扩展性
此体系结构在每个故障域中部署一个 Apache Cassandra 种子节点和一个非种子节点。您可能需要更多节点来满足应用程序的性能或高可用性要求。
您可以通过添加更多计算实例水平扩展 Apache Cassandra 集群。可以在故障域之间分配种子节点。
可以通过更改每个计算实例的形状垂直缩放群集。使用核心计数较高的配置可增加分配给计算实例的内存及其网络带宽。
- 应用程序可用性
在此体系结构中,执行相同任务的计算实例将在多个故障域之间冗余分布。此设计消除了拓扑中的任何单点故障。
部署体系结构后,可以使用 SSH 工具(如 PuTTY 或 Git Bash)连接到 Apache Cassandra 节点的公共 IP 地址。可以对 Apache Cassandra 数据库上的 DDL 和 DML 操作使用 Cassandra 查询语言 (CQL)。
- 成本
裸金属形状提供了更好的读写性能。如果您的应用程序不需要高性能,则可以根据数据库所需的核心、内存和网络带宽选择 VM 配置。您可以从 Apache Cassandra 节点的单核形状开始,如果需要更多的性能、内存或网络带宽,请稍后更改形状。
部署
部署此引用体系结构所需的代码在 GitHub 中可用。单击一次即可将代码拉入 Oracle Cloud Infrastructure Resource Manager,创建堆栈并进行部署。或者,也可以使用 Terraform CLI 将代码从 GitHub 下载到计算机,定制代码并部署体系结构。
- 使用 Oracle Cloud Infrastructure Resource Manager 进行部署:
- 使用 Terraform CLI 进行部署:
- 转到 GitHub。
- 将资料档案库克隆或下载到本地计算机。
- 按照
README
文档中的说明操作。