Docker搭建一主多从Redis集群

一:创建主结点(6380)

# 创建主节点目录
sudo mkdir -p /mydata/redis-master/{data,conf}

# 生成主节点配置
sudo tee /mydata/redis-master/conf/redis.conf << 'EOF'
bind 0.0.0.0
protected-mode no
port 6380
daemonize no
save 900 1
save 300 10
save 60 10000
dbfilename dump.rdb
dir /data
EOF

# 启动主节点容器
docker run -d \
  --name redis-master \
  -p 6380:6380 \
  -v /mydata/redis-master/data:/data \
  -v /mydata/redis-master/conf/redis.conf:/usr/local/etc/redis/redis.conf \
  --restart=always \
  redis:7.0.14-alpine \
  redis-server /usr/local/etc/redis/redis.conf

二:创建从结点1(6381)

# 创建从节点1目录
sudo mkdir -p /mydata/redis-slave1/{data,conf}


# 生成从节点1配置(指向主节点)
sudo tee /mydata/redis-slave1/conf/redis.conf << 'EOF'
bind 0.0.0.0
protected-mode no
port 6381
daemonize no
save 900 1
save 300 10
save 60 10000
dbfilename dump.rdb
dir /data
# 主从复制配置(重要!)替换为你的主redis所在ip
replicaof 192.168.80.56 6380
EOF


# 启动从节点1容器
docker run -d \
  --name redis-slave1 \
  -p 6381:6381 \
  -v /mydata/redis-slave1/data:/data \
  -v /mydata/redis-slave1/conf/redis.conf:/usr/local/etc/redis/redis.conf \
  --restart=always \
  redis:7.0.14-alpine \
  redis-server /usr/local/etc/redis/redis.conf

三:创建从结点2(6382)

# 创建从节点2目录
sudo mkdir -p /mydata/redis-slave2/{data,conf}

# 生成从节点2配置(指向主节点)
sudo tee /mydata/redis-slave2/conf/redis.conf << 'EOF'
bind 0.0.0.0
protected-mode no
port 6382
daemonize no
save 900 1
save 300 10
save 60 10000
dbfilename dump.rdb
dir /data
# 主从复制配置(重要!)替换为你的主redis所在ip
replicaof 192.168.80.56 6380
EOF

# 启动从节点2容器 
docker run -d \
  --name redis-slave2 \
  -p 6382:6382 \
  -v /mydata/redis-slave2/data:/data \
  -v /mydata/redis-slave2/conf/redis.conf:/usr/local/etc/redis/redis.conf \
  --restart=always \
  redis:7.0.14-alpine \
  redis-server /usr/local/etc/redis/redis.conf

补充说明:如果需要更多的从redis,按照改方式继续创建

四:测试

1.测试一

# 查看主节点复制信息
docker exec redis-master redis-cli -p 6380 info replication | grep role

预期输出:

2.测试二

# 查看从节点同步状态
docker exec redis-slave1 redis-cli -p 6381 info replication | grep -E "role|master"

预期输出:

3.测试主从同步

进入主redis:
# 连接到主节点(指定端口6380)
docker exec -it redis-master redis-cli -p 6380

#在主redis中写入
set test xnm


进入从1号redis
# 连接到从节点1(指定端口6381)
docker exec -it redis-slave1 redis-cli -p 6381


#在从1号redis读取
get test #输出xnm

#.....更多操作......

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值