Spring Data RedisでSentinelに接続する
可用性を確保するためにRedis+Sentinelを利用している場合は、
クライアントアプリケーションから直接Redisのマスタを参照せずにクライアントライブラリに対して
Sentinelのノード情報を教えてあげることでマスターがFail overしたときに自動的にクライントが
Fail overに追従できます。
Spring Data Redisを使ってSentinelの設定を行う方法を説明ましす。
参考(5.4. Redis Sentinel Support):
http://docs.spring.io/spring-data/redis/docs/current/reference/html/#redis:sentinel
@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); }
こうすることでクラスタの名前(mymaster)とSentinelのノード(普通は3台以上)を定義できますが、
ハードコーディングはしませんよね?
application.propertiesに定義できます。
spring.redis.sentinel.master: mymaster spring.redis.sentinel.nodes: 127.0.0.1:26379,127.0.0.1:26380
設定ファイルにsentinelの情報を逃すとSpringが設定情報を注入してくれます。
@Bean public RedisConnectionFactory jedisConnectionFactory() { return new JedisConnectionFactory(); }