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