全部產品
Search
文件中心

Elasticsearch:部署和使用跨可用性區域執行個體

更新時間:Nov 13, 2024

跨可用性區域部署可提升叢集的容災能力,系統會自動選擇庫存充足的可用性區域建立叢集。在索引配置了副本的情況下,當某一可用性區域出現故障時,剩餘的可用性區域依然可以不間斷地提供服務,顯著增強了叢集的可用性。同時,您可以通過控制台的切流操作,將出現故障的可用性區域隔離,這時系統會自動在剩餘的可用性區域中補充計算資源,滿足業務對資源的需求。本文介紹如何部署和使用(切流和恢複)跨可用性區域執行個體。

應用情境

跨可用性區域部署支援單可用性區域、跨2個可用性區域、跨3個可用性區域三種部署方式,各部署方式的適用情境如下:

  • 單可用性區域:普通部署模式,適用於非關鍵任務型的工作(預設)。

  • 跨2個可用性區域:跨可用性區域容災部署模式,適用於生產型的工作。

  • 跨3個可用性區域:高可用部署模式,適用於具有更高可用性要求的生產型的工作。

部署

部署操作

在購買Elasticsearch執行個體時,您可以選擇可用性區域數量。當選擇兩個或三個可用性區域時,系統將部署跨可用性區域的Elasticsearch執行個體。部署時,系統會自動設定對應個數的可用性區域,無需手動選擇。詳細資料,請參見建立Elasticsearch執行個體購買頁面參數

重要

如果選擇多可用性區域,您所選的以及控制台上顯示的是叢集流量入口所在的可用性區域(例如杭州可用性區域I)。實際部署時,系統會在所選規格機器庫存充足的可用性區域(例如杭州可用性區域H和杭州可用性區域J)部署執行個體。

注意事項

類別

注意事項

節點

  • 必須購買3個專有主節點。

  • 所選擇的資料節點、冷資料節點及協調節點個數必須為可用性區域個數的整數倍。有關可用性區域的詳細資料,請參見地區和可用性區域

  • 在購買跨2個可用性區域執行個體時,Elasticsearch採取如下部署方案:

    • 如果該地區存在至少3個可用性區域,且ECS庫存充足,專有主節點會被部署在3個可用性區域中。保證當任意一個可用性區域出現故障時,叢集依然可以選出主節點。

    • 如果當前地區僅有2個可用性區域,或者ECS庫存不充足時,專有主節點會被部署在2個可用性區域中。如果存在1個主節點的可用性區域出現故障,叢集依然可以選出主節點。如果存在2個主節點的可用性區域出現故障,需要在控制台上進行切流操作來恢複,在故障恢複前叢集將不支援寫操作,讀操作不受影響。

      說明

      重要的生產業務,不建議選擇僅存在1~2個可用性區域的地區。

索引複本

  • 對於跨兩個可用性區域的執行個體,當其中一個可用性區域為不可用時,剩下的可用性區域需要繼續提供服務,因此索引的副本個數至少為1。

    執行個體預設的副本分區數為1個,如果您對讀效能沒有特殊要求,可以直接使用預設值。

  • 對於跨三個可用性區域的執行個體,當其中一個可用性區域或兩個可用性區域不可用時,剩下的可用性區域需要繼續提供服務,因此索引的副本個數至少為2。

    由於執行個體預設的副本分區數為1個,因此需要修改索引模板調整預設的副本數。詳細資料,請參見索引模板。例如,使用索引模板設定副本數為2,範例程式碼如下。

    PUT _template/template_1
    {
      "template": "*",
      "settings": {
        "number_of_replicas": 2
      }
    }                                
說明

如果執行個體記憶體在0副本索引,使用切流和恢複功能可能存在資料丟失風險。請確認執行個體內索引已按照上述建議配置完畢,並在日常使用中做好營運排查。

配置說明

部署時,系統會自動為跨可用性區域執行個體配置與分區分配策略相關的叢集配置。詳細資料,請參見Shard allocation awareness。例如,跨可用性區域執行個體部署在可用性區域cn-hangzhou-f和cn-hangzhou-g,則叢集配置相關的參數說明如下。

參數

說明

樣本值

cluster.routing.allocation.awareness.attributes

重要

不要通過API修改此參數值,否則會引起異常。

用於告知Elasticsearch,使用哪些節點屬性設定分區的分配策略。跨可用性區域執行個體通過在節點的啟動參數中加入Enode.attr.zone_id,來標識節點的可用性區域(例如某個節點部署在cn-hangzhou-g可用性區域,則在該節點的啟動參數中加入-Enode.attr.zone_id=cn-hangzhou-g),因此該參數值固定為zone_id

zone_id

cluster.routing.allocation.awareness.force.zone_id.values

用於告知Elasticsearch,在跨可用性區域部署時,強制均分shard。假設索引中包含了1個主分區,3個副本分區,並且部署在cn-hangzhou-f和cn-hangzhou-g兩個可用性區域。按照分區分配策略,系統會在cn-hangzhou-f分配兩個分區,在cn-hangzhou-g分配兩個分區。如果指定了cluster.routing.allocation.awareness.force.zone_id.values參數,當cn-hangzhou-f不可用時,該可用性區域的兩個分區不會自動遷移到cn-hangzhou-g。

說明

該參數值支援修改,預設配置為不會自動遷移。

["cn-hangzhou-f", "cn-hangzhou-g"]

使用(切流與恢複)

跨可用性區域執行個體部署完成後,如果發現執行個體中某一可用性區域中的節點出現問題,可通過切流操作,將來自用戶端的流量只傳輸到剩餘的線上狀態的可用性區域中,並從叢集中隔離被切流可用性區域中的節點。當被切流的可用性區域恢複正常後,可通過恢複操作,將來自用戶端的流量傳輸到所有正常狀態的可用性區域中,並在叢集中重新加入被恢複的可用性區域中的節點。

重要

為了保證切流後叢集讀寫操作正常,切流前,需要確保叢集中的索引是有副本的。

  1. 登入Elasticsearch控制台
  2. 在左側導覽列,單擊Elasticsearch執行個體
  3. 進入目標執行個體。
    1. 在頂部功能表列處,選擇資源群組和地區。
    2. Elasticsearch執行個體中單擊目標執行個體ID。
  4. 基本資料頁面底部的節點可視化頁簽中,完成切流操作。

    1. 將滑鼠移動到需要切流的可用性區域上,單擊切流

      image

    2. 操作提示對話方塊中,單擊確認

      確認後叢集會重啟,重啟成功即可完成切流操作。 切流成功後,被切流的可用性區域狀態會從線上狀態變為下線狀態。

      說明
      • 切流時Elasticsearch會嘗試為其他線上狀態的可用性區域補充相應數量的專有主節點、協調節點、資料節點等,儘可能保證叢集內的計算資源。但受底層資產庫存、調度並發度限制等多種因素影響,資源補足能力暫時無法保證成功率。

      • 切流後計算資源減少,叢集可承受的最大負載也會相應減少。為減少故障對於叢集的影響,請在日常使用時做好叢集水位控制,並在故障期間及時配合業務限流等操作。

    如果切流前,索引是有副本的,而切流後叢集健康狀態為非正常(黃色)。那麼當確認完成切流後,您可以登入Kibana控制台,參考以下命令設定叢集參數,使得被切流可用性區域中的分區分配到剩餘的可用性區域中。分區分配完成後,叢集的健康狀態就會變為正常(綠色)。

    PUT /_cluster/settings
    {
        "persistent" : {
            "cluster.routing.allocation.awareness.force.zone_id.values" : {"0": null, "1": null, "2": null}
        }
    }
  5. 節點可視化頁簽中,恢複被切流的可用性區域中的節點。

    1. 將滑鼠移動到需要恢複的可用性區域上,單擊恢複

    2. 操作提示對話方塊中,單擊確認

      確認後,叢集會重啟,重啟成功後即可完成恢複操作。恢複成功後,被恢複的可用性區域狀態會從下線狀態變為線上狀態。

      說明

      恢複時,Elasticsearch會將切流操作中補充的專有主節點、協調節點、資料節點等移除。移除過程中,Elasticsearch會自動將被移除的資料節點中的資料移轉到其他資料節點中。