docker搭建redis主从复制、sentinel监控、整合到应用代码

搭建主从复制

这里用docker启动三个redis服务,在一台Mac机器上(临时IP为192.168.0.103),分别为redis-master(端口6379),redis-slave1(端口6388),redis-slave2(端口6389)

配置文件

redis官方配置文件详解。
配置本地的配置文件,用于docker运行配置文件挂载。
redis-master配置文件如下:

# 注释这一行,表示Redis可以接受任意ip的连接
# bind 127.0.0.1 

port 6379
# 关闭保护模式
protected-mode no 

# 让redis服务后台运行
daemonize yes 

# 设定密码(可选,如果这里开启了密码要求,slave的配置里就要加这个密码. 只是练习配置,就不使用密码认证了)
# requirepass masterpassword 

# 配置日志路径,为了便于排查问题,指定redis的日志文件目录
logfile "/var/log/redis/redis.log"

redis-slave1配置如下:

# 注释这一行,表示Redis可以接受任意ip的连接
# bind 127.0.0.1 

port 6388

# 关闭保护模式
protected-mode no 

# 让redis服务后台运行
daemonize yes 

# 设定密码(可选,如果这里开启了密码要求,slave的配置里就要加这个密码)
#requirepass masterpassword 

# 设定主库的密码,用于认证,如果主库开启了requirepass选项这里就必须填相应的密码
#masterauth <master-password>

# 设定master的IP和端口号,redis配置文件中的默认端口号是6379
# 低版本的redis这里会是slaveof,意思是一样的,因为slave是比较敏感的词汇,所以在redis后面的版本中不在使用slave的概念,取而代之的是replica
replicaof 192.168.0.103 6379

# 配置日志路径,为了便于排查问题,指定redis的日志文件目录
logfile "/var/log/redis/redis.log"

redis-slave2只是改下端口port为6389

创建完如下:
在这里插入图片描述

启动主从服务

创建并启动容器
redis-master

docker run -it --name redis-master -v /Users/用户名/home/redis-sentinel/master/redis.conf:/usr/local/etc/redis/redis.conf -d -p 6379:6379 redis /bin/bash

redis-slave1

docker run -it --name redis-slave1 -v /Users/用户名/home/redis-sentinel/slave-1/redis.conf:/usr/local/etc/redis/redis.conf -d -p 6388:6388 redis /bin/bash

redis-slave2

docker run -it --name redis-slave2 -v /Users/用用户名/home/redis-sentinel/slave-2/redis.conf:/usr/local/etc/redis/redis.conf -d -p 6389:6389 redis /bin/bash

启动redis服务
先启动主服务redis-master,执行以下命令

#进入容器
docker exec -it redis-master bash
#创建指定日志路径
mkdir /var/log/redis/
touch /var/log/redis/redis.log
#启动redis服务
redis-server /usr/local/etc/redis/redis.conf

连接服务,并查看主服务信息

# 或者直接redis-cli  默认127.0.0.1 端口6379
redis-cli -c -h 192.168.0.103 -p 6379
#查看服务信息
info replication

在这里插入图片描述依照类似步骤,启动redis-slave1和redis-slave2服务,这里放下redis-slave1的服务信息
在这里插入图片描述

验证主从复制

redis-master执行
在这里插入图片描述
redis-slave1查询
在这里插入图片描述
redis-slave2查询
在这里插入图片描述

sentinel监控服务

用docker启动三个sentinel服务,sentinel-1(6397)、sentinel-2(6398)、sentinel-3(6399)

配置文件

sentinel官方配置文件。
sentinel-1配置文件sentinel.conf内容如下:

# 让sentinel服务后台运行
daemonize yes 
#配置端口
port 6397
# 修改日志文件的路径
logfile "/var/log/redis/sentinel.log"

# 修改监控的主redis服务器(监控redis-master)
# 最后一个2表示,两台机器判定主被动下线后,就进行failover(故障转移)
# 这里的mymaster可以更改,下面介绍spring-data-redis使用时,会用到
sentinel monitor mymaster 192.168.0.103 6379 2

看下官网对sentinel monitor 配置的描述
在这里插入图片描述
sentinel-2配置文件修改端口6398,sentinel-3配置文件修改端口6399,然后创建新的文件挂载路径等与主从配置类似。

启动sentinel集群

这里以sentinel-1为例, sentinel-2、sentinel-3类似。
创建并启动容器:

# sentinel-2、sentinel-3修改端口,修改挂载映射路径
docker run -it --name sentinel-1 -p 6397:6397 -v /Users/用户名/home/redis-sentinel/sentinel/sentinel1/sentinel.conf:/usr/local/etc/redis/sentinel.conf -d redis /bin/bash

进入容器:

docker exec -it sentinel-1 bash

接下里执行以下命令,启动sentinel服务

#创建日志路径
mkdir /var/log/redis
touch /var/log/redis/sentinel.log
#启动服务
redis-sentinel /usr/local/etc/redis/sentinel.conf 

看下日志:
在这里插入图片描述

验证sentinel监控

验证步骤如下,成功实现主服务宕机下,从服务晋升为主
在这里插入图片描述
再来看下,sentinel的日志
在这里插入图片描述

spring-data-redis使用sentinel

使用比较简单,利用Springboot自动注入特性。
修改配置文件

## 配置sentinel集群
spring.redis.sentinel.nodes=192.168.0.103:6397,192.168.0.103:6398,192.168.0.103:6399  
## 配置监听的主服务,就是上面配置文件sentinel monitor 后面的名称
spring.redis.sentinel.master=mymaster

下面就可以直接使用RedisTemplate、StringRedisTemplate

参考

https://juejin.im/post/5d26b03de51d454fa33b1960
https://juejin.im/post/5d93d9b8f265da5b794f1232
https://juejin.im/post/5d0f7da66fb9a07ef44410db

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值