在同一台机器上配置哨兵模式, 可用于测试开发场景
下载redis
wget https://github.com/redis/redis/archive/5.0.10.tar.gz
解压到三个文件夹, redis-1, redis-2, redis-3
进行 make 编译, 参考这里
在本机上配置哨兵模式, 重点是使用不同的端口
redis服务 | redis端口 | 哨兵端口 | 主从 |
---|---|---|---|
redis-1 | 6379 | 26379 | 主节点 |
redis-2 | 6380 | 26380 | 从节点 |
redis-3 | 6381 | 26381 | 从节点 |
配置 ./redis-1/redis.conf, 如下
# bind 127.0.0.1 // 注释掉这一行
protected-mode no // 关闭保护模式
port 6379 // redis 端口
requirepass 10010 // 设置redis密码
配置 ./redis-2/redis.conf, 如下
# bind 127.0.0.1 // 注释掉这一行
protected-mode no // 关闭保护模式
port 6380 // redis 端口
requirepass 10010 // 设置redis密码
replicaof 192.168.171.213 6379 // 配置 master 的IP和端口
masterauth 10010 // 配置 master 的密码
配置 ./redis-3/redis.conf, 如下
# bind 127.0.0.1 // 注释掉这一行
protected-mode no // 关闭保护模式
port 6381 // redis 端口
requirepass 10010 // 设置redis密码
replicaof 192.168.171.213 6379 // 配置 master 的IP和端口
masterauth 10010 // 配置 master 的密码
配置 ./redis-1/sentinel.conf, 如下
port 26379 // 哨兵端口
daemonize yes // 开启守护进程
sentinel monitor mymaster 192.168.171.213 6379 2 // 监控 master ip 端口
sentinel auth-pass mymaster 10010 // master的密码
配置 ./redis-2/sentinel.conf, 如下
port 26380 // 哨兵端口
daemonize yes // 开启守护进程
sentinel monitor mymaster 192.168.171.213 6379 2 // 监控 master ip 端口
sentinel auth-pass mymaster 10010 // master的密码
配置 ./redis-3/sentinel.conf, 如下
port 26381 // 哨兵端口
daemonize yes // 开启守护进程
sentinel monitor mymaster 192.168.171.213 6379 2 // 监控 master ip 端口
sentinel auth-pass mymaster 10010 // master的密码
然后依次启动 主节点 ---> 从节点
# 启动 redis
./redis-1/src/redis-server ./redis-1/redis.conf > /dev/null 2>&1 &
./redis-2/src/redis-server ./redis-2/redis.conf > /dev/null 2>&1 &
./redis-3/src/redis-server ./redis-3/redis.conf > /dev/null 2>&1 &
# 启动哨兵
./redis-1/src/redis-sentinel ./redis-1/sentinel.conf
./redis-2/src/redis-sentinel ./redis-2/sentinel.conf
./redis-3/src/redis-sentinel ./redis-3/sentinel.conf
# 关闭 redis
./redis-1/src/redis-cli -a 10010 shutdown
./redis-2/src/redis-cli -a 10010 shutdown
./redis-3/src/redis-cli -a 10010 shutdown
最后要检查服务器防火墙有没有开放这些端口 6379, 6380, 6381, 26379, 26380, 26381
# 查看哪些端口是开放的
firewall-cmd --list-ports
# 开放端口
firewall-cmd --zone=public --add-port=6379/tcp --permanent
# 移除端口
firewall-cmd --zone=public --remove-port=6379/tcp --permanent
# 重启防火墙生效
firewall-cmd --reload
测试故障转移
# 主节点上执行
./redis-1/src/redis-cli -a 10010 -p 6379
debug sleep 40
info