我对服务发现和集群系统还不太熟悉。我开始尝试使用Mesos和Marathon来部署Docker容器,Marathon REST API 和 UI 看起来做得很好。
我的问题是实际发现已部署的服务。为了测试目的,我通过Marathon部署了一个扩展到3个实例的Kafka集群,MongoDB测试集群也是如此。 Mesos-DNS客户端给了我一个记录,如kafka.marathon.mesos
和mongo.marathon.mesos
,这意味着从主机到容器的动态映射端口。问题是,我的客户端明确需要有关目标端口的信息。是否有一种通用方法可以自动和动态地获取服务的端口信息?那些暴露多个端口的应用程序怎么办?
我的想法如下: - 做一个REST调用,以获取有关部署应用程序的状态,并提取相关数据 - 进行DNS SRV查找,并提取相关数据 - 拥有某种“主节点”,静态绑定到一个端口,并拥有动态“客户端”。
我搜索了很多关于这些信息的资料,但最终大多数教程都以手动查找结束,这不是我的目标。