我是Service Discovery和集群系统的新手。我开始尝试使用Mesos和Marathon来部署Docker容器,Marathon REST API和UI似乎做得很好。
我的问题是部署服务的实际发现。出于测试目的,我通过Marathon部署了一个缩放到3个实例的Kafka集群,因为我使用了MongoDB测试集群。 Mesos-DNS客户端给我一个像kafka.marathon.mesos
和mongo.marathon.mesos
这样的记录,它意味着从主机到容器的动态映射端口。问题是,我的客户端明确需要有关目标端口的信息。是否有一种通用方法可以自动和动态地从服务中获取这些端口信息?那些暴露多个端口的应用程序呢?
到目前为止我的意见: - 执行REST调用以获取有关已部署应用程序的状态,并以某种方式提取相关数据 - 执行DNS SRV查找并以某种方式提取相关数据 - 拥有某种" master",静态绑定到端口,使用动态"客户端"。
我搜索了很多这些信息,但最后大部分教程以手动查找结束,这不是我的目标。
答案 0 :(得分:2)
你发现了。我最近在XebiCon上围绕这个主题给了presentation,并计划发布一篇博文,其中包含有关设置的详细信息。 GitHub回购。对于初学者,您可以查看HTTP API消费部分的Python implementation。
更新:博客文章现已可用here。