關於 ZooKeeper 維護

ZooKeeper 集體設計為保持運作,不會遺失資料, 一或多個 ZooKeeper 節點。這項彈性可用於在 ZooKeeper 節點,無須系統停機。

關於 ZooKeeper 和 Edge

在 Edge 中,ZooKeeper 節點含有與 各種 Edge 元件,並通知不同設定變更元件所有語言 正式環境系統支援的 Edge 拓撲,至少使用三個 ZooKeeper 節點。

請使用 ZK_HOSTSZK_CLIENT_HOSTS 屬性, 用於指定 ZooKeeper 節點的邊緣設定檔。例如:

ZK_HOSTS="$IP1 $IP2 $IP3"
ZK_CLIENT_HOSTS="$IP1 $IP2 $IP3"

在此情況下:

  • ZK_HOSTS 會指定 ZooKeeper 節點的 IP 位址。IP 位址 必須按照所有 ZooKeeper 節點的順序排列。

    在多資料中心環境中,列出所有資料中心的所有 ZooKeeper 節點。

  • ZK_CLIENT_HOSTS 會指定此項目使用的 ZooKeeper 節點 IP 位址 僅限資料中心。您必須在上述區域的所有 ZooKeeper 節點中,按照相同的順序列出 IP 位址。 資料中心

    在單一「資料中心」安裝程序中,這些節點與 ZK_HOSTS 所指定的節點相同。在 多資料中心環境,每個資料中心的 Edge 設定檔應該只列出 該資料中心的 ZooKeeper 節點。

根據預設,所有 ZooKeeper 節點都會指定為 voter 節點。也就是說 都參與選出 ZooKeeper 領導者。您可以在 :observer 修飾符搭配 ZK_HOSTS,用來表示 節點是一個「觀察器」節點,不是選民。觀察器節點未參與 因此主要是

您通常在建立多個邊緣資料時指定 :observer 修飾符 或單一資料中心有大量 ZooKeeper 節點時。例如,在 12 主機裝設了兩個資料中心,位於資料中心 2 節點 9 的 ZooKeeper 觀察器:

然後在資料中心 1 的設定檔中使用下列設定:

ZK_HOSTS="$IP1 $IP2 $IP3 $IP7 $IP8 $IP9:observer"
ZK_CLIENT_HOSTS="$IP1 $IP2 $IP3"

資料中心 2:

ZK_HOSTS="$IP1 $IP2 $IP3 $IP7 $IP8 $IP9:observer"
ZK_CLIENT_HOSTS="$IP7 $IP8 $IP9"

以下章節提供更多有關領先者、選民和投票者的詳細資料 並說明新增選民和觀察者節點的考量事項。

關於主管、追蹤者 和觀眾

在多節點 ZooKeeper 安裝中,其中一個節點會指定為領導者。 所有其他 ZooKeeper 節點會指定為追蹤者。雖然讀取作業可以 ZooKeeper 節點,所有寫入要求都會轉送至領導者。舉例來說 已將處理器新增至 Edge。該資訊會寫入 ZooKeeper 領導者。所有追蹤者 然後複製資料

在 Edge 安裝期間,您可以將各個 ZooKeeper 節點指定為選民或觀察者。 接著,系統會由所有選民 ZooKeeper 節點選出首席。其中一項規定是 領導者是必須能有仲裁的 ZooKeeper 選民節點可用。A 罩杯 仲裁的意思是所有資料中心的所有選民 ZooKeeper 節點當中 以及功能正常運作

如果選票上沒有可用的選民節點,就無法選出領導者。在這個情境中 Zookeeper 無法處理要求。這表示您無法向 Edge Management 提出要求 伺服器、處理 API 要求或登入 Edge UI,直到仲裁還原為止。

舉例來說,在單一資料中心安裝作業中:

  • 您已安裝三個 ZooKeeper 節點
  • 所有 ZooKeeper 節點都是選民
  • 仲裁是兩個運作中的選民節點
  • 如果只可用一個選民節點,ZooKeeper 組合無法運作

安裝有兩個資料中心時:

  • 您已為每個資料中心安裝三個 ZooKeeper 節點,總共有六個節點
  • 資料中心 1 有三個選民節點
  • 資料中心 2 有兩個選民節點和一個觀察者節點
  • 仲裁依據兩個資料中心的五位投票者,因此符合 三個正常運作的選民節點
  • 如果只有兩個以下的選民節點可用,ZooKeeper 成員無法合併 函式

將節點新增為投票者的注意事項 觀察者

您的系統需求可能需要將額外的 ZooKeeper 節點新增至 Edge 安裝。新增 ZooKeeper 節點說明文件 說明如何將其他 ZooKeeper 節點新增至 Edge。新增 ZooKeeper 節點時,您必須 請將要新增的節點類型納入考量:選民或觀察者。

必須確保有足夠的投票者節點,當一或多個選民節點故障時 ZooKeeper 整體系統仍可正常運作,意味著還是有一堆選民節點 廣告。加入選民節點可以提高仲裁的數量,進而 容許更多選民節點遭到關閉

不過,新增更多投票者節點,可能會對寫入效能造成負面影響,因為寫入 運作需要仲裁者達成共識。決定勝出版本所需的時間 是根據選民節點人數計算,並隨著投票數增加而增加。 因此,您不想讓所有節點投票者。

您可以新增觀察者節點,而不新增選民節點。新增觀察器節點增加次數 整體系統讀取效能並不會增加選擇勝出版本負擔 觀察節點不會投票,也不會影響仲裁大小。因此,如果觀察器節點 但這不會影響到選領導者的能力。不過,遺失觀察器 節點可能會導致 ZooKeeper 整體的讀取效能降低 服務資料要求可用的節點減少了

Apigee 建議在單一資料中心的投票者人數不超過五位 觀察器節點數量Apigee 建議在兩個資料中心內 不到九位選民 (一是資料中心的五位,另一家則為四人)。等您想加入的 Pod 視系統需求而定。

移除 Zookeeper 節點

移除 Zookeeper 節點的原因有很多種;舉例來說 毀損或新增至錯誤的環境。

本節說明如何在節點當機時移除 Zookeeper 節點 可連線。

如何移除 Zookeeper 節點:

  1. 編輯無訊息設定檔,移除您獲取的 Zookeeper 節點的 IP 位址 或將其移除。
  2. 重新執行 setup 指令,讓 Zookeeper 管理員重新設定剩餘的 ZooKeeper 節點:
    /opt/apigee/apigee-service/bin/apigee-service apigee-zookeeper setup -f updated_config_file
  3. 重新啟動所有 Zookeeper 節點:
    /opt/apigee/apigee-service/bin/apigee-service apigee-zookeeper restart
  4. 重新設定 Management Server 節點:
    /opt/apigee/apigee-service/bin/apigee-service edge-management-server setup -f updated_config_file
    /opt/apigee/apigee-service/bin/apigee-service edge-management-server restart
  5. 重新設定所有路由器:
    /opt/apigee/apigee-service/bin/apigee-service edge-router setup -f updated_config_file
    /opt/apigee/apigee-service/bin/apigee-service edge-router restart
  6. 重新設定所有訊息處理器:
    /opt/apigee/apigee-service/bin/apigee-service edge-message-processor setup -f updated_config_file
    /opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
  7. 重新設定所有 Qpid 節點:
    /opt/apigee/apigee-service/bin/apigee-service edge-qpid-server setup -f updated_config_file
    /opt/apigee/apigee-service/bin/apigee-service edge-qpid-server restart
  8. 重新設定所有 Postgres 節點:
    /opt/apigee/apigee-service/bin/apigee-service edge-postgres-server setup -f updated_config_file
    /opt/apigee/apigee-service/bin/apigee-service edge-postgres-server restart

維護作業注意事項

您可以在功能完全正常運作的情況下,在不停機的狀態下執行 ZooKeeper 維護工作 也就是一次在單一節點上執行確認只有一個 ZooKeeper 節點停止運作 您將確保隨時有大量的選民節點可供挑選 領先

維護作業範圍: 多個資料中心

使用多個資料中心時,別忘了 ZooKeeper 整體運作模式 區分資料中心ZooKeeper 團隊集結了所有 ZooKeeper 節點 整合資料中心

指定資料中心的選民節點位置並非 ZooKeeper 運作時的考量因素 仲裁計算。個別節點可以跨越資料中心,但只要仲裁 在整個整體物件中保存下來,ZooKeeper 仍然正常運作。

維護作業的影響

在不同時候,您必須關閉 ZooKeeper 節點以進行維護,他們可以是選民 節點或觀察器節點例如,您可能需要升級節點上的 Edge 版本 代管 ZooKeeper 的機器可能故障 發生網路錯誤等情況

如果停止運作的節點是觀察器節點, 將 ZooKeeper 的效能集中在節點還原前。如果節點為選民 節點時,這可能會影響 ZooKeeper 集體的可行性,因為系統會遺失 參與主要選舉流程無論選民節點為何 至關重要

維護程序

只有在確認 ZooKeeper 後,才執行維護程序 整體運作情形這個假設觀測器節點運作正常且數量足夠 維護期間可以使用的選民節點來保留仲裁。

符合這些條件時,ZooKeeper 無論大小為何,都能夠容許 遺失單一節點,既不會遺失資料,也不會影響效能。這個 因此,只要節點位於其中一個節點,您就可以自由執行維護作業 節點平行處理

執行維護作業時,請按照下列程序,決定 ZooKeeper 節點 (領導者、選民或觀察者):

  1. 如果該應用程式未安裝在 ZooKeeper 節點上,請安裝 nc
    sudo yum install nc
  2. 在節點上執行下列 nc 指令,其中 2181 是 ZooKeeper 通訊埠:
    echo stat | nc localhost 2181

    您應該會在表單中看到輸出內容:

    Zookeeper version: 3.4.5-1392090,
    built on 09/30/2012 17:52 GMT
    Clients: /a.b.c.d:xxxx[0](queued=0,recved=1,sent=0)
    Latency min/avg/max: 0/0/0
    Received: 1
    Sent: 0
    Connections: 1
    Outstanding: 0
    Zxid: 0xc00000044
    Mode: follower
    Node count: 653

    在節點輸出內容的 Mode 行中,您應該會看到 observerleaderfollower (表示不是領先選手的選民) 會因節點設定而異

  3. 在每個 ZooKeeper 節點上重複步驟 1 和 2。

摘要

如要在 ZooKeeper 整體上執行維護,最好的方法就是以 讓應用程式從可以最快做出回應的位置 回應使用者要求請注意:

  • 你必須在維護期間維護一組選民,才能確保 ZooKeeper 整體運作情形
  • 刪除觀察器節點不會影響仲裁,也不會影響選出領導者的能力。
  • 仲裁的計算依據為所有資料中心中的所有 ZooKeeper 節點。
  • 在前一個伺服器運作正常後,繼續維護下一個伺服器。
  • 使用 nc 指令檢查 ZooKeeper 節點。