1. 概念
1.1 版本
FineReport 版本 |
---|
11.0 |
1.2 问题描述
主从模式最大的缺点就是当主节点宕机后,从节点无法自动上升为主节点对外提供服务,Redis 2.8 及以后版本提供了哨兵工具来实现自动化的系统监控和故障恢复功能,此方案在企业中也是常被采用的一种主流方案。
1.3 解决思路
FineReport 提供了哨兵模式来实现主从可以切换,故障可以转移,提高系统可用性。
Redis 的 Sentinel 系统用于管理多个 Redis 服务器(instance), 哨兵主要起以下作用:
1)通过发送命令,让Redis服务器返回监控其运行状态,包括主服务器和从服务器。
2)当哨兵监测到 master 宕机,会自动将 slave 切换成 master ,然后通过发布订阅模式通知其他的从服务器,修改配置文件,让它们切换主机。
注:哨兵模式中至少要部署两个以上的 Sentinel 。
哨兵模式如下图所示:
2. 操作步骤
本例以一主二从三哨兵结构为例。
2.1 环境准备
1)确保端口开放(或关闭防火墙)、网络通畅。
2)安装 Redis 时需对源码包编译,此步骤依赖 gcc 编译器,如果没有 gcc 环境,则需要自行安装,联网安装命令 yum install gcc gcc-c++
gcc -v #检查是否有 gcc 编译器
2.2 安装 Redis
2.2.1 下载源码包
可以选择官网下载,请参见:Redis 源码包 ,推荐的 Redis 4.0 之后的版本。
2.2.2 安装 Redis
命令如下所示:
mkdir /usr/redis # 创建 Redis 目录
cd /usr/redis # 进入目录
# 将 Redis 安装包传输到该目录下 #
tar -zxvf redis-3.2.11.tar.gz # 解压安装包
cd /usr/redis/redis-3.2.11 # 进入解压目录
make
make test
make install # 安装命令
redis-server -v # 检查安装结果
注:更多运维操作详情参见:Linux 系统 Redis 运维手册
2.3 开启主从三个节点
2.3.1 开启命令
命令如下所示:
#cd /path/to/redis
cd /usr/fine/redis-3.2.11/
#/path/to/redis-server /path/to/redis.conf
./src/redis-server redis.conf
2.3.2 redis.conf 文件解释
注:相关密码本文示例设置的较简单,用户实际操作时请修改为更安全的密码。
详情请参见:redis.zip
1)主节点 redis.conf 具体配置为:从节点配置仅比主节点配置多一行 slaveof {ip} {port} ,本例中为 slaveof 192.168.9.128 6379 。
2)第 84 行为端口,如下图所示:
3)第 265 行为 slaveof <masterip> <masterport>,此属性只有从节点需要添加,也是主节点和从节点配置的唯一区别。
4)第 274 行为主节点密码(主节点也需要配置,因为他也有可能变为从节点)。
5)第 484 行为自身密码(需要注意的是主从节点的密码需要一样)。
6)第 542 行为内存配置。
2.3.3 查看进程
三个 Redis 进程开启后,用 redis-cli 查看进程信息(查看 info 下的 Replication 信息),命令如下所示:
./src/redis-cli -h 192.168.9.128 -p 6379 -a admin123456 info quit
2.4 开启主从三个哨兵
2.4.1 开启命令
命令如下所示:
#cd /path/to/redis
cd /usr/fine/redis-3.2.11/
#/path/to/redis-sentinel /path/to/sentinel.conf
./src/redis-sentinel sentinel.conf
2.4.2 sentinel.conf 文件解释
1)第 21 行为端口。
2)第 69 行配置被监控的主节点。
3)第 92 行为主节点的密码。
2.3.3 查看进程
三个 Redis Sentinel 进程开启后,可是用 redis-cli 查看相关信息,如下所示:
./src/redis-cli -h 192.168.9.130 -p 26379
PING
SENTINEL masters
SENTINEL slaves mymaster
SENTINEL get-master-addr-by-name mymaster
quit
详情参见:sentinel.conf