6370为主节点,6371和6372为从节点
先搭建主从
创建目录
mkdir -p /home/docker-data/redis/redis-conf
mkdir -p /home/docker-data/redis/data-6370
mkdir -p /home/docker-data/redis/data-6371
mkdir -p /home/docker-data/redis/data-6372
下载redis配置文件
复制三份文件
cd /home/docker-data/redis/redis-conf
cp redis.conf redis6370.conf
cp redis.conf redis6371.conf
cp redis.conf redis6372.conf
修改3个配置文件的内容
修改 redis6370.conf
注释掉bind
#bind 127.0.0.1 -::1
保护模式关闭
protected-mode no
设置密码
requirepass 123456
开启aof日志
appendonly yes
修改自己的端口号
port 6370
修改 redis6371.conf
注释掉bind
#bind 127.0.0.1 -::1
保护模式关闭
protected-mode no
设置密码
requirepass 123456
开启aof日志
appendonly yes
修改自己的端口号
port 6371配置与主节点验证的密码
masterauth 123456
配置主节点的ip端口,认证主节点主从复制
replicaof 192.168.0.166 6370
修改 redis6372.conf
注释掉bind
#bind 127.0.0.1 -::1
保护模式关闭
protected-mode no
设置密码
requirepass 123456
开启aof日志
appendonly yes
修改自己的端口号
port 6372配置与主节点验证的密码
masterauth 123456
配置主节点的ip端口,认证主节点主从复制
replicaof 192.168.0.166 6370
启动redis集群
docker run -p 6370:6370 --name redis-6370 -v /home/docker-data/redis/redis-conf/redis6370.conf:/etc/redis/redis.conf -v /home/docker-data/redis/data-6370:/data -d redis:7.2.0 redis-server /etc/redis/redis.conf
docker run -p 6371:6371 --name redis-6371 -v /home/docker-data/redis/redis-conf/redis6371.conf:/etc/redis/redis.conf -v /home/docker-data/redis/data-6371:/data -d redis:7.2.0 redis-server /etc/redis/redis.conf
docker run -p 6372:6372 --name redis-6372 -v /home/docker-data/redis/redis-conf/redis6372.conf:/etc/redis/redis.conf -v /home/docker-data/redis/data-6372:/data -d redis:7.2.0 redis-server /etc/redis/redis.conf
登陆主节点,随便set一条数据
docker exec -it redis-6370 redis-cli -p 6370 -a password 123456> info
输入密码
auth 123456
插入数据
set aa 123
查看状态
info replication
登陆从节点,查看是否有主节点插入的那一条数据
docker exec -it redis-6371 redis-cli -p 6371 -a password 123456> info
输入密码
auth 123456
查看
get aa
查看状态
info replication
可以看到有主节点插入的数据,实现了主从复制
配置哨兵模式
哨兵模式介绍
redis哨兵模式,就是通过哨兵节点,去监控所有主从节点
一旦主节点挂掉了,然后投票选举,自动把从节点升级为主节点
主节点恢复之后,自动变成从节点
创建目录
mkdir -p /home/docker-data/redis/master
mkdir -p /home/docker-data/redis/master/confmkdir -p /home/docker-data/redis/slave01
mkdir -p /home/docker-data/redis/slave01/confmkdir -p /home/docker-data/redis/slave02
mkdir -p /home/docker-data/redis/slave02/conf
下载sentinel.conf配置文件
wget http://download.redis.io/redis-stable/sentinel.conf
进入主节点目录修改 sentinel.conf
cd /home/docker-data/redis/master/conf
# 修改端口
port 26379
# 设置日志存储位置
logfile "/data/sentinel.log"
# 监控主节点的配置 mymaster名字自定义;因为是三台哨兵,所以大于等于半数票数2
sentinel monitor mymaster 192.168.0.166 6370 2
# 配置主节点密码
sentinel auth-pass mymaster 123456
进入从节点1目录修改 sentinel.conf
cd /home/docker-data/redis/slave01/conf
# 修改端口
port 26380
# 设置日志存储位置
logfile "/data/sentinel.log"
# 监控主节点的配置 mymaster名字自定义;2因为是三台哨兵,所以大于等于半数票数2
sentinel monitor mymaster 192.168.0.166 6370 2
# 配置主节点密码
sentinel auth-pass mymaster 123456
进入从节点2目录修改 sentinel.conf
cd /home/docker-data/redis/slave02/conf
# 修改端口
port 26381
# 设置日志存储位置
logfile "/data/sentinel.log"
# 监控主节点的配置 mymaster名字自定义;2因为是三台哨兵,所以大于等于半数票数2
sentinel monitor mymaster 192.168.0.166 6370 2
# 配置主节点密码
sentinel auth-pass mymaster 123456
启动sentinel集群
docker run -itd -v /home/docker-data/redis/master/data:/data -v /home/docker-data/redis/master/conf:/etc/redis -p 26379:26379 --name redis_sentinel redis:7.2.0 redis-sentinel /etc/redis/sentinel.conf
docker run -itd -v /home/docker-data/redis/slave01/data:/data -v /home/docker-data/redis/slave01/conf:/etc/redis -p 26380:26380 --name redis_sentinel01 redis:7.2.0 redis-sentinel /etc/redis/sentinel.conf
docker run -itd -v /home/docker-data/redis/slave02/data:/data -v /home/docker-data/redis/slave02/conf:/etc/redis -p 26381:26381 --name redis_sentinel02 redis:7.2.0 redis-sentinel /etc/redis/sentinel.conf
验证哨兵模式
进入容器
查看状态
docker exec -it redis_sentinel redis-cli -p 26379
info sentinel
现在的主节点是6370的端口
停掉6370的主节点
docker stop redis-6370
再次查看状态
info sentinel
主节点变成了6371,这样就实现了主从自动切换,故障转移
哨兵模式的心跳检测
redis哨兵模式,心跳检测默认是30秒,如果超过这个时间,没有收到主节点的消息,则吧主节点下线,从节点通过选举变成主节点,主节点恢复之后,变为从节点
可以通过sentinel.conf的配置文件进行修改
sentinel down-after-milliseconds mymaster 30000