添加 Cassandra 机架支持

本部分提供了一般指导,帮助您通过在 Apigee Edge for Private Cloud 上实现 Cassandra 的机架感知,来扩缩 Cassandra 的操作。

如需详细了解为何让 Cassandra 环感知机架很重要,请参阅以下资源:

什么是机架?

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

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

Apigee Edge for Private Cloud 中 Cassandra 的默认安装假定一个逻辑机架,并将数据中心内的所有节点都放置在其中。虽然此配置易于安装和管理,但如果其中一个节点上的操作失败,则很容易发生故障。

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

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

在更强大的配置中,每个节点都会分配给一个单独的机架,并且操作也会在每个机架上的副本上执行。

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

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

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

添加机架感知(包含 3 个节点)

Apigee Edge for Private Cloud 的所有生产安装拓扑都至少有三个 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 配置属性,请参阅 Edge 配置文件参考。

  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 环扩展到六个节点。在这种情况下,您需要为三个机架中的每个机架分配两个节点。此配置需要额外三个节点:节点 4 (IP4)、节点 5 (IP5) 和节点 6 (IP6)。

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

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

在此配置中,每个节点还有两个副本:一个位于其他两个机架中。例如,机架 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. Node 6 (IP6)

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

扩容到 12 个节点

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

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

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

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

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