Arksentinel简介
https://github.com/arkcontrol/arkcontrol
Arksentinel 是极数云舟科技有限公司开发的分布式哨兵,通过读取配置信息,获取当前运行实例的信息,并且每个哨兵针对每个实例都会创建对应的监控线程, 如果发现实例出现故障,则从配置库中获取备份实例信息,并进行切换,并根据用户设置调用对应脚本进行订制化操作。架构如下:
其中被监控集群可以为:
- 开启GTID的主从架构
- Galera Cluster
- 多主模式的MGR
- Arkproxy
- Arkgate
- Arketl
哨兵功能特点包括以下几点:
- 主备切换
- 数据一致的情况下,配置表中address_num越近,替换优先级越高
- 备节点切换
- 配置表中address_num越近,替换优先级越高
- 实例状态检测
- 哨兵集群自身高可用
- 跨机房检测,避免因为网络隔离导致误操作
- 配合Arkproxy可以做到跨机房高可用
failover切换时间说明
当前文档部署环境说明
Arksentinel部署启动
1.获取Arksentinel可执行文件
- 联系极数云舟获取执行文件(qiangchangjin@cloud-ark.com)
- 公司内部访问 https://git.cloud-ark.com/arkzone/ark-sentinel/tree/dev, target目录即为配置文件和可执行文件,详见路径下的readme.txt
- 获取文件列表
Arkcontrol 平台包: arkcontrol-v1.5.4-beta-community-linux-x86_64.tar.gz (也可能是其他版本)
Arkcontrol 体验版操作手册.pdf
Arksentinel 哨兵软件包: arksentinel.tar.gz
Arksentinel使用说明.pdf
2. 初始化配置库
- 如果基于Arkcontrol平台
根据Arkcontrol 体验版操作手册.pdf搭建好Arkcontrol平台就会自动初始化ark_sentinel及相关表,但是仍需手动配置sentinel_config表(数据格式如下)
# raft_nodes 为哨兵集群信息,根据实际情况配置ip,port等信息,哨兵集群至少3个节点
raft_config.raft_nodes.machine_type 字段用于区分私有或云机器
failover_timeout.failover_timeout 设置failover超时时间,切换超时后会重新发起选举,进行切换操作
# config_cluster 为Arkcontrol配置库信息, 根据情况配置账号信息
哨兵会逐个尝试连接每个实例,如果全部无法连接,则哨兵停止工作
# notifier_config 为配置报警设置,为'{}'时,哨兵不发送报警信息
# odown_timeout在这个时间内只要有一个哨兵认为实例没有挂掉就不会进行failover操作,超过这个时间只要超过半数哨兵任务实例挂掉就进行failover操作
# ping_interval哨兵检测实例心跳间隔,超过5次心跳没有响应,则该哨兵认为实例挂掉
# arksentinel_user,arksentinel_password 为哨兵连接要监控实例使用的账号信息,注意搭建的集群要对这个账号授权
# replication_user,replication_password 为哨兵切换时重新上实例切换master时用的复制或同步账号
# switchover_script,failover_script 分别表示发生switchover,failover时调用的脚本,为空时不调用
mysql> select * from sentinel_configG;
*************************** 1. row ***************************
id: 1
raft_config: {"raft_nodes": [{"ip": "10.0.0.111