mesos/marathon配置marathon lb、web应用程序一个ip地址和url

neekobn8  于 2021-06-26  发布在  Mesos
关注(0)|答案(1)|浏览(458)

我想配置/连接马拉松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文件时没有编写必需的变量?或者这个文件是不必要的?
我将非常感谢你的帮助。

xpcnnkqh

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 因为这个,我必须假设你没有用这个启动mlb options.json . 如果你能从marathon获得实际的应用程序定义,那么很明显,问题出在哪里。我的第一个猜测是 "bind-http-https":false 以及 "role":"" 未设置值。
祝你好运!

相关问题