当我试图从本地访问在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,因此无法连接并且返回错误。

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

使用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

bannerAds