目 录CONTENT

文章目录

Redis/Valkey配置主从哨兵模式

过客
2026-03-01 / 0 评论 / 0 点赞 / 3 阅读 / 0 字

Valkey是(Redis的开源分支演化而来)主从哨兵模式和Redis配置一样。哨兵节点一般是奇数原则,1个嘎了就没了,所以一般会是3个或5个哨兵节点。这里以三个为例。

以下是一个单设备部署,多设备可以参考,包含 1 个主节点(master)、2 个从节点(replica) 和 3 个哨兵节点(sentinel),确保高可用性和自动故障转移。

  • 目录结构如下:
valkey-sentinel/
├── docker-compose.yml
├── conf/
│   ├── valkey-master.conf
│   ├── valkey-replica1.conf
│   ├── valkey-replica2.conf
│   ├── sentinel1.conf
│   ├── sentinel2.conf
│   └── sentinel3.conf

以下列出与主从哨兵相关的配置

  • conf/valkey-master.conf 主节点配置
port 6379
bind 0.0.0.0
appendonly yes
requirepass your_password
masterauth your_password
  • conf/valkey-replica1.conf 从1节点
port 6380
bind 0.0.0.0
appendonly yes
requirepass your_password
masterauth your_password
replicaof 127.0.0.1 6379 # 这里配置主节点主机ip和端口,能和主节点通讯就可以了。
  • conf/valkey-replica2.conf 从2节点
port 6381
bind 0.0.0.0
appendonly yes
requirepass your_password
masterauth your_password
replicaof 127.0.0.1 6379 # 主节点配置,同上
  • conf/sentinel1.conf 哨兵1
port 26379
bind 0.0.0.0
daemonize no
sentinel monitor mymaster 192.168.1.105 6379 2
sentinel auth-pass mymaster your_password
sentinel down-after-milliseconds mymaster 5000
sentinel failover-timeout mymaster 10000
sentinel parallel-syncs mymaster 1
sentinel deny-scripts-reconfig yes
  • conf/sentinel2.conf 哨兵2
port 26380
bind 0.0.0.0
daemonize no
sentinel monitor mymaster 192.168.1.105 6380 2
sentinel auth-pass mymaster your_password
sentinel down-after-milliseconds mymaster 5000
sentinel failover-timeout mymaster 10000
sentinel parallel-syncs mymaster 1
sentinel deny-scripts-reconfig yes
  • conf/sentinel3.conf 哨兵3
port 26381
bind 0.0.0.0
daemonize no
sentinel monitor mymaster 192.168.1.105 6381 2
sentinel auth-pass mymaster your_password
sentinel down-after-milliseconds mymaster 5000
sentinel failover-timeout mymaster 10000
sentinel parallel-syncs mymaster 1
sentinel deny-scripts-reconfig yes
  • mymaster:为这个组名,如果客户端用哨兵连接时需要这个值
  • 192.168.1.105 6379 2:这个ip为主节点提供访问的IP端口配置,最后的2是主节点嘎了,二个哨兵同时确认时切换
  • 这里要说明一下的是,如果用哨兵模式连接,这个IP会返回给连接客户端,所以要配置客户端能访问的外网IP

docker-compose.yml文件

六6个写到一个里面了,网络用的是host,也可以分开配置,要注意启动顺序,先启动主、再是从,最后是哨兵。(若是Redis,把valkey/valkey镜像换成redis)

version: '3.8'

services:
  valkey-master:
    image: valkey/valkey:9.0.1-alpine3.23
    container_name: valkey-master
    network_mode: "host"
    volumes:
      - ./conf/valkey-master.conf:/etc/valkey/valkey.conf
      - valkey-master-data:/data
    command: ["valkey-server", "/etc/valkey/valkey.conf"]

  valkey-replica1:
    image: valkey/valkey:9.0.1-alpine3.23
    container_name: valkey-replica1
    network_mode: "host"
    volumes:
      - ./conf/valkey-replica1.conf:/etc/valkey/valkey.conf
      - valkey-replica1-data:/data
    command: ["valkey-server", "/etc/valkey/valkey.conf"]
    depends_on:
      - valkey-master

  valkey-replica2:
    image: valkey/valkey:9.0.1-alpine3.23
    container_name: valkey-replica2
    network_mode: "host"
    volumes:
      - ./conf/valkey-replica2.conf:/etc/valkey/valkey.conf
      - valkey-replica2-data:/data
    command: ["valkey-server", "/etc/valkey/valkey.conf"]
    depends_on:
      - valkey-master

  sentinel1:
    image: valkey/valkey:9.0.1-alpine3.23
    container_name: valkey-sentinel1
    network_mode: "host"
    volumes:
      - ./conf/sentinel1.conf:/etc/valkey/sentinel.conf
    command: ["valkey-sentinel", "/etc/valkey/sentinel.conf"]
    depends_on:
      - valkey-master
      - valkey-replica1
      - valkey-replica2

  sentinel2:
    image: valkey/valkey:9.0.1-alpine3.23
    container_name: valkey-sentinel2
    network_mode: "host"
    volumes:
      - ./conf/sentinel2.conf:/etc/valkey/sentinel.conf
    command: ["valkey-sentinel", "/etc/valkey/sentinel.conf"]
    depends_on:
      - valkey-master
      - valkey-replica1
      - valkey-replica2

  sentinel3:
    image: valkey/valkey:9.0.1-alpine3.23
    container_name: valkey-sentinel3
    network_mode: "host"
    volumes:
      - ./conf/sentinel3.conf:/etc/valkey/sentinel.conf
    command: ["valkey-sentinel", "/etc/valkey/sentinel.conf"]
    depends_on:
      - valkey-master
      - valkey-replica1
      - valkey-replica2

volumes:
  valkey-master-data:
  valkey-replica1-data:
  valkey-replica2-data:

测试

  • 查看主从状态
docker exec -it valkey-master valkey-cli -a your_password INFO replication

  • 查看哨兵监控状态
docker exec -it valkey-sentinel1 valkey-cli -p 26379 SENTINEL master mymaster
docker exec -it valkey-sentinel1 valkey-cli -p 26379 SENTINEL slaves mymaster
docker exec -it valkey-sentinel1 valkey-cli -p 26379 SENTINEL sentinels mymaster
  • 用局域网内另一台Win设备中TinyRDM的哨兵模式,链接192.168.1.105:26379,测试成功

0
  1. 支付宝打赏

    qrcode alipay
  2. 微信打赏

    qrcode weixin

评论区