一文學會如何部署MySQL復制拓撲管理工具:Orchestrator
今天主要介紹一下如何部署MySQL復制拓撲管理工具--Orchestrator。
一、MySQL復制拓撲管理工具Orchestrator
1. 簡介
Orchestrator是一款開源的MySQL復制拓撲管理工具,采用go語言編寫,支持MySQL主從復制拓撲關(guān)系的調(diào)整、支持MySQL主庫故障自動切換、手動主從切換等功能。
Orchestrator后臺依賴于MySQL或者SQLite存儲元數(shù)據(jù),能夠提供Web界面展示MySQL集群的拓撲關(guān)系及實例狀態(tài),通過Web界面可更改MySQL實例的部分配置信息,同時也提供命令行和api接口,以便更加靈活的自動化運維管理。
相比于MHA,Orchestrator更加偏重于復制拓撲關(guān)系的管理,能夠?qū)崿F(xiàn)MySQL任一復制拓撲關(guān)系的調(diào)整,并在此基礎(chǔ)上,實現(xiàn)MySQL高可用,另外Orchestrator自身可以部署多個節(jié)點,通過raft分布式一致性協(xié)議,保證自身的高可用。
2. 特征
Orchestrato主要有以下幾個特征:
- 自動監(jiān)測數(shù)據(jù)庫復制的結(jié)構(gòu)及其狀態(tài)
- 提供了GUI,CLI,API等接口來檢查復制拓撲的狀態(tài)以及做一些調(diào)整的操作
- 支持自動的master failover,當復制結(jié)構(gòu)的server掛掉以后(不管手動還是自動的),能夠重新形成復制的拓撲結(jié)構(gòu)
- 不依賴于特定的server版本或分支(MySQL, Percona Server, MariaDB or even MaxScale binlog servers)
- 支持多種類型的拓撲結(jié)構(gòu),不管是單個的主從還是成百上千個server組成的多級復制都不在話下
- 他的GUI不只是做向你report拓撲狀態(tài)而已,你可以在Orchestrator web頁面通過拖拽或者刪除節(jié)點來改變復制拓撲(CLI和API也能做)
3. 體系結(jié)構(gòu)
以下圖表說明了每個 Orchestrator 功能以及相互之間的通信。
Orchestration 數(shù)據(jù)庫是 Orchestrator 安裝的中心,其中包含所有 Runbook、配置設(shè)置和日志。 系統(tǒng)需要以 Management 服務器作為 Runbook Designer 與 Orchestration 數(shù)據(jù)庫之間的通信層。 一個或多個 Runbook 服務器直接與此數(shù)據(jù)庫通信,以檢索要運行的 Runbook 以及存儲關(guān)于從 Runbook 中創(chuàng)建的作業(yè)的信息。 Web 服務也直接與 Orchestration 數(shù)據(jù)庫通信,并為 Orchestration 控制臺提供 Web 瀏覽器連接。
二、環(huán)境準備
1. IP規(guī)劃
2. 設(shè)置hostname解析
三、安裝部署Orchestrator
源碼地址:https://github.com/github/orchestrator.git
1. 下載
2. rpm安裝
安裝完成后,目錄在/usr/local/orchestrator
3. 修改my.cnf
MySQL配置文件加一個report_host參數(shù),report_host為只讀參數(shù),必須重啟才可生效
說明:不加report_host ,show slave hosts 不會顯示host,會導致程序報錯的
4. 創(chuàng)建數(shù)據(jù)庫及用戶
(1) 拓撲庫操作:
- CREATE DATABASE IF NOT EXISTS orchestrator;
- GRANT ALL PRIVILEGES ON `orchestrator`.* TO 'orche'@'%' IDENTIFIED BY 'xxxxx';
(2) 主從庫操作:
如果是主從復制,主從分別操作
5. 修改orchestrator配置文件
- # cd /usr/local/orchestrator/
- # cp orchestrator-sample.conf.json orchestrator.conf.json
- # vim orchestrator.conf.json
- =========================================================
- {
- "Debug": true,
- "EnableSyslog": false,
- "ListenAddress": ":3000", #http開放端口
- "MySQLTopologyUser": "orche", #mysql管理賬號,所有被管理的MySQL集群都需要有該賬號
- "MySQLTopologyPassword": "xx", #mysql管理賬號密碼
- "MySQLTopologyCredentialsConfigFile": "",
- "MySQLTopologySSLPrivateKeyFile": "",
- "MySQLTopologySSLCertFile": "",
- "MySQLTopologySSLCAFile": "",
- "MySQLTopologySSLSkipVerify": true,
- "MySQLTopologyUseMutualTLS": false,
- "MySQLOrchestratorHost": "xx", #后臺mysql數(shù)據(jù)庫地址,orchestrator依賴MySQL或者SQLite存儲管理數(shù)據(jù)
- "MySQLOrchestratorPort": 3306, #后臺mysql數(shù)據(jù)庫端口
- "MySQLOrchestratorDatabase": "orchestrator", #后臺mysql數(shù)據(jù)庫名
- "MySQLOrchestratorUser": "orche", #后臺mysql數(shù)據(jù)庫賬號
- "MySQLOrchestratorPassword": "xx", #后臺mysql數(shù)據(jù)庫密碼
- .................
- ]
- =========================================================
注意:MySQLTopologyUser 這個配置項為被管理的MySQL集群的admin賬號,該賬號需要有super,process,reload,select,replicatiopn slave,replicatiopn client 權(quán)限。
6. 啟動orchestrator
7. 發(fā)現(xiàn)實例
8. 訪問
Web頁面:http://172.26.151.69:3000
到這里就完成orchestrator的搭建工作了。