私はDC/OSによって管理されるクラスタと、Marathonを介して展開したいドッキングされたサービスを持っています。私はすでに、サービス発見と他の既存のサービスのロードバランシングに使用されているmarathon-lbを持っています。これらのサービスはすべて、BRIDGEネットワークを使用して配備されています。HOSTネットワークで起動したサービスの負荷分散をMarathon-lbに設定する方法はありますか?
新しいサービスでは、複数のポートが公開されています。ポートAはサービスのインスタンス間の通信用であり、ポートBは世界からの要求を受け入れるためのものです。私は、サービスを展開するためにHOST(およびBRIGEではない)ネットワークを使用したいと思います。
私はバランスをロードし、外部ポートB.
を露出させるためにマラソンポンドのためのために、サービスのJSONを構成する方法を知っていただきたいと思い、私はすでに、さまざまなシナリオと構成を試してみましたが、どれも働きました。私が作ったjsonは以下の通りです。 Marathon documentationで
{
"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"}
]
}
明示的portDefitionsのポートBを定義し、trueにrequirePortsを設定することにより、サービスポートは、ポートをホストに等しいことが記載されています。また、ポートBがportDefinitionsセクション(10000〜10100のデフォルト範囲に違反)である新しいバージョンのmarathon-lbを導入しました。
したがって、私は、サービスjsonにHAPROXY_GROUPラベルを付けることによって、marathon-lbがポートBを必要に応じて公開すると想定しました。しかし、これはそうではないようです。私がサービスを展開し、curl http://marathon-lb.marathon.mesos:portB
の場合、応答は「サーバーからの空の応答」です。しかし、もし私がcurl http://physicalNodeIP:portB
私はサービスのインスタンスに接続することができます。
ありがとうございます。
この質問は疑わしいようです。http://stackoverflow.com/q/41586960/1305344 DC/OSとMarathonでより多くの経験を持つ人は誰でも、類似しているとコメントし、重複していると重複しているとマークできますか? –
私の視点では、彼らは異なった質問です。これは、HOSTネットワークモードで展開されたときにMarathon-lbによって負荷分散されるために必要なすべてのサービスに必要な構成を指します。 stackoverflow.com/q/41586960/1305344は、具体的にはカザンドラサービス、ホストとブリッジモードでコンテナとサービスに割り当てられたIP、それぞれのケースでどのように2つのカサンドラノードをゴシップできるかを指します。 – Manolis