文章目录
一 redis环境搭建
redis环境搭建参考 https://blog.csdn.net/qq_33396183/article/details/103124244
二 使用Docker实现Redis主从配置
1 创建本地与docker映射的目录
1.在/data/redis目录下新建文件夹redis_cluster
[root@localhost roo]# mkdir -p /data/redis/redis_cluster
2.我们需要搭建三个redis集群,在redis_cluster目录下新建三个文件夹
[root@localhost redis_cluster]# mkdir 6379 6380 6381
3.把redis的配置文件分别上传到这三个文件夹下
2 分别修改配置文件redis.conf 中的内容,修改内容如下
配置 | 说明 |
---|---|
daemonize no | #这个使用默认值,不能该成yes |
pidfile /var/run/redis_6379.pid | #把名称改成对应的端口号 |
port 6379 | #修改redis端口号 |
dbfilename dump6379.rdb | #在名称上加上对应的端口号 |
bind 127.0.0.1 | #找到这一项,注释掉 |
requirepass 123456 | #设置当前redis数据库的密码 |
masterauth 123456 | #设置主库密码 |
appendonly yes | #开启redis持久化 |
3 分别启动3个redis
docker run -d -p 6379:6379 --name redis6379 -v /data/redis/redis_cluster/6379/redis.conf:/etc/redis/redis.conf -v /data/redis/redis_cluster/6379/data:/data redis redis-server /etc/redis/redis.conf --appendonly yes
docker run -d -p 6380:6380 --name redis6380 -v /data/redis/redis_cluster/6380/redis.conf:/etc/redis/redis.conf -v /data/redis/redis_cluster/6380/data:/data redis redis-server /etc/redis/redis.conf --appendonly yes
docker run -d -p 6381:6381 --name redis6381 -v /data/redis/redis_cluster/6381/redis.conf:/etc/redis/redis.conf -v /data/redis/redis_cluster/6381/data:/data redis redis-server /etc/redis/redis.conf --appendonly yes
4 进入redis客户端并登录
进入redis客户端
docker exec -it 容器id redis-cli -p 6379
docker exec -it 容器id redis-cli -p 6380
docker exec -it 容器id redis-cli -p 6381
三个客户端都登录进去登录
auth 123456
5 配置主从关系
在这里我们把6379配置为主,6380,6381配置为从
我们在6380,6381的客户端上分别输入如下命令
slaveof 116.62.68.112 6379
6 查看redis的主从关系,使用如下命令
info replication
三 哨兵
1 简介
Redis故障转移
Redis集群自身实现了高可用,当集群内少量节点出现故障时通过自动故障转移保证集群可以正常对外提供服务
哨兵机制(sentinel)的高可用
当主节点出现故障时,由Redis Sentinel自动完成故障发现和转移,并通知应用方,实现高可用性。
2 配置
1.在/data/redis/redis_cluster下新建sentinel文件夹
mkdir sentinel
2.sentinel文件夹下新建三个文件夹 26379 26380 26381
mkdir 26379 26380 26381
3.分别在26379 26380 26381三个文件夹下创建sentinel.conf
touch sentinel.conf
4.分别编辑三个哨兵配置文件
#配置哨兵端口,每个配置文件端口不一样
port 26379
#sentinel monitor 主库名称 主库ip 主库端口号 选举数量
sentinel monitor mymaster 192.168.0.109 6379 1
#多少时间之后才认为主库宕机
sentinel down-after-milliseconds mymaster 20000
#一次复制数据到多少个从机上
sentinel parallel-syncs mymaster 1
#故障转移时间
sentinel failover-timeout mymaster 60000
#主库的密码
sentinel auth-pass mymaster 123456
5.启动三个哨兵
docker run -d -p 26379:26379 --restart=always --name sentinel26379 -v /data/redis/redis_cluster/sentinel/26379/sentinel.conf:/etc/redis/sentinel.conf -v /data/redis/redis_cluster/sentinel/26379/data:/data -d redis redis-sentinel /etc/redis/sentinel.conf
docker run -d -p 26380:26380 --restart=always --name sentinel26380 -v /data/redis/redis_cluster/sentinel/26380/sentinel.conf:/etc/redis/sentinel.conf -v /data/redis/redis_cluster/sentinel/26380/data:/data -d redis redis-sentinel /etc/redis/sentinel.conf
docker run -d -p 26381:26381 --restart=always --name sentinel26381 -v /data/redis/redis_cluster/sentinel/26381/sentinel.conf:/etc/redis/sentinel.conf -v /data/redis/redis_cluster/sentinel/26381/data:/data -d redis redis-sentinel /etc/redis/sentinel.conf