Redis Sentinel配置与使用

下载Redis后,一般都会有sentinel.conf配置文件,里面有sentinel的配置同时配上了文档说明。

配置

一般Redis Sentinel的配置如下:

# 指定监听的Redis Master地址,不需要指定slave的地址,sentinel连接到master之后可以自行获取
# 语法:sentinel monitor    
# quorum是当master无法访问的时候,需要几台sentinel确认才同意master是不可用的
sentinel monitor mymaster 127.0.0.1 6379 2

# 配置格式:sentinel   

# down-after-milliseconds,在 60s内,sentinel一直无法ping通mymaster的时候,认为mymaster是不可用的
sentinel down-after-milliseconds mymaster 60000

# 指定当故障发生的时候,进行恢复的超时时间,当failover开始后,在此时间内仍然没有触发任何failover操作,当前sentinel  将会认为此次failoer失败
sentinel failover-timeout mymaster 180000

# 当某台slave被提升为新的master的时候,同一时间有几台slave会更新配置,值越小越好,如果值设的过大,可能导致master阻塞。
sentinel parallel-syncs mymaster 1

sentinel monitor resque 192.168.1.3 6380 4
sentinel down-after-milliseconds resque 10000
sentinel failover-timeout resque 180000
sentinel parallel-syncs resque 5

Sentinel在发现Slave之后,或者提升Slave为Master节点之后,或者新加入了Sentinel节点的时候会自动的更新配置文件。

其他配置:

# 开启守护进程模式
daemonize yes

# 关闭保护模式
protected-mode no

# 让Sentinel只工作在/tmp目录下,减少安全隐患
dir "/tmp"

# 设置sentinel用于连接master的密码,如果redis配置了密码,那这里必须配置认证,否则不能自动切换
sentinel auth-pass  

Spring Redis配置

1 在配置文件中指定sentinel的地址,如果有多个用逗号分隔sentinel.nodes

spring.redis.sentinel.master=mymaster
spring.redis.sentinel.nodes=192.168.26.129:26379
spring.redis.password=123456

如果不想使用属性配置可以自行在代码中创建:

/**
 * Jedis
 */
@Bean
public RedisConnectionFactory jedisConnectionFactory() {
  RedisSentinelConfiguration sentinelConfig = new RedisSentinelConfiguration()
  .master("mymaster")
  .sentinel("127.0.0.1", 26379)
  .sentinel("127.0.0.1", 26380);
  return new JedisConnectionFactory(sentinelConfig);
}

2 配置下RedisTemplate的序列器,不然容易出现一些奇怪字符开头的key。如:

Redis Sentinel配置与使用_第1张图片
image.png
 @Bean
    public RedisTemplate redisTemplate(RedisConnectionFactory redisConnectionFactory) {
        RedisTemplate redisTemplate = new RedisTemplate<>();
        redisTemplate.setConnectionFactory(redisConnectionFactory);
        RedisSerializer stringSerializer = new StringRedisSerializer();
        redisTemplate.setKeySerializer(stringSerializer);
        redisTemplate.setValueSerializer(stringSerializer);
        redisTemplate.setHashKeySerializer(stringSerializer);
        redisTemplate.setHashValueSerializer(stringSerializer);
        return redisTemplate;
    }

3 注入RedisTemplate使用。

最后

关于Redis Sentinel的配置与使用就到这里了。

你可能感兴趣的:(Redis Sentinel配置与使用)