orchestrator是一款开源对MySQL复制提供高可用、拓扑的可视化管理工具,采用go语言编写,它能够主动发现当前拓扑结构和主从复制状态,支持MySQL主从复制拓扑关系的调整、支持MySQL主库故障自动切换(failover)、手动主从切换(switchover)等功能。
orchestrator后台依赖于MySQL存储元数据,能够提供Web界面展示MySQL集群的拓扑关系及实例状态,可以通过Web界面可更改MySQL实例的部分配置信息,同时也提供命令行和api接口,以便更加灵活的自动化运维管理。
Orchestrator 对MySQL主库的故障切换分为自动切换和手动切换。手动切换又分为recover、force-master-failover、force-master-takeover以及graceful-master-takeover.
相比于MHA,Orchestrator更加偏重于复制拓扑关系的管理,能够实现MySQL任一复制拓扑关系的调整,并在此基础上,实现MySQL高可用。
Orchestrator本身也可以部署多个节点,通过raft分布式一致性协议,保证其自身高可用性。
Orchestrator特性如下:
1、发现(discover)
orchestrator主动搜寻MySQL拓扑并进行映射。它能读取基本的MySQL信息,例如复制状态和配置。即使遇到故障,也可以为MySQL环境的拓扑提供流畅的可视化效果,包括复制问题。
2、重构(Refactoring)
orchestrator了解复制规则。它知道binlog文件:位置,GTID,伪GTID,Binlog服务器。
重构复制拓扑可以是将副本拖放到另一个主副本下的问题。移动副本是安全的:orchestrator将拒绝非法的重构尝试。通过各种命令行选项可以实现细粒度的控制。
3、恢复(recover)
orchestrator使用全面方法来检测主库故障和级联中间主库的故障。根据从拓扑本身获得的信息,它可以识别各种故障情况。
可通过配置,orchestrator可以选择执行自动恢复(或允许用户选择手动恢复的类型)。在内部实现中间主库的恢复。orchestrator通过Hooks进行自定义脚本支持故障切换。
我们先来安装Orchestraor体验一把。
1、部署MySQL复制环境
OS:Redhat 6.4
数据库版本为:MySQL 5.7.27
10.104.0.12 mydb01 master
10.104.0.13 mydb02 slave
10.104.0.14 mydb03 slave
2、安装orchestrator
(1)安装相关依赖包
rpm -ivh libonig2-5.9.2-4.1.x86_64.rpm libjq1-1.5-11.3.x86_64.rpm jq-1.5-7.1.x86_64.rpm
(2)安装软件
rpm -ivh orchestrator-3.1.2-1.x86_64.rpm
rpm -ivh orchestrator-cli-3.1.2-1.x86_64.rpm
[root@mydb01 orchestrator]# rpm -qa|grep orch
orchestrator-3.1.2-1.x86_64
orchestrator-cli-3.1.2-1.x86_64
检查
[root@mydb01 orchestrator]# which orchestrator
/usr/bin/orchestrator
(3)升级glibc到2.14以上版本
wget http://rpm.pbone.net/index.php3/stat/4/idpl/23589702/dir/redhat_el_6/com/glibc-2.28-7.2.x86_64.rpm
wget http://ftp.gnu.org/gnu/glibc/glibc-2.18.tar.gz
tar -xvf glibc-2.18.tar.gz
cd glibc-2.18
mkdir build && cd build && ../configure --prefix=/usr && make -j4 && make install
3、配置orchestrator后台数据库:
10.103.0.12 3307实例
CREATE DATABASE IF NOT EXISTS orchestrator;
GRANT ALL PRIVILEGES ON `orchestrator`.* TO 'orches'@'%' IDENTIFIED BY 'orches';
4、配置
cp /usr/local/orchestrator/orchestrator-sample.conf.json /etc/orchestrator/orchestrator.conf.json
修改并配置如下参数:
"MySQLTopologyUser": "orchcli", --拓扑管理用户
"MySQLTopologyPassword": "orchcli", --拓扑管理用户的密码
"MySQLOrchestratorHost": "127.0.0.1", --后台数据库地址
"MySQLOrchestratorPort": 3307, --后台数据库端口
"MySQLOrchestratorDatabase": "orchestrator", --后台数据库名称
"MySQLOrchestratorUser": "orches", --后台数据库访问用户
"MySQLOrchestratorPassword": "orches", --后台数据库访问用户密码
"MySQLConnectTimeoutSeconds": 1, --Orchestrator连接MySQL的超时时间,默认为2秒。
"InstancePollSeconds": 3, --Orchestrator连接实例的间隔秒数,默认5秒
"MySQLTopologyReadTimeoutSeconds": 3, --MySQL拓扑结构读超时时间,指发现之外的超时
"MySQLDiscoveryReadTimeoutSeconds": 3, --MySQL拓扑结构发现超时时间
"RecoveryPeriodBlockSeconds": 3600, --在该时间内再次出现故障,不会进行切换,避免出现并发恢复和不稳定。默认3600
"RecoverMasterClusterFilters": ["*"], --
"RecoverIntermediateMasterClusterFilters": ["*"],
这两项是定义自动近期故障切换的指标。
PreFailoverProcesses:定义failover前orchestrator做什么操作
PostFailoverProcesses:定义failover后orchestrator做什么操作
4、启动orchestrator
cd /usr/local/orchestrator && ./orchestrator http &
5、启动打开web访问orchestrator
可以自动发现,也可以手动发现:
点击Clusters--discover
完成后,MySQL的拓扑显示如下:
--The end!