iT邦幫忙

第 12 屆 iT 邦幫忙鐵人賽

DAY 27
0
Elastic Stack on Cloud

前端三分鐘 X Elastic Stack系列 第 27

Elastic Cloud Enterprise High Availability: 配置高可用性的系統架構 (27)

這篇文章會示範如何透過 Elastic Cloud Enterprise 配置高可用性的系統架構,透過架構設計來消除單點故障的影響來提升網站的可靠性。

High Availability

ECE 的高可用性主要是透過可用區域 (availability zones) 來做到容錯與高可用性的,可用區域可以是任何雲端或是實體機台,每個區域皆由一或多個配備獨立電力、冷卻系統及網路的資料中心所組成,且不被其他區域的狀況影響,像是如果地震導致台北區停機,東京區系統應該還是要維持正常。

ECE 配置可用區域

安裝時透過 --availability-zone 這個指令來加入可用區域,安裝步驟如下:

安裝第一台,跟之前一樣安裝完之後會有帳號、密碼還有 token 相關訊息,記得存好,指定 --availability-zone myzone1

bash <(curl -fsSL https://download.elastic.co/cloud/elastic-cloud-enterprise.sh) install --cloud-enterprise-version 2.1.1 --availability-zone myzone1

安裝第一台成功的訊息
https://ithelp.ithome.com.tw/upload/images/20200929/2013002654d52zfABL.jpg

安裝第一台成功
https://ithelp.ithome.com.tw/upload/images/20200929/201300265J8wgxGhGh.jpg

安裝第二台,會用到剛剛安裝成功得到的 token,剛剛存下來的訊息也有提醒我們要記得去設定角色,指定 --availability-zone myzone2,安裝完成後透過 GUI 設定相關的 role。

bash <(curl -fsSL https://download.elastic.co/cloud/elastic-cloud-enterprise.sh) install --cloud-enterprise-version 2.1.1 --availability-zone myzone2 --roles allocator --coordinator-host <IP> --roles-token <TOKEN>

安裝第二台成功
https://ithelp.ithome.com.tw/upload/images/20200929/201300265JChmj68Dt.jpg

透過 Cloud UI Runners 去幫新的 Runner 配置角色
https://ithelp.ithome.com.tw/upload/images/20200929/20130026M3mS0mjjz1.jpg

直接全部勾選
https://ithelp.ithome.com.tw/upload/images/20200929/20130026JhM4L4wN53.jpg

安裝第三台,如果想先指定相關的 role,可以透過指令在第一台先產生特定 token: curl -k -H 'Content-Type: application/json' -u admin:<PASSWORD> https://localhost:12443/api/v1/platform/configuration/security/enrollment-tokens -d '{ "persistent": false, "roles": ["allocator", "coordinator", "director", "proxy"] }'

用剛剛產生的 token 安裝第三台: bash <(curl -fsSL https://download.elastic.co/cloud/elastic-cloud-enterprise.sh) install --cloud-enterprise-version 2.1.1 --availability-zone myzone3 --roles "allocator,coordinator,director,proxy" --coordinator-host <IP> --roles-token <TOKEN>

產生成功
https://ithelp.ithome.com.tw/upload/images/20200929/20130026freNPaEnEy.jpg

建立一個 Depeloyments

配置完可用區域後,就可以建立一個 Depeloyments,選擇 2 zones 測試。

建立一個 Depeloyments
https://ithelp.ithome.com.tw/upload/images/20200929/20130026CqRa4vkfUJ.jpg

建立成功後會發現另外一個 zone 多出一個 Tiebreakers、Master-eligible 的標籤,所以可以看出 Production 環境最少就是需要三個可用區域,選了 2 zones 的時候會自動把第三個設定成 tiebreaker,決勝局 (Tiebreakers) 的機制在 ECE 中是用來避免分散式架構中的 split brain,腦裂 (split brain) 是指在 HA 的系統架構中,兩個節點的溝通中斷時,本來對外是一個整體的節點分裂成兩個,並且開始搶奪共享的資源,導致系統產生錯誤或是效能下降。

一個整體的節點通常只會有一個 Master Node 主導,其他節點配合,所以需要透過配置 (n/2) + 1 以上的節點來確保法定票數 (quorum) 還有一個第三方仲裁者 (Tiebreakers),當 Master Node 故障出現分裂問題時,就可以透過投票的機制選出新的 Master Node 去取代,Master node 主要是負責新增建立索引、確認節點歸屬的 cluster、決定部屬新節點的位置,Master-eligible 標籤則代表不只有投票功能,也有可能會變成新的 master node。

決勝局 (Tiebreakers)
https://ithelp.ithome.com.tw/upload/images/20200929/20130026VF4p4Rehyi.jpg

結論與建議

安裝教學文件

官方的相關建議

  • 每個可用區域中至少要有一個 Runner 有 director、coordinator roles
  • 每個可用區域中,可以有多個 Runners,確認各區域加起來有足夠的 allocator role 即可
  • 如果 clusters 夠多,可以讓 Master Nodes 不需要去處理檢索或是儲存建立索引的工作
  • 一台實體機只能容納一個可用區域,避免一台時體機壞了就讓系統停機
  • 狀況允許的話,特殊角色可以分別設置在獨立的 Runners,減少未來擴充時的問題
  • 至少每個可用區域都要有一個甚至多個 Runners 要有 Proxy Role

上一篇
Elastic Cloud Enterprise Platforms: 平台管理與設定 (26)
下一篇
Elastic Cloud Enterprise Deployment Templates: 建立部屬樣板 (28)
系列文
前端三分鐘 X Elastic Stack31

尚未有邦友留言

立即登入留言