marathon参考(3)服务发现和负载均衡

当你的应用启动并且运行时,你需要有个方法可以和服务取得联系,不管一个集群中的其他应用,还是来自外部的客户端。

有一些方法可以实现:
Mesos-DNS通过域名称系统(DNS)提供服务发现。
Marathon-lb使用HAProxy提供基于端口的服务发现,是一个轻量级的TCP/HTTP代理。
haproxy-marathon-bridge是一个配置本地HAProxy的实例。目前已经弃用。

Mesos-DNS

Mesos-DNS对每个mesos任务生成一个SRV记录(包括marathon应用实例)并且把这些记录翻译成机器上运行应用的IP和端口号。

当应用通过多个框架加载,而不仅仅是marathon,Mesos-DNS是非常有用的。每个容器都有个IP,类似Project Calico的解决方案。在marathon中你可以随机分配端口号。

参看Mesos-DNS相关文档,获得更多信息。

Marathon-lb

实现服务发现的另外一种方法是在集群的每个主机上运行一个TCP/HTTP的代理,透明地连接本地主机上的静态服务端口转发到个人的动态分配主机/端口组合马拉松应用程序实例(运行便任务)。客户端很容易连接到服务端口,并且不需要知道服务发现实现的具体细节。如果所有的应用通过marathon加装,那这个方式就足够了。

Marathon-lb是一个docker化的应用,包含HAProxy,使用marathon rest api重新生成HAProxy配置。它支持高级功能像SSL卸载,粘性的连接,和基于VHost负载平衡,允许为你的marathon应用指定虚拟host。

当使用marathon-lb,注意requirePosts=true不是不须设置,其他的说明在ports documentation中查阅。

更多的内容请查阅
https://github.com/mesosphere/marathon-lb
https://docs.mesosphere.com/administration/service-discovery/service-discovery-and-load-balancing-with-marathon-lb/

haproxy-marathon-bridge(已经弃用)

marathon有个简单的脚步叫做haproxy-marathon-bridge,它使用marathon rest api创建一个HAProxy配置。haproxy-marathon-bridge提供最小功能,它是对初学者最容易理解,也可以作为一个起点来提供一个自定义的实现。注意现在这个脚步已经弃用,不要在生产环境使用。对于生产环境,请使用marathon-lb。

HAProxy的配置请参考http://cbonte.github.io/haproxy-dconv/configuration-1.5.html

原文https://mesosphere.github.io/marathon/docs/service-discovery-load-balancing.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章