redis如何搭建哨兵集群(docker,不同机器部署的redis和哨兵)
1、sentinel.conf文件
每个哨兵 在启动之前必须删除下面代码中我所标识的部分,下面的日志你如果挂载了在本地,你使用docker logs redis-sentinel是看不到的,切记!!!
# 保持Redis默认风格的配置
bind 0.0.0.0
port 26379
# Docker必须使用前台模式
daemonize no
# 匹配默认PID路径
pidfile "/var/run/redis/redis-sentinel.pid"
# 匹配默认日志路径
#logfile "sentinel.log"
# 默认数据目录
dir "/data"# 监控配置
sentinel auth-pass mymaster 123456
sentinel monitor mymaster 192.168.1.33 6379 2# 必要的哨兵参数protected-mode no# Generated by CONFIG REWRITE
# 以下的内容需要在部署时删除,哨兵自动生成
latency-tracking-info-percentiles 50 99 99.9
user default on nopass sanitize-payload ~* &* +@all
sentinel myid 80e8aa4318339fa07a278c6c924097110eac1568
sentinel config-epoch mymaster 0
sentinel leader-epoch mymaster 0
sentinel current-epoch 0sentinel known-replica mymaster 192.168.1.35 6379sentinel known-replica mymaster 192.168.1.34 6379sentinel known-sentinel mymaster 172.20.0.2 26379 be184d4862f51ccb2ee695587357d5bdfefd358dsentinel known-sentinel mymaster 172.30.0.2 26379 143c4911f7f899753590a9954fd05bb40696b5c8
集群中主节点从节点密码必须一致
2、docker-compose.yml文件
services:redis-sentinel:image: redis:latestcontainer_name: redis-sentinelports:- "26379:26379"# 使用默认命令格式,仅指定配置文件command: redis-sentinel /etc/redis/sentinel.confvolumes:# 挂载目录而非直接挂载文件,符合Redis默认目录结构- ./data:/data- ./conf:/etc/redisrestart: always
3、一些命令
# 进入任意一个哨兵容器
docker exec -it redis-sentinel redis-cli -p 26379# 查看主节点状态
sentinel master mymaster# 查看所有从节点状态
sentinel slaves mymaster# 查看所有哨兵节点
sentinel sentinels mymaster# 获取当前主节点地址
sentinel get-master-addr-by-name mymaster