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
orchestrator基础和安装_web界面
完成后,MySQL的拓扑显示如下:orchestrator基础和安装_mysql_02

  --The end!