当我试图从本地访问在docker-compose上启动的Redis集群时,遇到了一些问题
背景 –
我尝试在使用Spring创建的应用中使用Redis集群管理会话,但遇到了困难。
当我尝试启动Spring时,出现了以下错误,内容似乎是“无法获取Redis信息”,但我不知道为什么无法获取信息。
org.springframework.data.redis.ClusterStateFailureException: Could not retrieve cluster information. CLUSTER NODES returned with error.
所以,为了不忘记,我会在这里留下来。
请谅解,这只是一个关于在使用redis-cluster时遇到的问题,所以本次不会写关于如何连接spring的内容。
环境
Redis 6.0.10 可以进行重写。
#クラスターモードに設定し、接続できるIPを開放
cluster-enabled yes
cluster-node-timeout 8000
bind 0.0.0.0
是我们需要抓紧时间完成工作。
当从外部访问位于Docker的桥接网络上的Redis时,“请重定向到这里”的指令连同Docker网络内的IP地址和端口一起返回给客户端。然而,返回的IP和端口并非外部访问时的IP,而是Docker网络内的IP,因此无法连接并且返回错误。

使用Docker Compose和Redis 4.0端口转发,可以创建任意规模的Redis集群。请参考引用网站:https://get-reddie.com/blog/redis4-cluster-docker-compose/
请阅读引用了上述图像的网站以获取详细内容。
答案可能有很多种。
一种可能的解析是: 解決方案。
简而言之,在Redis 4.0版本之后,我们意识到只需在Redis的配置文件中添加以下设置即可。
- cluster-announce-ip: 制御するredis-cluster のipアドレス
#クラスターモードに設定し、接続できる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添加到配置中,返回的“重定向到此处”的IP地址将转换为cluster-announce-ip的内容并返回。这样就成功获取了Redis信息。
参考、引用资料 ,
这篇文章很有参考价值。
使用Docker Compose和Redis 4.0端口转发的Redis集群,可以是任何规模的集群。
https://get-reddie.com/blog/redis4-cluster-docker-compose/
日本語訳版
https://qiita.com/Reddie_Japan/items/75d26bfc0dfaeab6a5c3