Marahon-lb向DC/OS环境提供服务发现即负载均衡能力,不同的使用场景可以利用其不同的发现机制。

Marahon-lb安装以后,针对应用程序部署过程中,需要配置一个特殊标签HAPROXY_GROUP=external,这个标签通知 marathon-lb是否需要暴露这个应用。 

有三种方式通过marathon-lb来实现发现并访问一个应用。

(1)Virtual hosts模式

在应用的配置项中,添加特殊标签HAPROXY_GROUP和HAPROXY_0_VHOST并启动应用实例,而后在访问端按照域名的方式访问Marahon-lb所在地址(如果在本地可以配置hosts中域名和ip的对应关系),便会自动实现服务的发现,并按照实例的访问负载,访问到其中一个实例当中。这种方式是自动按照80和443端口访问应用的映射后端口。


1. "labels":{  
2.    "HAPROXY_GROUP":"external",  
3.    "HAPROXY_0_VHOST":"testapp1.mesos.info"  
4.  }



(2)Virtual IP模式

在应用的配置项中,添加特殊标签HAPROXY_GROUP,并且在端口映射时,填写固定的虚拟IP:PORT后,在DC/OS环境的任何Node下,都可以直接以该IP:PORT形式访问到该应用的对应端口服务。

负载均衡转发后端 负载均衡 服务发现_负载均衡转发后端

(2)服务端口(Service Port)模式

在应用的配置项中,添加特殊标签HAPROXY_GROUP,并且在端口映射时,配置各映射端口的Service Port,访问Marahon-lb所在的 IP:ServicePort,便会自动实现服务的发现,并按照实例的访问负载,访问到其中一个实例当中。这种方式对应于该应用的映射端口。

上述三种方法的应用访问,都会实现一个应用被开启多个实例,而且跨越多个Agnet的情况,对于访问端,不需要考虑应用的具体事例位置、所在Agnet的位置、以及有多少个实例等信息,Marahon-lb会自己做到服务发现,以及访问时的负载情况,自动的、动态的指定到某一个合适的实例上、并且做好了端口匹配。

第一和第二个方法更适合DC/OS内部应用之间的访问,而第三个方式,适合DC/OS被通向外网的硬件BL配置使用。这样便能实现外网访问某一端口,自动适应匹配到DC/OS环境中具体的一个应用实例服务。做到了对外负载均衡和高可用,对内弹性扩展、资源统一化调度、管理、和服务的自恢复能力。