使用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,则说明集群搭建完成。


相关推荐
叠叠乐5 分钟前
移动家庭云电脑linux docker 容器登陆移动家庭云电脑
linux·运维·docker
H Journey8 分钟前
Docker基本使用
docker·容器·eureka
I_Jln.10 分钟前
Docker:快速构建、运行、管理应用的工具
运维·docker·容器
難釋懷38 分钟前
Jedis连接池
redis·缓存
式5161 小时前
RAG检索增强生成基础(二)RAG项目实战之Milvus Docker环境配置
运维·docker·容器
Yeats_Liao1 小时前
容器化部署:基于Docker的推理环境隔离与迁移
运维·docker·容器
阿里巴巴P8资深技术专家1 小时前
Docker一站式部署:RustFS、GoFastDFS、Gitea与PostgreSQL实战指南
docker·postgresql·gitea
用什么都重名1 小时前
【Dify 实战踩坑】工作流可运行但 MCP 服务部署失败(503)的问题定位与彻底解决
人工智能·docker·dify·mcp服务
可爱又迷人的反派角色“yang”1 小时前
K8s(六)
linux·运维·云原生·容器·kubernetes
存在的五月雨2 小时前
Redis的一些使用
java·数据库·redis