Marathon-lb是个基于HAProxy的快速代理和负载均衡。他能为基于TCP和HTTP协议的应用提供代理和负载均衡,此外还支持SSL、健康检查、HTTP压缩、Lua脚本等特性。Marathon-lb通过Marathon的EventBus可以自动获取Marathon上每个应用的信息,并且能够为每组应用生成HAProxy配置。不同于通过域名机制来发现服务的Mesos-DNS,Marathon-lb是通过servicePort服务端口来发现服务外,另外,还可以通过VHOST来访问服务。
安装与运行
从docker公共仓库可以直接下载marathon-lb的容器镜像,下载之后的镜像可以直接用run命令运行,也可以将其跑在Marathon上面。我在测试环境是用Marathon来跑到Marathon-lb,其json的配置文件如下:
{
"id": "/test/marathon-lb",
"cmd": null,
"cpus": 0.5,
"mem": 128,
"disk": 0,
"instances": 1,
"container": {
"type": "DOCKER",
"volumes": [],
"docker": {
"image": "marathon-lb",
"network": "HOST",
"privileged": true,
"parameters": [],
"forcePullImage": true
}
},
"portDefinitions": [
{
"port": 0,
"protocol": "tcp",
"labels": {}
}
],
"args": [
"sse",
"-m",
"http://192.168.0.101:8080",
"-m",
"http://192.168.0.102:8080",
"-m",
"http://192.168.0.103:8080",
"--group",
"testgp"
]
}
这样Marathon-lb就可以以在Marathon上运行起来了。如果应用希望使用这个Marathon-lb,那么在创建时需要指定两个参数:HAPROXY_GROUP和HAPROXY_{n}_VHOST。
github上有一下说明文档,可以参考学习:
https://github.com/mesosphere/marathon-lb/blob/master/Longhelp.md#templates
后续再补充…