Redis哨兵Docker设置

时间:2016-02-10 14:18:55

标签: docker docker-compose redis-sentinel

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

所以,最初应用程序询问有关redis master的哨兵进程。然后哨兵说它是“127.0.0.1”。但app容器假定它是容器的本地。这可以通过在sentinel进程开始时传递的announce-ip / announce-port参数来克服。但问题是这个 -

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

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

链接全部在docker-compose文件中管理。

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

2 个答案:

答案 0 :(得分:0)

因此,对我有用的解决方案是简单地读取源容器上的/ etc / hosts文件。我忙着等到链接建立然后使用该网络接口IP来启动哨兵进程。这只是一个停止间隙解决方案,它不具备可扩展性。如此post中所确认的,Redis-sentinel仍然没有以dockerizable格式生成。所以我决定在物理主机上安装Redis / sentinel。

答案 1 :(得分:0)

不需要自定义标记图像,也不需要与网络打乱。使用redis-ha-learningSpring Data Redisbitnami/redis图片查看我的bitnami/redis-sentinel项目。 Docker Compose文件为here。 我的代码会根据Docker Compose容器名称自动检测哨兵。