新增 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 環:三個機架上各有兩個節點

在這個設定中,每個節點都有兩個以上的副本:一個在其他兩個機架中。例如,機架 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 個。這項設定需要額外六個節點 (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. 節點 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 for Private Cloud。