2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

docker-compose上で起動しているredis-clusterにローカルからアクセスしようとしたらハマってしまった件

Posted at

#背景
springで作成したアプリのセッションをredis-clusterで管理しようとしたらハマってしまいました。
springを起動しようとすると
以下のようなエラーが発生していて、内容的には「redisの情報が取れませんでしたよ」と言うことみたいで、
なぜ情報が取れていないのかがわかりませんでした。

org.springframework.data.redis.ClusterStateFailureException: Could not retrieve cluster information. CLUSTER NODES returned with error.

なので、忘れないようにこちらに残しておきます。

※ あくまでredis-clusterでハマった話なので、今回はspringとどうやって接続したかなどは書きません。ご了承ください。

#環境
redis 6.0.10

redis.conf
#クラスターモードに設定し、接続できるIPを開放
cluster-enabled      yes
cluster-node-timeout 8000
bind 0.0.0.0

#原因

dockerのbridgeネットワーク上にあるredisに外部からアクセスした時に、「ここにリダイレクトしろ」とdockerネットワーク内のIPアドレスとポートがクライアントに返ってくるのだけど、返ってきたIPとポートは外部アクセスするときのIPではなく、dockerネットワーク内のIPなので接続ができずエラーが返ってきていました。

https---get-reddie.com-assets-img-blog-redis4-redis3_nat.png

引用サイト: A Redis Cluster of any size using Docker Compose and Redis 4.0 port-forwarding
https://get-reddie.com/blog/redis4-cluster-docker-compose/

詳しい内容は上記イメージを引用したサイトをお読みください。

#解決策
簡潔に言うと
redis4.0以降では
下記の設定をredisのconfigファイルに追加すれば良いと言うことに気付きました。

  • cluster-announce-ip: 制御するredis-cluster のipアドレス
redis.conf
#クラスターモードに設定し、接続できるIPを開放
cluster-enabled      yes
cluster-node-timeout 8000
bind 0.0.0.0

#redisクラスターのノードのリダイレクトさせるときのIPアドレス
#今回はローカルとの接続がしたいので127.0.0.1に設定
cluster-announce-ip  127.0.0.1

cluster-announce-ipをconfigに追加することで、返ってくる「ここにリダイレクトしろ」のIPアドレスがcluster-announce-ipの中身に変換されて返ってきます。これで正常にredisの情報の取得」ができました。

#参考、引用情報
以下の記事が参考になりました。

A Redis Cluster of any size using Docker Compose and Redis 4.0 port-forwarding
https://get-reddie.com/blog/redis4-cluster-docker-compose/
日本語訳版
https://qiita.com/Reddie_Japan/items/75d26bfc0dfaeab6a5c3

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?