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

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年哪些可降解或循环材质的宠物用品可能成为主流?
日常饮用水选择有讲究,纯净水、矿泉水和白开水哪种更好?
日常饮用水选择有讲究,纯净水、矿泉水和白开水哪种更好?
历史补贴领取记录可以通过哪些官方途径进行查询与验证?
历史补贴领取记录可以通过哪些官方途径进行查询与验证?
从“消失的赈灾粮”到“伪造的遗诏”:《长安二十四计》用计谋当线索,每桩谜案都是“脑力马拉松”
从“消失的赈灾粮”到“伪造的遗诏”:《长安二十四计》用计谋当线索,每桩谜案都是“脑力马拉松”
汉中市殡葬一条龙服务%丧事出殡服务,丧葬服务租车
汉中市殡葬一条龙服务%丧事出殡服务,丧葬服务租车
异地就医备案成功后,它的有效期一般是多长时间,如何查询?
异地就医备案成功后,它的有效期一般是多长时间,如何查询?
在防火期内,林业部门通常会采取哪些具体措施来预防森林火灾?
在防火期内,林业部门通常会采取哪些具体措施来预防森林火灾?
休完较长的育儿假后重返职场,可能会遇到哪些挑战以及该如何提前准备?
休完较长的育儿假后重返职场,可能会遇到哪些挑战以及该如何提前准备?
夜间突发火灾,除了安装烟雾报警器,家庭还应做好哪些应急准备?
夜间突发火灾,除了安装烟雾报警器,家庭还应做好哪些应急准备?
换工作后社保缴费基数发生变化,对当年的个税申报会产生哪些影响?
换工作后社保缴费基数发生变化,对当年的个税申报会产生哪些影响?
德阳市追悼会礼仪#正规殡葬服务公司,个性化服务
德阳市追悼会礼仪#正规殡葬服务公司,个性化服务
补充工伤保险的缴费标准是如何确定的,费用通常由谁承担,比例如何?
补充工伤保险的缴费标准是如何确定的,费用通常由谁承担,比例如何?
在使用电子消费券时,有哪些需要特别注意的隐私信息保护和账户安全事项?
在使用电子消费券时,有哪些需要特别注意的隐私信息保护和账户安全事项?
共享经济与循环使用模式的发展,对生活垃圾总量产生了怎样的影响?
共享经济与循环使用模式的发展,对生活垃圾总量产生了怎样的影响?
德阳市白事追悼会策划#办理白事服务,价格合理
德阳市白事追悼会策划#办理白事服务,价格合理
使用个人所得税APP申报2026年劳务报酬收入,有哪些步骤和注意事项?
使用个人所得税APP申报2026年劳务报酬收入,有哪些步骤和注意事项?
遇到房东无故克扣押金,有哪些合法有效的途径可以维护自身权益?
遇到房东无故克扣押金,有哪些合法有效的途径可以维护自身权益?
文山殡葬一站式服务%白事悼念会,白事丧事一条龙服务
文山殡葬一站式服务%白事悼念会,白事丧事一条龙服务