使用Docker搭建一主二从的redis集群

文章目录

本文使用 主机 指代 物理机master机 指代"一主二从"中的 一主slave机 指代"一主二从"中的 二从

一、根据基础镜像构建三个docker容器

根据本文第一章(到自动启动redis之前,不要设置自动启动,会出错)配置基础镜像的相关设置,构建好后,将其导出为镜像,并根据镜像构建master和slave机

bash 复制代码
docker commit centos7 centos-redis:latest
docker run --name redis-node-1 -d -p 6379:6379 --privileged centos-redis
docker run --name redis-node-2 -d -p 6380:6379 --privileged centos-redis
docker run --name redis-node-3 -d -p 6381:6379 --privileged centos-redis

可以进入容器通过ifconfig查看三台容器的ip

bash 复制代码
docker exec -it redis-node-1 /bin/bash
yum install net-tools
ifconfig

得到结果如下

看到这台容器的ip为172.17.0.2,同理另外两台是172.17.0.3172.17.0.4

接下来用ping命令来看看三个容器是否互通,如果能正常发送数据则三台容器搭建完成。


二、构建master机

搭建完成后,进入master机

bash 复制代码
docker exec -it redis-node-1 /bin/bash

redis-7.0.15的目录/usr/local/src/redis-7.0.15/下复制一份redis.conf文件为redis6379.conf作为master机的配置文件。

bash 复制代码
cd /usr/local/src/redis-7.0.15/
cp redis.conf redis6379.conf

修改以下参数

bash 复制代码
daemonize yes
bind 0.0.0.0
protected-mode no
port 6379
dir /myredis
pidfile /var/run/redis_6379.pid
logfile "/myredis/6379.log"
requirepass 123321
dbfilename dump6379.rdb
appendonly no

注意: 一定要注释掉bind 127.0.0.1 -::1,要不然连接会一直报错MASTER <-> REPLICA sync started # Error condition on socket for SYNC: Connection refused

是否成功主要看划红线的两条信息。


三、配置slave机

配置好后,回到docker外的主机界面,将master机的redis6379.conf文件复制到主机,并接着复制到slave机

bash 复制代码
docker cp redis-node-1:/usr/local/src/redis-7.0.15/redis6379.conf redis.conf
docker cp redis.conf redis-node-2:/usr/local/src/redis-7.0.15/redis6380.conf
docker cp redis.conf redis-node-3:/usr/local/src/redis-7.0.15/redis6381.conf

在slave机的redis6380.confredis6381.conf两个文件中分别进行修改

bash 复制代码
# 两台slave都一样
masterauth "123321"
# replicaof <masterip> <masterport>
# 这里的masterip是自己机器上的ip,要用ipconfig查询后填入
replicaof 172.17.0.2 6379
#配置redis-node-2
port 6380
logfile "myredis/6380.log"
#配置redis-node-3
port 6381
logfile "myredis/6381.log"

先master后slave依次启动

redis-node-1上启动

bash 复制代码
redis-server /usr/local/src/redis-7.0.15/redis6379.conf
redis-cli -a 123321

redis-node-2上启动

bash 复制代码
redis-server /usr/local/src/redis-7.0.15/redis6380.conf
redis-cli -a 123321 -p 6380

redis-node-3上启动

bash 复制代码
redis-server /usr/local/src/redis-7.0.15/redis6381.conf
redis-cli -a 123321 -p 6381

四、测试

在主机上输入命令set k1 v1,再在两个从机上输入命令get k1,如果都能得到结果v1,则说明集群搭建完成。


相关推荐
一周困⁸天.1 小时前
K8S-Ingress资源对象
云原生·容器·kubernetes
奶油松果3 小时前
Springboot自动装配 - redis和redission
java·spring boot·redis
siriuuus4 小时前
Redis 安装、多实例部署、主从复制及 Cluster 实践
数据库·redis·centos
ylmzfun4 小时前
Docker全景解析:从容器化理念到日常实践
docker·eureka·架构
❀͜͡傀儡师4 小时前
docker 部署 komari-monitor监控
运维·docker·容器·komari
qinyia6 小时前
WisdomSSH解决docker run命令中log-opt参数不支持导致的容器创建失败问题
java·docker·eureka
一条懒鱼6666 小时前
K8S-Ingress资源对象
云原生·容器·kubernetes
luback6 小时前
前端对Docker简单了解
运维·docker·容器
帷幄庸者7 小时前
记一次Kubernetes“僵尸”挖矿病毒的排查与歼灭全录
云原生·容器·kubernetes
eventer1239 小时前
在国产ARM64环境下从源码编译Greptime DB及构建Docker镜像实践
数据库·docker·容器