添加 Cassandra 机架支持

本部分提供一般指导,介绍如何将适用于私有云的 Apigee Edge 的 Cassandra 设为机架感知,从而扩缩 Cassandra 的运维。

如需详细了解让 Cassandra 环形机架感知型功能为何非常重要,请参阅以下资源:

什么是机架?

Cassandra 机架是环内 Cassandra 节点的逻辑分组。Cassandra 使用机架,以确保副本分布在不同的逻辑分组中。因此,操作不仅会发送到一个节点,还会发送到多个节点(每个节点位于单独的机架上),从而提供更高的容错能力和可用性。

本部分中的示例使用了三个 Cassandra 机架,即生产拓扑中 Apigee 支持的机架数量。

适用于私有云的 Apigee Edge 中默认安装的 Cassandra 假设只有一个逻辑机架,并将所有节点布置在该机架内的数据中心内。虽然此配置易于安装和管理,但如果其中某个节点上的操作失败,则很容易失败。

下图显示了 Cassandra 环的默认配置:

1 个包含 3 个节点的机架
(图 1) 默认配置:一个机架上的所有节点

在更可靠的配置中,每个节点都会被分配到一个单独的机架上,并且操作也将在每个机架上的副本上执行。

下图展示了一个包含 3 个节点的环。此图显示了在整个环上复制操作的顺序(顺时针),并突出显示了同一机架上没有两个节点这一事实:

3 个机架,每个机架 1 个节点
(图 2) 机架感知配置:三个节点,每个机架一个

在此配置中,操作将发送到一个节点,但也会发送到其他机架上该节点的副本(按顺时针顺序)。

增加了机架感知功能(具有 3 个节点)

适用于私有云的 Apigee Edge 的所有生产安装拓扑都至少有三个 Cassandra 节点,本部分分别称为“IP1”“IP2”和“IP3”。默认情况下,每个节点都位于同一机架“ra-1”中。

本部分介绍如何将 Cassandra 节点分配到单独的机架,以便将所有操作发送到环内不同逻辑分组中的副本节点。

在安装期间将 Cassandra 节点分配到不同的机架

  1. 在运行安装程序之前,请登录 Cassandra 节点并打开以下静默配置文件进行修改:
    /opt/silent.conf

    如果该文件不存在,请创建该文件,并确保将“apigee”用户设为所有者。

  2. 修改 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"
  3. 更改机架分配,以将节点 2 分配给机架 2,将节点 3 分配给机架 3,如以下示例所示:
    CASS_HOSTS="IP1:1,1 IP2:1,2 IP3:1,3"

    通过更改机架分配,您可以指示 Cassandra 创建两个额外的逻辑分组(机架),然后提供用于接收第一个节点收到的所有操作的副本。

    如需详细了解如何使用 CASS_HOSTS 配置属性,请参阅边缘配置文件参考

  4. 保存对配置文件的更改,然后执行以下命令以使用更新后的配置安装 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
  5. 按照在 CASS_HOSTS 属性中分配节点的顺序,对环中的每个 Cassandra 节点重复此过程。在这种情况下,您必须按以下顺序安装 Cassandra:
    1. 节点 1 (IP1)
    2. 节点 2 (IP2)
    3. 节点 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 环扩展为 6 个节点。在本例中,您要为三个机架分别分配两个节点。此配置需要额外的三个节点:Node 4 (IP4)、Node 5 (IP5) 和 Node 6 (IP6)。

下图显示了在整个环上复制操作的顺序(顺时针),并突出显示了在复制期间,同一机架上没有两个相邻节点这一事实:

3 个机架,每个机架 2 个节点
(图 3) 6 节点 Cassandra 环:三个机架各有两个节点

在此配置中,每个节点有两个副本:另外两个机架各一个。例如,机架 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. 节点 1 (IP1)
  2. 节点 4 (IP4)*
  3. 节点 2 (IP2)
  4. 节点 5 (IP5)
  5. 节点 3 (IP3)
  6. 节点 6 (IP6)

* 在第四个节点(Cassandra 安装顺序中的第二台机器)上运行设置实用程序之前,先在静默配置文件中进行更改。

扩展到 12 个节点

如需进一步提高容错能力和可用性,您可以将环中的 Cassandra 节点数量从 6 个增加到 12 个。此配置需要额外的 6 个节点(IP7 到 IP12)。

下图显示了在整个环上复制操作的顺序(顺时针),并突出显示了在复制期间,同一机架上没有两个相邻节点这一事实:

3 个机架,每个机架 4 个节点
(图 4) 12 节点 Cassandra 环:三个机架各 4 个节点

安装 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. 节点 1 (IP1)
  2. 节点 7 (IP7)*
  3. 节点 4 (IP4)
  4. 节点 8 (IP8)
  5. 节点 2 (IP2)
  6. 节点 9 (IP9)
  7. 节点 5 (IP5)
  8. 节点 10 (IP10)
  9. 节点 3 (IP3)
  10. 节点 11 (IP11)
  11. 节点 6 (IP6)
  12. 节点 12 (IP12)

* 您必须先进行这些更改,然后才能在第 7 个节点(Cassandra 安装顺序中的第二台机器)上安装适用于私有云的 Apigee Edge。