一 试验环境
计划在10.192.203.107/109/110上安装一个哨兵来实现redis server自动故障转移.
二 试验步骤
2.1 创建相关目录二
在三台服务器上都创建下:
mkdir -p /data/redis/sentinel
2.2 修改sentinel配置文件
在三台服务器上部署配置文件:
vi /etc/sentinel.conf
daemonize yes
port 26379
dir "/data/redis/sentinel"
pidfile "/var/run/sentinel.pid"
logfile "/data/redis/sentinel/sentinel.log"
bind 0.0.0.0
#备注
这里不需要单独配置监控主节点,后面在codis-fe上配置Sentinel,点击‘SYNC’后会对其自动监控。
2.3 启动sentinel服务
在三台服务器上启动:
redis-server /etc/sentinel.conf --sentinel
2.4 在codis-fe界面配置sentinel
若不配置的话,后台数据库发生了主从切换,codis-fe前台却不识别。
#此时查看哨兵信息,主节点还未被加入监控:
点击‘SYNC’,就不再有‘OUT OF SYNC’的提示了:
也可以看到监控的主节点了:
备注:需要连接每个哨兵执行上述命令,确保status都是ok状态。
Redis server后面也能看到有HA标识了:
2.5 验证redis server高可用
2.5.1 模拟主节点宕机
[root@ZooKeeper-node1 ~]# ps -ef | grep codis-s | grep -v 'grep'
root 3187 1 0 Aug05 ? 00:08:21 codis-server 0.0.0.0:6380
root 4162 1 0 10:27 ? 00:00:07 codis-server 0.0.0.0:6379
[root@ZooKeeper-node1 ~]# kill -9 4162
[root@ZooKeeper-node1 ~]# ps -ef | grep codis-s | grep -v 'grep'
root 3187 1 0 Aug05 ? 00:08:21 codis-server 0.0.0.0:6380
2.5.2 验证主从是否自动切换
10.192.203.110:6380被提升为了主库,说明主从切换成功。
可以通过点击’SYNC‘按钮’去除‘OUT OF SYNC’警告。
在10.192.203.110上插入一条测试数据:
set proxy-a1 a1
2.5.3 启动原故障主节点
codis-server /usr/local/codis/redis/redis-6379/redis.conf
在原主库恢复后,会自动变成现主库的从节点,进行主从同步。
可以看到keys数量从1变成了2,也看到原主库故障期间插入的数据: