如何使用 Mantl 管理微服务?

How microservices are managed using Mantl?

最近遇到了Mantl ( microservices infrastructure management project by Cisco). Its an opensource one and they have pushed it on github。我不明白他们的基本工作原理。有人对此有任何想法吗?

根据我的理解,Mantl 是 tools/applications 的集合,它们结合在一起创建了一个基于 docker 的内聚应用程序平台。 Mantl 理想地部署在 virtualized/cloud 环境(AWS、OpenStack、GCE)上,但我最近才能够将它部署在裸机上。

Mantl 中的主要组件是 Mesos,它管理 dockers,处理调度和任务隔离。 Marathon 是一个 mesos 框架,用于管理长 运行 任务,例如 Web 服务,这是大多数应用程序驻留的地方。 mesos-marathon 的组合处理应用程序的高可用性、弹性和负载平衡。 consul 将所有东西捆绑在一起,它负责处理服务发现。我使用 consul 为每个应用程序进行查找以相互通信。 Mantl 还包括用于日志记录的 ELK 堆栈,但我还没有成功监控我的任何应用程序。还有 Chronos,其中计划任务是 cron 的句柄。 Traefik 充当反向代理,其中 application/service 端点映射到用于外部服务通信的 URL。

基本上,您的微服务应该在 docker 图像中自包含,通过 consul 查找启动通信并登录到标准 io。然后使用 Marathon API 部署您的应用程序,并在 Marathon UI 中对其进行监控。当部署您的 dockerized-app 时,marathon 将在 consul 中为您注册 docker 图像名称,以及它的公开端口。计划任务应部署在 Chronos 中,您将能够在其中监控 运行 任务和挂起的计划任务。