Docker和领事通过例子:需要澄清
我正在与Consul学习Docker-Swarm,发现了一些我不太了解的问题。 基本上,我用Consul Sevice Discovery创build了一个Docker-Swarm集群(node-01和node-02)。 然后,我运行一个多容器应用程序(快速应用程序与Mongo),我可以看到它正在节点02上运行。 为了运行它,我必须进入并find我的node-02的IP地址,然后打开浏览器。
它工作正常,只是我期望我可以去一些虚拟IP(或DNS),并且在这个例子中,Consul服务(或Swarm)会将它转换成正确的IP地址node-02。
接下来的一点是,当我loginConsulnetworking用户界面时,我期待看到“节点”菜单下的节点,但似乎并非如此。 我也希望能够看到我在node-01和node-02上运行的“应用程序”或“服务”,但情况并非如此。
我的问题是:
- 有人可以解释为什么我需要手动找出在我的应用程序正在运行的群集中的哪个节点。 无法想象这是在更大的部署中完成的。
- 有人可以解释为什么我在Consul UI中看不到“节点”和“服务”吗?
注意:虽然我一直在为博客文章(截图)logging完整设置,但希望查看更多详细信息,所以尽量缩短。 转到博客文章
问题1
我想访问服务,而不必使用Swarm代理的IP地址
解
这是可行的,你只需要在容器中启动一个反向代理 (如nginx) ( 这里是官方的nginx镜像 )。 在此容器启动时,使用选项 – --link
与应用程序的名称。 因此,这个容器的IP地址将被添加到反向代理容器的文件/etc/hosts
中(请记住使用--name
和--hostname
)。 在特定节点上运行此反向代理容器。 所以摆脱IP地址问题的解决scheme是部署另一个容器在特定的节点(然后特定的IP地址)? 是! 但使用 – --link
将使这个问题可扩展;)
问题2
我期待看到“节点”菜单下的节点,但似乎并非如此。
你的意思是? 你期待什么? 你需要查询k,v-storage数据库吗?
检查这个: https : //github.com/vmudigal/microservices-sample
Microservices Sample Architecture