2017-12-14 38 views
0

Spring Redisとクライアントを接続する際に問題があります。 私はホスト名を持つプロキシを持っており、3つのredisノードがありますが、利用できるのは1つだけです。 私は接続を作成するためにLettuceConnectionFactoryを使用しています。アプリケーションがクライアントに接続しようとすると、私は例外だ :私はRedisのデスクトップマネージャから接続しようとした場合、それが動作する...代わりにSpringデータredisがRedis DNSプロキシに接続できません

Caused by: java.lang.RuntimeException: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'enableRedisKeyspaceNotificationsInitializer' defined in org.springframework.session.data.redis.config.annotation.web.http.RedisHttpSessionConfiguration: Invocation of init method failed; nested exception is org.springframework.data.redis.RedisConnectionFailureException: Unable to connect to Redis on unavailableIP:13376; nested exception is com.lambdaworks.redis.RedisConnectionException: Unable to connect to /unavailableIP:13376 
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'enableRedisKeyspaceNotificationsInitializer' defined in org.springframework.session.data.redis.config.annotation.web.http.RedisHttpSessionConfiguration: Invocation of init method failed; nested exception is org.springframework.data.redis.RedisConnectionFailureException: Unable to connect to Redis on unavailableIP:13376; nested exception is com.lambdaworks.redis.RedisConnectionException: Unable to connect to /unavailableIP:13376 
Caused by: org.springframework.data.redis.RedisConnectionFailureException: Unable to connect to Redis on unavailableIP:13376; nested exception is com.lambdaworks.redis.RedisConnectionException: Unable to connect to /unavailableIP:13376 
Caused by: com.lambdaworks.redis.RedisConnectionException: Unable to connect to /unavailableIP:13376 
Caused by: java.net.ConnectException: Connection refused: no further information: /unavailableIP:13376"}} 

を...

は適用する方法はあります利用可能なIPを取得するために「再試行」しますか?

答えて

0

HA for JavaでDNSプロキシを使用すると、コード/ランタイムに若干の調整が必要になることがあります。 JavaはDNS応答を一定時間キャッシュします。これにより、DNSが更新されたIPアドレスで応答するにもかかわらず、Javaコードが古いIPアドレスに解決される可能性があります。また、可用性チェックの実装に応じて、データがリフレッシュされるまでバックエンドには時間がかかりますが、レタスの切断された接続はすぐに再接続しようとします。

私は、ドロップ/タイムアウトした接続にしか反応できないので、DNSベースのバランサを使用しないことを提案したいと思います。より積極的なアプローチ(Redis Sentinelなど)を使用する方が良い選択肢です。

接続/再接続するたびにアドレスを解決するカスタムDNSを使ってLettuceのDnsResolverを設定しようとすることができます。

も参照してください:

関連する問題