我想配置/连接马拉松lp与简单的网页上运行mesos/maraton。
我想要得到的最终结果是网页在一个ip地址上运行,另一个用户问题应该被分发到下一个应用程序示例。
关于我的基础设施
三节点mesos master和三节点mesos slave,
在我的局域网基础设施中,我有dns activedirectory域
现在我在mesos/marathon中运行示例www应用程序:
{
"id": "/example-www/hello-world",
"cmd": null,
"cpus": 0.5,
"mem": 64,
"disk": 0,
"instances": 4,
"container": {
"type": "DOCKER",
"volumes": [],
"docker": {
"image": "tutum/hello-world",
"network": "BRIDGE",
"portMappings": [
{
"containerPort": 80,
"hostPort": 0,
"servicePort": 10010,
"protocol": "tcp",
"labels": {}
}
],
"privileged": false,
"parameters": [],
"forcePullImage": true
}
},
"healthChecks": [
{
"path": "/",
"protocol": "HTTP",
"portIndex": 0,
"gracePeriodSeconds": 10,
"intervalSeconds": 2,
"timeoutSeconds": 10,
"maxConsecutiveFailures": 10,
"ignoreHttp1xx": false
}
],
"labels": {
"HAPROXY_GROUP": "external",
"HAPROXY_0_VHOST": "service.mesosphere.com",
"HAPROXY_0_BIND_ADDR": "192.168.18.9",
"HAPROXY_0_PORT": "80"
},
"portDefinitions": [
{
"port": 10010,
"protocol": "tcp",
"labels": {}
}
]
}
此web应用程序工作正常-http://oi66.tinypic.com/27y8qco.jpg
现在我要分配这个web应用程序ip地址,例如192.168.18.9。应用程序应该在这个ip地址上可用。但是当我把这个地址放进web浏览器并刷新页面时,我应该为所有应用程序示例(web应用程序的四个示例)分发。
我试过,但我不知道我做错了什么。在其中一个主节点(192.168.18.10)中,我安装了dcos和marathon-lb。
我的步骤:
在mesos/marathon中运行web应用程序
在安装了dcos和marathon lb的mesos主节点(192.168.18.10)之一中,我创建了包含内容的options.json文件
{
"marathon-lb":{
"name":"example-www/lb",
"haproxy-group":"example-www",
"bind-http-https":false,
"role":""
}
}
现在当我在ssh控制台中练习
dcos package install --options=options.json marathon-lb
马拉松lp应用程序的状态仍在等待-屏幕
我阅读了marathonlp文档,尝试了很多方法来修复它,但是每次marathonlp应用程序都处于等待状态。
我做错了什么?也许我在创建option.json文件时没有编写必需的变量?或者这个文件是不必要的?
我将非常感谢你的帮助。
1条答案
按热度按时间xpcnnkqh1#
根据你的描述,很难看出发生了什么。不过,我注意到你
HAPROXY_0_BIND_ADDR
以及HAPROXY_0_PORT
在应用程序上设置为标签。很可能,您试图强制haproxy绑定到的ip实际上不存在于您的代理(从属)上的任何接口上。一般来说,您不会以这种方式强制haproxy绑定到ip。你也不会用
HAPROXY_0_PORT
例外情况除外。我建议您通读文档和这些博客文章,了解mlb的用途:
https://mesosphere.com/blog/2015/12/04/dcos-marathon-lb/httpshttp://mesophere.com/blog/2015/12/13/service-discovery-and-load-balancing-with-dcos-and-marathon-lb-part-2/
我还注意到你截图的内容与你在文章中描述的不符
options.json
因为这个,我必须假设你没有用这个启动mlboptions.json
. 如果你能从marathon获得实际的应用程序定义,那么很明显,问题出在哪里。我的第一个猜测是"bind-http-https":false
以及"role":""
未设置值。祝你好运!