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基础和安装_数据库

完成后,MySQL的拓扑显示如下:orchestrator基础和安装_mysql_02

  --The end!