redis集群-哨兵模式(sentinel)
哨兵模式:基于redis主从复制,增加sentinel服务用于监听服务状态,并在发生异常时重新选取主服务器 使用版本,redis6.25
配置文件
下面只列出主要配置,需查看详细配置请查看关联项目 redis登陆密码如配置则需要统一
master配置
requirepass 登陆密码
# 发生故障时会重新指定主服务器,所以需要指定密码
masterauth 主服务器登陆密码
slave配置
在docker环境执行,避免重复修改配置文件所以使用redis01(机器名),此处别名对应docker启动时指定的别名
requirepass 登陆密码
masterauth 主服务器登陆密码
# 指定主服务器
replicaof redis01 6379
sentinel配置
mymaster 为sentinel监控的别名,
sentinel monitor mymaster redis01 6379 2
sentinel auth-pass mymaster sbsb1234
# 6.2之后才支持使用机器名默认是关闭,此处打开
SENTINEL resolve-hostnames yes
docker 启动
结构为3个redis节点,1主2从,3个sentinel服务
准备环境
# 下载redis最新镜像
docker pull redis
#新建一个网络使其它节点连接此网络,避免通信问题
docker network create testnet
启动redis服务
命令说明 *. -p 6380:6379 指定外内端口 *. --name redis01 指定容器名称 *. -v /home/docker/redis/master.conf:/etc/redis/redis.conf 映射配置文件 *. --privileged=true 提升docker容器权限避免容器中操作权限不够 *. --network testnet 指定容器使用网络 *. --network-alias redis01 指定网络中机器名 *. -d redis 后台执行容器 *. redis-server /etc/redis/redis.conf 执行的cmd命令,指定配置文件否则不会使用映射配置文件
docker run -p 6380:6379 --name redis01 -v /home/docker/redis/master.conf:/etc/redis/redis.conf --privileged=true --network testnet --network-alias redis01 -d redis redis-server /etc/redis/redis.conf
docker run -p 6381:6379 --name redis02 -v /home/docker/redis/slave.conf:/etc/redis/redis.conf --privileged=true --network testnet --network-alias redis02 -d redis redis-server /etc/redis/redis.conf
docker run -p 6382:6379 --name redis03 -v /home/docker/redis/slave.conf:/etc/redis/redis.conf --privileged=true --network testnet --network-alias redis03 -d redis redis-server /etc/redis/redis.conf
启动完成后可使用redis客户端连接或使用命令行验证主从是否正常
# 查看主从配置信息
info replication
启动sentinel服务
命令说明 *. redis-server /etc/redis/sentinel.conf --sentinel 表示启动sentinel服务
docker run -p 26379:26379 --name sentinel01 -v /home/docker/redis/sentinel.conf:/etc/redis/sentinel.conf --privileged=true --network testnet --network-alias sentinel01 -d redis redis-server /etc/redis/sentinel.conf --sentinel
docker run -p 26380:26379 --name sentinel02 -v /home/docker/redis/sentinel.conf:/etc/redis/sentinel.conf --privileged=true --network testnet --network-alias sentinel02 -d redis redis-server /etc/redis/sentinel.conf --sentinel
docker run -p 26381:26379 --name sentinel03 -v /home/docker/redis/sentinel.conf:/etc/redis/sentinel.conf --privileged=true --network testnet --network-alias sentinel03 -d redis redis-server /etc/redis/sentinel.conf --sentinel
启动成功后可在主服务器控制台输入如下命令验证
# 执行休眠120s的任务
DEBUG SLEEP 120s
# 再次查看主从信息查看是否已一切换为从服务器
info replication