1. senital.conf文件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
| port 26379
#sentinel监控的redis的名字、IP和端口,最后一个数字是sentinel做决策的时候需要投赞同票的最少的sentinel的数量。 sentinel monitor mymaster 127.0.0.1 6379 1
#如果多久没联系上redis-servevr,认为这个redis-server进入到失效(SDOWN)状态。 sentinel down-after-milliseconds mymaster 10000
#可选的安全连接密码 #sentinel auth-pass mymaster xxx
#failover(提升一个slave成为master)过期时间,如果超过这个时间没触发成功failover,sentinel会认为failover失败。 sentinel failover-timeout mymaster 30000
#选项指定了在执行故障转移时, 最多可以有多少个从服务器同时对新的主服务器进行同步, 这个数字越小, 完成故障转移所需的时间就越长。 sentinel config-epoch mymaster 2
#当failover时,可以指定一个“通知”脚本用来告知当前集群的情况。 #脚本被允许执行的最大时间为60秒,如果超时,脚本将会被终止(KILL) #sentinel notification-script mymaster /var/redis/notify.sh
#failover之后重配置客户端 # sentinel client-reconfig-script <master-name> <script-path> # Generated by CONFIG REWRITE
|
2. 步骤
spring配置:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| <bean id="jedisPoolConfig" class="redis.clients.jedis.JedisPoolConfig"> <property name="maxTotal" value="200" /> <property name="maxIdle" value="30" /> <property name="maxWaitMillis" value="30000" /> <property name="testOnBorrow" value="false" /> <property name="testOnReturn" value="true" /> </bean>
<bean id="jedisPool" class="redis.clients.jedis.JedisSentinelPool"> <constructor-arg index="0" value="mymaster" /> <constructor-arg index="1"> <set> <value>127.0.0.1:26379</value> <value>127.0.0.1:36379</value> </set> </constructor-arg> <constructor-arg index="2" ref="jedisPoolConfig" /> </bean>
|
3. 步骤
启动sentinel:
1
| redis-server ./sentinel.conf --sentinel
|
也可以单独指定端口,这里启动两个哨兵
启动redis主从,初始启动6379的redis实例为主,7379为从:
1 2
| redis-server redis-server
|
通过redis-cli将7379配置为6379的从:
1 2
| redis-cli -p 7379 > SLAVEOF 127.0.0.1 6379
|
在哨兵26379中查看当前主服务器相关信息:
1 2
| redis-cli -p 26379 127.0.0.1:26379> sentinel masters
|
4. 测试
随意杀掉两个哨兵和两个redis主从实例的一个查看是否工作正常。