本部分提供了一般指导,帮助您通过在 Apigee Edge for Private Cloud 上实现 Cassandra 的机架感知,来扩缩 Cassandra 的操作。
如需详细了解为何让 Cassandra 环感知机架很重要,请参阅以下资源:
- 复制(Cassandra 文档)
- Cassandra 架构和复制因子策略
什么是机架?
Cassandra 机架是环内 Cassandra 节点的逻辑分组。Cassandra 使用机架,以便确保副本分布在不同的逻辑分组中。因此,操作不仅会发送到一个节点,还会发送到多个节点(每个节点位于单独的机架上),从而提供更高的容错能力和可用性。
本部分中的示例使用三个 Cassandra 机架,这是 Apigee 在生产拓扑中支持的机架数量。
Apigee Edge for Private Cloud 中 Cassandra 的默认安装假定一个逻辑机架,并将数据中心内的所有节点都放置在其中。虽然此配置易于安装和管理,但如果其中一个节点上的操作失败,则很容易发生故障。
下图显示了 Cassandra 环的默认配置:
在更强大的配置中,每个节点都会分配给一个单独的机架,并且操作也会在每个机架上的副本上执行。
下图显示了一个 3 节点环。此图显示了在环中复制操作的顺序(顺时针),并突出显示了没有两个节点位于同一机架上的事实:
在此配置中,操作会发送到某个节点,但也会发送到其他机架上该节点的副本(按顺时针顺序)。
添加机架感知(包含 3 个节点)
Apigee Edge for Private Cloud 的所有生产安装拓扑都至少有三个 Cassandra 节点,本部分将其称为“IP1”“IP2”和“IP3”。默认情况下,这些节点都位于同一机架“ra-1”中。
本部分介绍如何将 Cassandra 节点分配到不同的机架,以便将所有操作发送到环内不同逻辑分组中的副本节点。
如需在安装期间将 Cassandra 节点分配到不同的机架,请执行以下操作:
- 在运行安装程序之前,请登录 Cassandra 节点并打开以下静默配置文件进行修改:
/opt/silent.conf
如果该文件不存在,请创建该文件,并确保将“apigee”用户设为所有者。
- 修改
CASS_HOSTS属性,即以空格分隔的 IP 地址列表(而非 DNS 或主机名条目),该列表使用以下语法:CASS_HOSTS="IP_address:data_center_number,rack_number [...]"
默认值为一个三节点 Cassandra 环,其中每个节点都分配给机架 1 和数据中心 1,如以下示例所示:
CASS_HOSTS="IP1:1,1 IP2:1,1 IP3:1,1"
- 更改机架分配,以便将节点 2 分配给机架 2,将节点 3 分配给机架 3,如以下示例所示:
CASS_HOSTS="IP1:1,1 IP2:1,2 IP3:1,3"
通过更改机架分配,您可以指示 Cassandra 创建另外两个逻辑分组(机架),然后提供接收第一个节点接收的所有操作的副本。
如需详细了解如何使用
CASS_HOSTS配置属性,请参阅 Edge 配置文件参考。 - 将更改保存到配置文件,然后执行以下命令,使用更新后的配置安装 Cassandra:
/opt/apigee/apigee-setup/bin/setup.sh -p c -f path/to/silent/config
例如:
/opt/apigee/apigee-setup/bin/setup.sh -p c -f /opt/silent.conf
- 按照在
CASS_HOSTS属性中分配节点的顺序,对环中的每个 Cassandra 节点重复此过程。在这种情况下,您必须按以下顺序安装 Cassandra:- 节点 1 (IP1)
- 节点 2 (IP2)
- 节点 3 (IP3)
安装后,您应检查 Cassandra 配置。
检查 Cassandra 配置
安装机架感知 Cassandra 配置后,您可以使用 nodetool status 命令检查节点是否已分配到不同的机架,如以下示例所示:
/opt/apigee/apigee-cassandra/bin/nodetool status
(您可以在其中一个 Cassandra 节点上执行此命令。)
结果应如下所示,其中 Rack 列显示每个节点的不同机架 ID:
Datacenter: dc-1 ======================== Status=Up/Down |/ State=Normal/Leaving/Joining/Moving -- Address Load Tokens Owns Host ID Rack UN IP1 737 MB 256 ? 554d4498-e683-4a53-b0a5-e37a9731bc5c ra-1 UN IP2 744 MB 256 ? cf8b7abf-5c5c-4361-9c2f-59e988d52da3 ra-2 UN IP3 723 MB 256 ? 48e0384d-738f-4589-aa3a-08dc5bd5a736 ra-3
如果您为 Cassandra 启用了 JMX 身份验证,则还必须将用户名和密码传递给 nodetool。如需了解详情,请参阅使用 nodetool 管理集群节点。
安装六节点环
为了提高冗余性,您可以将 Cassandra 环扩展到六个节点。在这种情况下,您需要为三个机架中的每个机架分配两个节点。此配置需要额外三个节点:节点 4 (IP4)、节点 5 (IP5) 和节点 6 (IP6)。
下图展示了操作在环中复制的顺序(顺时针),并突出显示了在复制期间,没有两个相邻节点位于同一机架上:
在此配置中,每个节点还有两个副本:一个位于其他两个机架中。例如,机架 1 中的节点 1 在机架 2 和机架 3 中有副本。发送到节点 1 的操作也会按顺时针顺序发送到其他机架中的副本。
如需将三节点 Cassandra 环扩展到六节点 Cassandra 环,请在静默配置文件中按以下方式配置节点:
CASS_HOSTS="IP1:1,1 IP4:1,3 IP2:1,2 IP5:1,1 IP3:1,3 IP6:1,2"
与三节点环一样,您必须按照节点在 CASS_HOSTS 属性中显示的顺序安装 Cassandra:
- 节点 1 (IP1)
- 节点 4 (IP4)*
- 节点 2 (IP2)
- 节点 5 (IP5)
- 节点 3 (IP3)
- Node 6 (IP6)
* 在第四个节点(Cassandra 安装顺序中的第二台机器)上运行设置实用程序之前,在静默配置文件中进行更改。
扩容到 12 个节点
为了进一步提高容错能力和可用性,您可以将环中的 Cassandra 节点数量从 6 个增加到 12 个。此配置需要另外六个节点(IP7 到 IP12)。
下图展示了操作在环中复制的顺序(顺时针),并突出显示了在复制期间,没有两个相邻节点位于同一机架上:
安装 12 节点环的过程与安装 3 节点或 6 节点环的过程类似:将 CASS_HOSTS 设置为给定值,然后按指定顺序运行安装程序。
如需扩展到 12 节点 Cassandra 环,请在静默配置文件中按以下方式配置节点:
CASS_HOSTS="IP1:1,1 IP7:1,2 IP4:1,3 IP8:1,1 IP2:1,2 IP9:1,3 IP5:1,1 IP10:1,2 IP3:1,3 IP11:1,1 IP6:1,2 IP12:1,3"
与三节点和六节点环一样,您必须按照节点在配置文件中的显示顺序在节点上执行安装程序:
- 节点 1 (IP1)
- 节点 7 (IP7)*
- 节点 4 (IP4)
- Node 8 (IP8)
- 节点 2 (IP2)
- 节点 9 (IP9)
- 节点 5 (IP5)
- 节点 10 (IP10)
- 节点 3 (IP3)
- 节点 11 (IP11)
- Node 6 (IP6)
- 节点 12 (IP12)
* 您必须先进行这些更改,然后才能在第 7 个节点(Cassandra 安装顺序中的第二台机器)上安装 Apigee Edge for Private Cloud。