寫(xiě)入高可用是阿里云Elasticsearch團(tuán)隊(duì)為提升集群寫(xiě)入穩(wěn)定性而引入的新特性。即通過(guò)異步寫(xiě)入高可用架構(gòu)實(shí)現(xiàn)讀寫(xiě)分離,以保證在高并發(fā)寫(xiě)入情況下集群的穩(wěn)定性。同時(shí)寫(xiě)入高可用特性還加入了服務(wù)代理和消息隊(duì)列等組件。本文介紹寫(xiě)入高可用特性的原理和使用方法。

背景信息

寫(xiě)入高可用特性具有如下功能:
  • 數(shù)據(jù)高可用:當(dāng)集群宕機(jī)時(shí),數(shù)據(jù)也能正常寫(xiě)入消息隊(duì)列中,待集群恢復(fù)后回追數(shù)據(jù)來(lái)保證數(shù)據(jù)不丟失。
  • 數(shù)據(jù)緩沖:當(dāng)數(shù)據(jù)流量峰值到來(lái)時(shí),數(shù)據(jù)會(huì)寫(xiě)入消息隊(duì)列中緩沖,避免大流量將集群壓垮;數(shù)據(jù)緩沖后將進(jìn)行批量發(fā)送,避免小批次數(shù)據(jù)頻繁寫(xiě)入集群,從而提升了CPU使用率和寫(xiě)入性能。
  • 數(shù)據(jù)回放:當(dāng)集群丟失部分?jǐn)?shù)據(jù)時(shí),可通過(guò)數(shù)據(jù)回放恢復(fù)丟失的數(shù)據(jù)。
  • 流量控制:限制數(shù)據(jù)流量,避免在異常情況下,過(guò)大的流量導(dǎo)致集群服務(wù)不可用。

前提條件

創(chuàng)建阿里云Elasticsearch實(shí)例,具體操作請(qǐng)參見(jiàn)創(chuàng)建阿里云Elasticsearch實(shí)例。創(chuàng)建的實(shí)例需同時(shí)滿足以下條件:
  • 版本為6.7.0
  • 數(shù)據(jù)節(jié)點(diǎn)規(guī)格不低于2核4 GB

使用限制

寫(xiě)入高可用特性僅支持2021年11月之前在華北2(北京)、華東2(上海)、華東1(杭州)和華南1(深圳)地域創(chuàng)建的實(shí)例,不符合要求的實(shí)例建議使用Indexing Service特性,詳細(xì)信息請(qǐng)參見(jiàn)基于Indexing Service實(shí)現(xiàn)數(shù)據(jù)流管理

異步寫(xiě)入和同步寫(xiě)入模式

  • 異步寫(xiě)入模式
    開(kāi)啟寫(xiě)入高可用的集群,采用異步寫(xiě)入模式。客戶端請(qǐng)求經(jīng)過(guò)代理層分發(fā),將查詢請(qǐng)求直接轉(zhuǎn)發(fā)給Elasticsearch,獲取查詢結(jié)果返回;寫(xiě)入請(qǐng)求將經(jīng)過(guò)異步數(shù)據(jù)處理組件(包含消息隊(duì)列),再將數(shù)據(jù)實(shí)時(shí)寫(xiě)入Elasticsearch,來(lái)提高Elasticsearch的寫(xiě)入性能及穩(wěn)定性。寫(xiě)入高可用異步模式
  • 同步寫(xiě)入模式
    未開(kāi)啟寫(xiě)入高可用的集群,默認(rèn)采用同步寫(xiě)入模式。即查詢和寫(xiě)入請(qǐng)求均直接由代理服務(wù)轉(zhuǎn)發(fā)給Elasticsearch。當(dāng)異步寫(xiě)入模式發(fā)生錯(cuò)誤時(shí),阿里云Elasticsearch支持臨時(shí)將異步模式轉(zhuǎn)換為同步模式,轉(zhuǎn)換后,寫(xiě)入請(qǐng)求將直接由代理服務(wù)轉(zhuǎn)發(fā)給Elasticsearch,而不會(huì)存儲(chǔ)到消息隊(duì)列中,以確保數(shù)據(jù)寫(xiě)入快速恢復(fù)。寫(xiě)入高可用同步模式

開(kāi)啟寫(xiě)入高可用

  1. 登錄阿里云Elasticsearch控制臺(tái)
  2. 在左側(cè)導(dǎo)航欄,單擊Elasticsearch實(shí)例
  3. 進(jìn)入目標(biāo)實(shí)例。
    1. 在頂部菜單欄處,選擇資源組和地域。
    2. 在左側(cè)導(dǎo)航欄,單擊Elasticsearch實(shí)例,然后在Elasticsearch實(shí)例中單擊目標(biāo)實(shí)例ID。
  4. 基本信息頁(yè)面的寫(xiě)入高可用區(qū)域,單擊立即開(kāi)啟
  5. 寫(xiě)入高可用頁(yè)面,單擊開(kāi)啟,以開(kāi)啟寫(xiě)入高可用。
    開(kāi)啟寫(xiě)入高可用

    無(wú)主鍵時(shí),自動(dòng)生成文檔哈希值主鍵:當(dāng)您對(duì)數(shù)據(jù)的順序有較高要求時(shí),可以勾選該選項(xiàng)。它將根據(jù)文檔內(nèi)容,為無(wú)主鍵數(shù)據(jù)自動(dòng)生成哈希值主鍵,內(nèi)容完全相同的文檔在寫(xiě)入Elasticsearch時(shí)將被覆蓋,從而避免數(shù)據(jù)被重復(fù)寫(xiě)入。

    說(shuō)明 開(kāi)啟或關(guān)閉寫(xiě)入高可用特性,均為集群架構(gòu)的平滑變更,一般不會(huì)影響阿里云Elasticsearch集群的正常訪問(wèn),但是建議在業(yè)務(wù)低峰期進(jìn)行。
  6. 單擊確認(rèn)

查看異步寫(xiě)入日志

開(kāi)啟寫(xiě)入高可用后,您可以在寫(xiě)入高可用區(qū)域,單擊查看異步寫(xiě)入日志,查看寫(xiě)入高可用特性在異步模式下生成的日志。

查看異步寫(xiě)入日志

臨時(shí)開(kāi)啟同步寫(xiě)入

當(dāng)異步模式發(fā)生錯(cuò)誤時(shí),您可以在寫(xiě)入高可用區(qū)域,打開(kāi)臨時(shí)開(kāi)啟同步寫(xiě)入開(kāi)關(guān),將異步模式臨時(shí)轉(zhuǎn)換為同步模式,快速恢復(fù)數(shù)據(jù)寫(xiě)入。臨時(shí)開(kāi)啟同步寫(xiě)入

當(dāng)異步模式恢復(fù)正常后,您可以關(guān)閉臨時(shí)開(kāi)啟同步寫(xiě)入開(kāi)關(guān),快速恢復(fù)異步寫(xiě)入模式。

關(guān)閉寫(xiě)入高可用

注意 建議在業(yè)務(wù)低峰期關(guān)閉寫(xiě)入高可用。因?yàn)楫?dāng)集群中存在數(shù)據(jù)頻繁更新的場(chǎng)景時(shí),可能會(huì)發(fā)生數(shù)據(jù)亂序問(wèn)題(概率較小)。
  1. 寫(xiě)入高可用區(qū)域,單擊寫(xiě)入高可用右側(cè)的設(shè)置
  2. 寫(xiě)入高可用頁(yè)面,單擊關(guān)閉,以關(guān)閉寫(xiě)入高可用。
    關(guān)閉寫(xiě)入高可用
  3. 單擊確認(rèn)