1

基本上,我正在尝试设置一个 Redis-sentinel docker 实例,并希望从我的应用程序容器中进行调用。我正在运行的问题是 - redis-sentinel 容器链接到应用程序容器。

因此,最初应用程序向哨兵进程询问有关 redis 主服务器的信息。然后哨兵说它是“127.0.0.1”。但是应用程序容器假定它是容器本地的。这可以通过在哨兵进程开始时传递的announce-ip/announce-port 参数来克服。然而,问题是这样的——

redis-sentinel 容器尝试在链接建立之前启动。因此,即使在哨兵进程启动网络接口期间,链接 IP 也不可用。

我能想到的一种解决方案是忙于等待网络接口建立。因此,问题归结为“源容器如何发现其新建立的网络接口?是否有任何 docker 设置在源容器上以便它发现不同的链接?”

链接都在 docker-compose 文件中进行管理。

如果还有其他简单的解决方案,我也欢迎尝试。

4

2 回答 2

0

不需要自定义哨兵图像,也不需要搞乱网络。请参阅我的使用Spring Data Redisbitnami/redisbitnami/redis-sentinel图像的redis-ha-learning项目。Docker Compose 文件在这里。我的代码根据 Docker Compose 容器名称自动检测哨兵。

于 2020-11-16T06:46:51.123 回答
-1

因此,对我有用的解决方案只是读取源容器上的 /etc/hosts 文件。我忙于等待链接建立,然后使用该网络接口 IP 启动哨兵进程。这只是权宜之计,不可扩展。如本文所述,Redis-sentinel 仍无法以 dockerizable 格式进行生产。所以我决定在物理主机上安装 Redis/sentinel。

于 2016-02-11T14:28:14.947 回答