新增 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 設定屬性,請參閱 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 在 Rack 2 和 Rack 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 節點數量從六個增加到 12。這項設定需要額外的六個節點 (IP7 至 IP12)。

下圖顯示運算跨環 (順時針) 複製的順序,並強調在複製過程中,兩個相鄰節點未位於同一個機架上:

3 個機架,每個機架各有 4 個節點
(圖 4) 12 節點 Cassandra 環:每個三個機架上的四個節點

安裝 12 節點環的程序與安裝三個或六個節點環的程序類似:將 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 以私有雲。