[TOC] sentinel是为了解决主从模式下,如果主节点由于故障下线了,自动升级从节点为主节点。 每个sentinel节点其实就是一个redis实例,与主从节点不同的是sentinel节点作用是用于监控redis数据节点的,而sentinel节点集合则表示监控一组主从redis实例多个sentinel监控节点的集合,比如有主节点master和从节点slave-1、slave-2。 本例子基于主从复制[主从复制](./主从复制.md) sentinel主节点端口为26379,sentinel从节点端口为26380 ## 一、主节点配置 `vim /opt/redis/conf/sentinel-26379.conf` ~~~ port 26379 logfile "26379.log" sentinel myid 5fe8c1456f5080df3e485d44447e812e97ecd4d1 sentinel deny-scripts-reconfig yes daemonize no pidfile "/var/run/redis-sentinel.pid" dir "/tmp" sentinel monitor mymaster 192.168.28.130 6379 1 sentinel down-after-milliseconds mymaster 5000 sentinel auth-pass mymaster 1q2w3e4r ~~~ > **myid**:唯一id,sentinel集群的各自myid参数必需唯一 > **sentinel monitor**:只需配置主节点即刻,端口后面的数字代表指明当有多少个sentinel认为一个master失效时,master才算真正失效 > **sentinel down-after-milliseconds**:需要多少失效时间,一个master才会被这个sentinel主观地认为是不可用的(默认30秒) > **sentinel auth-pass**:设置连接master和slave时的密码 ## 二、主节点启动文件 `vim start-sentinel-6379.sh` ~~~ PORT=26379 docker stop redis-sentinel-${PORT} docker rm redis-sentinel-${PORT} docker run --name redis-sentinel-${PORT} \ -p ${PORT}:${PORT} \ -v /opt/redis/conf/sentinel-${PORT}.conf:/etc/redis/sentinel.conf \ -v /opt/redis/data:/data \ -d redis:4.0 \ redis-sentinel /etc/redis/sentinel.conf ~~~ ## 三、从节点配置 `vim /opt/redis/conf/sentinel-26380.conf` ~~~ port 26380 logfile "26380.log" sentinel myid 5fe8c1456f5080df3e485d44447e812e97ecd4d2 sentinel deny-scripts-reconfig yes daemonize no pidfile "/var/run/redis-sentinel.pid" dir "/tmp" sentinel monitor mymaster 192.168.28.130 6379 1 sentinel down-after-milliseconds mymaster 5000 sentinel auth-pass mymaster 1q2w3e4r ~~~ ## 四、从节点启动文件 `vim start-sentinel-6380.sh` ~~~ PORT=26380 docker stop redis-sentinel-${PORT} docker rm redis-sentinel-${PORT} docker run --name redis-sentinel-${PORT} \ -p ${PORT}:${PORT} \ -v /opt/redis/conf/sentinel-${PORT}.conf:/etc/redis/sentinel.conf \ -v /opt/redis/data:/data \ -d redis:4.0 \ redis-sentinel /etc/redis/sentinel.conf ~~~ ## 五、查看哨兵状态 1. 进入主节点容器 `docker exec -it redis-sentinel-26379 bash` 2. 登录redis `redis-cli -p 26379` 3. 查看sentinel信息 `info sentinel` ## 六、spring boot 工程集成哨兵集群 把单机的`spring.redis.host`和`spring.redis.port`配置改成以下 ~~~ ##### redis配置 spring.redis.sentinel.master=mymaster spring.redis.sentinel.nodes=192.168.28.130:26379,192.168.28.130:26380 spring.redis.password=1q2w3e4r ~~~