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,测试成功

评论区