欢迎光临殡葬白事网
详情描述

1. 创建网络和目录

# 创建自定义网络
docker network create redis-net

# 创建数据目录
mkdir -p ./redis/{master,slave1,slave2}

2. 启动主节点 (Master)

# 创建主节点配置文件
cat > ./redis/master/redis.conf << EOF
port 6379
bind 0.0.0.0
protected-mode no
appendonly yes
requirepass 123456
masterauth 123456
EOF

# 启动主节点
docker run -d \
  --name redis-master \
  --network redis-net \
  -p 6379:6379 \
  -v $(pwd)/redis/master/redis.conf:/usr/local/etc/redis/redis.conf \
  -v $(pwd)/redis/master/data:/data \
  redis:7-alpine \
  redis-server /usr/local/etc/redis/redis.conf

3. 启动从节点 (Slave)

从节点1:

cat > ./redis/slave1/redis.conf << EOF
port 6380
bind 0.0.0.0
protected-mode no
appendonly yes
requirepass 123456
masterauth 123456
replicaof redis-master 6379
EOF

docker run -d \
  --name redis-slave1 \
  --network redis-net \
  -p 6380:6380 \
  -v $(pwd)/redis/slave1/redis.conf:/usr/local/etc/redis/redis.conf \
  -v $(pwd)/redis/slave1/data:/data \
  redis:7-alpine \
  redis-server /usr/local/etc/redis/redis.conf \
  --port 6380

从节点2:

cat > ./redis/slave2/redis.conf << EOF
port 6381
bind 0.0.0.0
protected-mode no
appendonly yes
requirepass 123456
masterauth 123456
replicaof redis-master 6379
EOF

docker run -d \
  --name redis-slave2 \
  --network redis-net \
  -p 6381:6381 \
  -v $(pwd)/redis/slave2/redis.conf:/usr/local/etc/redis/redis.conf \
  -v $(pwd)/redis/slave2/data:/data \
  redis:7-alpine \
  redis-server /usr/local/etc/redis/redis.conf \
  --port 6381

4. 使用 Docker Compose 部署(推荐)

创建 docker-compose.yml

version: '3.8'

services:
  master:
    image: redis:7-alpine
    container_name: redis-master
    ports:
      - "6379:6379"
    volumes:
      - ./redis/master/redis.conf:/usr/local/etc/redis/redis.conf
      - ./redis/master/data:/data
    command: redis-server /usr/local/etc/redis/redis.conf
    networks:
      - redis-net

  slave1:
    image: redis:7-alpine
    container_name: redis-slave1
    ports:
      - "6380:6380"
    volumes:
      - ./redis/slave1/redis.conf:/usr/local/etc/redis/redis.conf
      - ./redis/slave1/data:/data
    command: redis-server /usr/local/etc/redis/redis.conf --port 6380
    depends_on:
      - master
    networks:
      - redis-net

  slave2:
    image: redis:7-alpine
    container_name: redis-slave2
    ports:
      - "6381:6381"
    volumes:
      - ./redis/slave2/redis.conf:/usr/local/etc/redis/redis.conf
      - ./redis/slave2/data:/data
    command: redis-server /usr/local/etc/redis/redis.conf --port 6381
    depends_on:
      - master
    networks:
      - redis-net

networks:
  redis-net:
    driver: bridge

启动服务:

docker-compose up -d

5. 验证主从复制

# 连接到主节点
docker exec -it redis-master redis-cli -a 123456

# 在主节点执行
127.0.0.1:6379> INFO replication
# 查看 role:master 和 connected_slaves:2

# 测试数据同步
127.0.0.1:6379> SET test-key "Hello Replication"
127.0.0.1:6379> GET test-key

# 连接到从节点验证
docker exec -it redis-slave1 redis-cli -a 123456 -p 6380
127.0.0.1:6380> GET test-key

6. 故障转移测试

模拟主节点故障:

# 停止主节点
docker stop redis-master

# 手动提升从节点为主节点
docker exec -it redis-slave1 redis-cli -a 123456 -p 6380
127.0.0.1:6380> SLAVEOF NO ONE
127.0.0.1:6380> CONFIG SET requirepass 123456

# 配置另一个从节点连接到新的主节点
docker exec -it redis-slave2 redis-cli -a 123456 -p 6381
127.0.0.1:6381> SLAVEOF redis-slave1 6380

7. 常用命令

# 查看容器状态
docker ps

# 查看日志
docker logs redis-master
docker logs redis-slave1

# 停止所有服务
docker stop redis-master redis-slave1 redis-slave2
# 或使用 docker-compose
docker-compose down

# 清理数据
docker-compose down -v

8. 配置说明

  • requirepass:Redis 认证密码
  • masterauth:从节点连接主节点时的认证密码
  • replicaof:指定主节点地址(Redis 5.0+)
  • appendonly yes:启用 AOF 持久化
  • protected-mode no:允许远程连接

这样就完成了 Redis 主从复制的 Docker 部署。可以根据需要调整配置参数,如持久化策略、内存限制等。

相关帖子
参与了几次好评返现,会不会被平台标记成低质评价账号?
参与了几次好评返现,会不会被平台标记成低质评价账号?
滨州市白事灵棚#殡葬服务公司办理,安全可靠
滨州市白事灵棚#殡葬服务公司办理,安全可靠
环保理念深入宠物经济后,2026年哪些可降解或循环材质的宠物用品可能成为主流?
环保理念深入宠物经济后,2026年哪些可降解或循环材质的宠物用品可能成为主流?
日常饮用水选择有讲究,纯净水、矿泉水和白开水哪种更好?
日常饮用水选择有讲究,纯净水、矿泉水和白开水哪种更好?
历史补贴领取记录可以通过哪些官方途径进行查询与验证?
历史补贴领取记录可以通过哪些官方途径进行查询与验证?
琼海市殡葬服务办理电话%葬礼策划,丧葬礼仪服务公司
琼海市殡葬服务办理电话%葬礼策划,丧葬礼仪服务公司
使用微波炉时,哪些食物组合可能产生危险?
使用微波炉时,哪些食物组合可能产生危险?
夫妻公积金共同申请按揭房贷款,额度计算与账户余额使用规则
夫妻公积金共同申请按揭房贷款,额度计算与账户余额使用规则
民法典借贷、票据及税务条款解析,明确履约与违规处置法律规则
民法典借贷、票据及税务条款解析,明确履约与违规处置法律规则
解析“开门红”背后的色彩密码:为什么红色成为了公认的喜庆象征?
解析“开门红”背后的色彩密码:为什么红色成为了公认的喜庆象征?
对于普通在职者,可以通过哪些公开渠道查询到一家公司的企业年金参保情况?
对于普通在职者,可以通过哪些公开渠道查询到一家公司的企业年金参保情况?
废旧弹簧床垫属于可回收物吗?它的内部材料应该如何进行分类处理?
废旧弹簧床垫属于可回收物吗?它的内部材料应该如何进行分类处理?
百色市殡葬一条龙公司%丧葬告别会布置,白事一站式服务
百色市殡葬一条龙公司%丧葬告别会布置,白事一站式服务
社会福利如何更好地支持个体应对因自然灾害等突发情况造成的困难?
社会福利如何更好地支持个体应对因自然灾害等突发情况造成的困难?
南阳市殡礼花篮#办理殡葬服务,收费透明
南阳市殡礼花篮#办理殡葬服务,收费透明
增加共同借款人能降低房产抵押贷款利率吗?实操分享
增加共同借款人能降低房产抵押贷款利率吗?实操分享
物业审计与常见的物业收支情况公示有什么本质上的区别和联系?
物业审计与常见的物业收支情况公示有什么本质上的区别和联系?
石家庄市殡葬公司电话%白事告别会服务,殡仪服务
石家庄市殡葬公司电话%白事告别会服务,殡仪服务
观察CPI的长期走势,能帮助我们理解过去几年社会经济发展和居民生活的哪些变化?
观察CPI的长期走势,能帮助我们理解过去几年社会经济发展和居民生活的哪些变化?
父母去世留下的房改房,兄弟姐妹对产权份额有争议,这种情况该怎么处理?
父母去世留下的房改房,兄弟姐妹对产权份额有争议,这种情况该怎么处理?