4

私は Mesos + Marathon を試しており、5 秒ごとにメッセージを無限に記録するシェル スクリプトで構成される小さな「アプリ」を作成することから簡単に始めています。そのアプリをプロビジョニングすると、さまざまなメモリと CPU リソースを割り当てることができるため、次の質問につながります。

Marathon がシェル スクリプトを直接生成している場合、そのスクリプトのリソース使用をどのように制限できますか? そのスクリプトは、利用可能なすべてのリソースを消費するために何でも実行および起動できます。

Docker またはその他の分離メカニズムがプロセスの実行を制限することは理解していますが、これを (明示的に) 構成していません。明示的に構成しなくても、その場である種のコンテナーを作成していますか? OS Xでテストしています。

4

1 に答える 1

7

Mesos は Mac での "Posix" 分離のみをサポートします。これは、実際のリソース制限よりも監視のためのものであるため、Mac で Mesos をテストしても、真のリソース分離を実証することはできません。

Linux マシン/VM で Mesos をテストする場合、以下を設定できます。

--isolation='cgroups/cpu,cgroups/mem'

各スレーブを起動して cgroup 分離を有効にすると、コンテナーが作成され、その中でスクリプト/プロセスが実行されます。cgroups アイソレーターは、コンテナー/プロセスが CPU シェア (固定 CPU ではない) を超えると CPU 使用率を調整し、メモリ制限を超えるとプロセスを強制終了します (コンテナーを破棄します)。

また、Mesos 0.21 は、ネットワーク アイソレーターとプラグ可能なアイソレーター モジュールをサポートするようになったため、独自の GPU アイソレーター、キャッシュ アイソレーターなどを構築できることにも注意してください。

Docker コンテナーライザー (0.20+) を有効にする場合は、次のように設定します。

--containerizers='docker,mesos'

スレーブの起動時に、任意の docker イメージを起動して、その中でコマンドを実行できます。Docker は引き続き下層で cgroup を使用するため、cgroups アイソレーターは Mesos で実行する Docker イメージと完全に互換性があります。

Mesosphere パッケージを使用している場合は、次のように設定ファイルを作成して Mesos スレーブにオプションを渡すことができます/etc/mesos-slave

echo 'docker,mesos' > /etc/mesos-slave/containerizers
于 2014-12-19T09:21:50.510 に答える