Docker 如何配置Marathon lb以平衡主机网络中启动的服务的负载?

Docker 如何配置Marathon lb以平衡主机网络中启动的服务的负载?,docker,marathon,dcos,Docker,Marathon,Dcos,我有一个由DC/OS管理的集群和一个停靠服务,我想通过Marathon部署它。我已经有了一个marathon lb,用于服务发现和其他现有服务的负载平衡。所有这些服务都是使用网桥网络部署的 新服务公开多个端口。端口A用于服务实例之间的通信,端口B用于接收来自世界各地的请求。我想使用主机(而不是BRIGE)网络来部署服务 我想知道如何配置服务的json,以便marathon lb实现负载平衡并对外公开端口B 我已经尝试过各种场景和配置,但都没有成功。我构建的json如下所示 { "id": "

我有一个由DC/OS管理的集群和一个停靠服务,我想通过Marathon部署它。我已经有了一个marathon lb,用于服务发现和其他现有服务的负载平衡。所有这些服务都是使用网桥网络部署的

新服务公开多个端口。端口A用于服务实例之间的通信,端口B用于接收来自世界各地的请求。我想使用主机(而不是BRIGE)网络来部署服务

我想知道如何配置服务的json,以便marathon lb实现负载平衡并对外公开端口B

我已经尝试过各种场景和配置,但都没有成功。我构建的json如下所示

{
  "id": "/cassandra-seed",   
  "cpus": 1.5,
  "mem": 8192,
  "disk": 0,
  "instances": 1,
  "container": {
    "type": "DOCKER",
    "docker": {
      "image": "cassandra:2.2.3",
      "network": "HOST",
      "requirePorts": true,
      "privileged": true,
      "forcePullImage": false     
    }
  },
  "constraints": [["hostname","UNIQUE"]],
  "labels": {
    "HAPROXY_GROUP": "external"
  },
  "portDefinitions": [
    { "port": portA,"protocol": "tcp"},
    { "port": portB,"protocol": "tcp"}
  ]
}
其中指出,通过在PortDefinitions中显式定义端口B并将RequireReports设置为true,服务端口等于主机端口。此外,我还部署了新版本的marathon lb,其中port B是它的portDefinitions部分(违反了10000-10100默认范围)

因此,我假设通过在服务json中提供HAPROXY_组标签,marathon lb将根据需要公开端口B。然而,情况似乎并非如此。如果我部署服务并
curlhttp://marathon-lb.marathon.mesos:portB
响应为“来自服务器的空回复”。但是,如果我
curlhttp://physicalNodeIP:portB
我可以连接到该服务的实例


提前感谢您。

看起来您在应用程序定义的错误部分有
requirereports
。它应该位于顶层,如下所示:

{
  "id": "/cassandra-seed",   
  "cpus": 1.5,
  "mem": 8192,
  "disk": 0,
  "instances": 1,
  "container": {
    "type": "DOCKER",
    "docker": {
      "image": "cassandra:2.2.3",
      "network": "HOST",
      "privileged": true,
      "forcePullImage": false     
    }
  },
  "constraints": [["hostname","UNIQUE"]],
  "labels": {
    "HAPROXY_GROUP": "external"
  },
  "requirePorts": true,
  "portDefinitions": [
    { "port": portA,"protocol": "tcp"},
    { "port": portB,"protocol": "tcp"}
  ]
}

作为旁观者,你应该考虑使用Casdand框架,而不是在马拉松上运行卡桑德拉。< / P >这个问题看起来很可疑。任何在DC/OS和Marathon方面有更多经验的人都可以对它们的相似性进行评论,如果它们是重复的,可以将其中一个标记为重复的?在我看来,它们是不同的问题。这是指任何服务所需的配置,以便在主机网络模式下部署时通过Marathon lb实现负载平衡。stackoverflow.com/q/41586960/1305344特别提到Cassandra服务、在主机和网桥模式下分配给容器和服务的IP以及两个Cassandra节点在每种情况下如何闲聊。