docker安装redis7-主从模式

说明

系统版本:CentOS7.9

redis版本:7.0.5镜像

此模式为1主2从,主节点端口为6379,从节点端口为6380、6381以下所有的示例以redis7.0.5为例

下载镜像

docker pull redis:7.0.5

 创建挂载路径

所有节点的数据、配置文件以及日志都挂载到宿主机上,防止容器重启后导致数据丢失

# 主节点
mkdir -p /root/data/redis-master/conf
mkdir -p /root/data/redis-master/data

# 从节点1
mkdir -p /root/data/redis-slave1/conf
mkdir -p /root/data/redis-slave1/data

#从节点2
mkdir -p /root/data/redis-slave2/conf
mkdir -p /root/data/redis-slave2/data

配置主节点redis.conf文件

下载配置文件

 redis7版本的镜像中没有对应的redis.conf配置文件,需要的可以从官网安装包里面下载对应版本的redis.conf文件。下载地址:Redis下载 以下以7.0.5为例

-P: 表示将安装包下载到指定路径下

wget -P /root/software https://github.com/redis/redis/archive/refs/tags/7.0.5.tar.gz

解压缩安装包

-C: 指定压缩包解压到哪里, ./表示解压到当前文件夹下

tar -zxvf /root/software/7.0.5.tar.gz -C /root/software/

 复制redis.conf到主节点的挂载卷目录中

cp /root/software/redis-7.0.5/redis.conf /root/data/redis-master/conf/

 修改redis.conf文件

vim /root/data/redis-master/conf/redis.conf

修改以下内容

# 修改bind使redis可以外部访问,正式环境不建议设置为0.0.0.0
bind 0.0.0.0
# 保护模式,默认yes,如果不需要保护模式可以设置为no            
protected-mode yes
# 端口号,默认即可
port 6379
# 日志文件存放位置
logfile /data/redis.log
# 用守护线程的方式启动,关闭
daemonize no
# 数据存放目录
dir /data
# 密码
requirepass <your password>
# 开启AOF方式持久化 默认是no
appendonly yes
# 持久化数据文件存放的文件夹名称,不能带/
appenddirname "aof"

 配置从节点的redis.conf文件

从节点1的配置

vim /root/data/redis-slave1/conf/redis.conf

 增加以下配置内容

port 6379
replicaof <主节点ip> <主节点的port>
logfile /data/redis.log
dir /data
masterauth <主节点配置的requirepass值>
# 对外声明自己的ip和端口
replica-announce-ip 192.168.66.130
replica-announce-port 6380

从节点2的配置

vim /root/data/redis-slave2/conf/redis.conf

增加以下内容

port 6379
replicaof <主节点ip> <主节点port>
logfile /data/redis.log
dir /data
masterauth <主节点配置的requirepass值>
# 对外声明自己的ip和端口
replica-announce-ip 192.168.66.130
replica-announce-port 6381

启动redis

启动主节点

docker run -p 6379:6379 \
--privileged=true \
-v /root/data/redis-master/data:/data \
-v /root/data/redis-master/conf:/usr/local/etc/redis \
--name redis-master \
--restart=always \
-d redis:7.0.5 \
redis-server /usr/local/etc/redis/redis.conf

启动从节点1

docker run -p 6380:6379 \
--privileged=true \
-v /root/data/redis-slave1/data:/data \
-v /root/data/redis-slave1/conf:/usr/local/etc/redis \
--name redis-slave1 \
--restart=always \
-d redis:7.0.5 \
redis-server /usr/local/etc/redis/redis.conf

启动从节点2

docker run -p 6381:6379 \
--privileged=true \
-v /root/data/redis-slave2/data:/data \
-v /root/data/redis-slave2/conf:/usr/local/etc/redis \
--name redis-slave2 \
--restart=always \
-d redis:7.0.5 \
redis-server /usr/local/etc/redis/redis.conf

确认是否部署成功

查看主节点日志

tail -f /root/data/redis-master/data/redis.log 

查看集群信息

docker exec -it redis-master redis-cli
# auth 进行权限验证
auth <your password>
# 集群信息
info replication

 测试

主节点添加数据

docker exec -it redis-master redis-cli
set name zs
set age 18

从节点1获取数据

docker exec -it redis-slave1 redis-cli
keys *

 从节点2获取数据

docker exec -it redis-slave2 redis-cli
keys *

 部署中遇到的问题

 Error condition on socket for SYNC: Connection refused

解决方案

  • 检查从节点的配置是否正确
  • replicaof 中的配置不能写127.0.0.1

Could not connect to Redis at 127.0.0.1:6379: Connection refused

解决方案

  • 如果对外暴露的端口不是6379,使用-p指定链接的端口

docker exec -it redis-slave1 redis-cli -p 6380

结束

以上是整个部署过程,三个节点部署在了同一台宿主机上面,使用不同的端口进行区分,如果大家在部署过程中遇到问题欢迎私信或者评论。 

猜你喜欢

转载自blog.csdn.net/LSW_JAVADP/article/details/132307097
今日推荐