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