技術分享 | orchestrator--運維--配置叢集自動切換&測試

語言: CN / TW / HK

作者:姚嵩

地球人,愛好音樂,動漫,電影,遊戲,人文,美食,旅遊,還有其他。雖然都很菜,但畢竟是愛好。

本文來源:原創投稿

*愛可生開源社群出品,原創內容未經授權不得隨意使用,轉載請聯絡小編並註明來源。

引數說明:

https://github.com/openark/orchestrator/blob/master/go/config/config.go

⽬的:

⽤ orchestrator 配置 MySQL 叢集的⾃動切換。

已接管的資料庫例項(1主1從架構):

10.186.65.5:3307
10.186.65.11:3307

orchestrator 的相關引數:

"RecoveryIgnoreHostnameFilters": [], 
"RecoverMasterClusterFilters": ["*"], 
"RecoverIntermediateMasterClusterFilters":["*"], 
"ReplicationLagQuery": "show slave status"
"ApplyMySQLPromotionAfterMasterFailover": true, 
"FailMasterPromotionOnLagMinutes": 1,

部分測試場景(因為orch是⾼可⽤架構,所以以下實驗命令都是在raft-leader節點上執⾏)

案例1:

場景:

關閉 master,確認是否會切換(延遲 < FailMasterPromotionOnLagMinutes)

操作:

# 確認已有的叢集
  orchestrator-client -c clusters
# 檢視叢集拓撲,叢集為 10.186.65.11:3307
  orchestrator-client -c topology -i 10.186.65.11:3307 
# 關閉master節點 
  ssh [email protected] "service mysqld_3307 stop" 
# 再次確認已有的叢集,原叢集會拆分為2個叢集 
  orchestrator-client -c clusters 
# 檢視叢集拓撲,此時叢集為 10.186.65.5:3307 
  orchestrator-client -c topology -i 10.186.65.5:3307 

結論:

  1. 切換成功;

  2. 新的 master 節點 read_only 和 super_read_only 都關閉了,可以讀寫;

實驗截圖:

案例2

場景:

關閉 master ,確認是否會切換(延遲 > FailMasterPromotionOnLagMinutes)

FailMasterPromotionOnLagMinutes 配置的是1分鐘,也就是60s

操作:

# 檢視運⾏態的FailMasterPromotionOnLagMinutes引數值
  orchestrator -c dump-config --ignore-raft-setup | jq .FailMasterPromotionOnLagMinutes
# 確認已有的叢集
  orchestrator-client -c clusters
# 檢視叢集拓撲,叢集為 10.186.65.11:3307
  orchestrator-client -c topology -i 10.186.65.11:3307
# 建立延遲slave(假設此時Slave為10.186.65.5:3307)
  stop slave ;
  change master to master_delay=120;
  start slave ;
  或者
  orchestrator-client -c delay-replication -i 10.186.65.5:3307 -S 120
# 等待120s
  sleep 120
# 檢視叢集拓撲,叢集為 10.186.65.11:3307
  orchestrator-client -c topology -i 10.186.65.11:3307
# 關閉master節點 
  ssh [email protected] "service mysqld_3307 stop"
# 再次確認已有的叢集
  orchestrator-client -c clusters
# 檢視叢集拓撲,此時叢集仍然為 10.186.65.11:3307 
  orchestrator-client -c topology -i 10.186.65.11:3307

結論:

  1. 未切換;

  2. 當備節點延遲⼤於 FailMasterPromotionOnLagMinutes 時,不會發⽣切換。

實驗截圖:

案例3:

場景:

禁⽤全域性恢復的情況下,關閉master(延遲 < FailMasterPromotionOnLagMinutes)

操作:

# 關閉全域性恢復
  orchestrator-client -c disable-global-recoveries 
  orchestrator-client -c check-global-recoveries 
# 確認已有的叢集
  orchestrator-client -c clusters
# 檢視叢集拓撲,叢集為 10.186.65.11:3307
  orchestrator-client -c topology -i 10.186.65.11:3307
# 關閉master節點 
  ssh [email protected] "service mysqld_3307 stop"
# 再次確認已有的叢集
  orchestrator-client -c clusters
# 檢視叢集拓撲 
  orchestrator-client -c topology -i 10.186.65.11:3307

結論:

  1. 未切換;

  2. 當關閉了全域性恢復時,不會進⾏切換。

實驗截圖:

總結:

配置了 orchestrator 後,可以配置⾃動切換的 cluster 範圍,引數包含不限於:

RecoveryIgnoreHostnameFilters

RecoverMasterClusterFilters

RecoverIntermediateMasterClusterFilters

可以配置收否切換的條件,引數包含不限於:

FailMasterPromotionOnLagMinutes

ReplicationLagQuery

當延遲超過 FailMasterPromotionOnLagMinutes 分鐘時,切換失敗,當禁⽤了全域性恢復時,不會進⾏⾃動切換。

宣告:

測試場景很多,但測試時間有限,如有具體場景需求,再具體測試。

如測試結果有出⼊,歡迎探討。

另可能存在各種因素阻⽌切換,不在此⽂章討論範圍內。

相關文章:

技術分享 | orchetrator--安裝一個高可用 orchestrator

社群近期動態

本文關鍵字:#高可用# # orch # # orchestrato r #

  點一下“閱讀原文”瞭解更多資訊