跨可用區部署可提升集群的容災能力,系統會自動選擇庫存充足的可用區創建集群。在索引配置了副本的情況下,當某一可用區出現故障時,剩余的可用區依然可以不間斷地提供服務,顯著增強了集群的可用性。同時,您可以通過控制臺的切流操作,將出現故障的可用區隔離,這時系統會自動在剩余的可用區中補充計算資源,滿足業務對資源的需求。本文介紹如何部署和使用(切流和恢復)跨可用區實例。
應用場景
跨可用區部署支持單可用區、跨2個可用區、跨3個可用區三種部署方式,各部署方式的適用場景如下:
單可用區:普通部署模式,適用于非關鍵任務型的工作(默認)。
跨2個可用區:跨可用區容災部署模式,適用于生產型的工作。
跨3個可用區:高可用部署模式,適用于具有更高可用性要求的生產型的工作。
部署
部署操作
在購買阿里云Elasticsearch實例時,您可以選擇可用區數量。當選擇兩個或三個可用區時,系統將部署跨可用區的Elasticsearch實例。部署時,系統會自動配置對應個數的可用區,無需手動選擇。詳細信息,請參見創建阿里云Elasticsearch實例和ES實例節點配置說明。
如果選擇多可用區,您所選的以及控制臺上顯示的是集群流量入口所在的可用區(例如杭州可用區I)。實際部署時,系統會在所選規格機器庫存充足的可用區(例如杭州可用區H和杭州可用區J)部署實例。
注意事項
類別 | 注意事項 |
節點 |
|
索引副本 |
說明 如果實例內存在0副本索引,使用切流和恢復功能可能存在數據丟失風險。請確認實例內索引已按照上述建議配置完畢,并在日常使用中做好運維排查。 |
配置說明
部署時,系統會自動為跨可用區實例配置與分片分配策略相關的集群配置。詳細信息,請參見Shard allocation awareness。例如,跨可用區實例部署在可用區cn-hangzhou-f和cn-hangzhou-g,則集群配置相關的參數說明如下。
參數 | 說明 | 示例值 |
cluster.routing.allocation.awareness.attributes | 重要 不要通過API修改此參數值,否則會引起異常。 用于告知Elasticsearch,使用哪些節點屬性設置分片的分配策略。跨可用區實例通過在節點的啟動參數中加入Enode.attr.zone_id,來標識節點的可用區(例如某個節點部署在cn-hangzhou-g可用區,則在該節點的啟動參數中加入 | 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"] |
使用(切流與恢復)
跨可用區實例部署完成后,如果發現實例中某一可用區中的節點出現問題,可通過切流操作,將來自客戶端的流量只傳輸到剩余的在線狀態的可用區中,并從集群中隔離被切流可用區中的節點。當被切流的可用區恢復正常后,可通過恢復操作,將來自客戶端的流量傳輸到所有正常狀態的可用區中,并在集群中重新加入被恢復的可用區中的節點。
為了保證切流后集群讀寫操作正常,切流前,需要確保集群中的索引是有副本的。
- 登錄阿里云Elasticsearch控制臺。
- 在左側導航欄,單擊Elasticsearch實例。
- 進入目標實例。
- 在頂部菜單欄處,選擇資源組和地域。
- 在Elasticsearch實例中單擊目標實例ID。
在基本信息頁面底部的節點可視化頁簽中,完成切流操作。
將鼠標移動到需要切流的可用區上,單擊切流。
在操作提示對話框中,單擊確認。
確認后集群會重啟,重啟成功即可完成切流操作。 切流成功后,被切流的可用區狀態會從在線狀態變為下線狀態。
說明切流時阿里云Elasticsearch會嘗試為其他在線狀態的可用區補充相應數量的專有主節點、協調節點、數據節點等,盡可能保證集群內的計算資源。但受底層資源庫存、調度并發度限制等多種因素影響,資源補足能力暫時無法保證成功率。
切流后計算資源減少,集群可承受的最大負載也會相應減少。為減少故障對于集群的影響,請在日常使用時做好集群水位控制,并在故障期間及時配合業務限流等操作。
如果切流前,索引是有副本的,而切流后集群健康狀態為非正常(黃色)。那么當確認完成切流后,您可以登錄Kibana控制臺,參考以下命令設置集群參數,使得被切流可用區中的分片分配到剩余的可用區中。分片分配完成后,集群的健康狀態就會變為正常(綠色)。
PUT /_cluster/settings { "persistent" : { "cluster.routing.allocation.awareness.force.zone_id.values" : {"0": null, "1": null, "2": null} } }
在節點可視化頁簽中,恢復被切流的可用區中的節點。
將鼠標移動到需要恢復的可用區上,單擊恢復。
在操作提示對話框中,單擊確認。