2014-12-02 157 views
0

一直让我思考的Docker的一个方面是让不同的容器共同构成一个应用程序的体系结构关于其他IP和主机名称的适当方式。如何让Docker容器向对方广播其IP地址或主机名?

让我们假装我们有一个类似的泊坞部署拓扑:

Topology

每个橙色节点代表的容器。所有容器可能运行在同一台物理机器上,或者每个容器可能有其专用的EC2实例。所有作者节点也可能驻留在一个EC2实例上,并且所有发布者节点都驻留在其自己的EC2实例上。

但是为了这个问题,我们可以假设它们都在Developer的本地机器上运行,或者每个机器运行在它自己的专用EC2实例上。

如何让所有实例获取所有其他实例的IP地址和/或主机名,因为它们来来去去?

因此,当作者2死亡时,作者1,作者N,以及出版商1,2和N应该被通知此事件。同样,当一个新的Publisher加入拓扑时,所有其他实例都应该被通知其IP地址和/或主机名。

我正在寻找适用于本地开发环境的解决方案,以及适用于生产AWS部署的解决方案。理想情况下,相同的解决方案应该可以在本地和AWS上运行。

+0

您可以使用自己的DNS http://serverfault.com/questions/574095 – 2014-12-02 13:53:47

+0

@GünterZöchbauer能否请您提供一个完整的解决方案,而不是指向其他链接?我查看了这个链接,它几乎与我的问题有关或完全回答。 – Behrang 2014-12-02 14:54:10

+0

这就是为什么我只发表评论而不是回答。我不使用AWS,也没有测试过这些。 – 2014-12-02 15:02:59

回答

0

ETCd正是你想要的。 AWS不支持其本地网络上的任何类型的多播或广播流量。 Etcd是CoreOS的一部分,为您提供服务发现框架。它允许您发现节点以及注册节点。

https://github.com/coreos/etcd

+0

etcd是一个配置管理组件,可以使docker容器相互发现。其他选项是consul(https://consul.io/)和zookeeper。 – 2014-12-02 21:22:15

相关问题