マスター、スレーブ、および zk プロセスをすべて同じノードで確実に実行できます。それぞれに固有のポートを指定すれば、複数のマスター プロセスとスレーブ プロセスを同じノードで実行することもできますが、これはテスト クラスターでのみ役立ちます。
通常、マスターと同じノードで ZK を実行することをお勧めしますが、余分な ZK がある場合は、すべてのマスター/スレーブ/フレームワーク ノードが実行できる限り、それらをスレーブで実行するか、必要に応じて組み合わせて実行できます。 ZK ノードに到達し、すべてのスレーブがマスターに到達できます。
小規模なクラスター (<10 ノード) の場合、特にスタンバイ マスターはあまり機能しないため、各マスターでスレーブ プロセスを実行することは理にかなっています。小規模なクラスターのアクティブ マスターでさえ、少量の CPU、メモリ、およびネットワーク リソースしか使用しません。そのスレーブの --resources を調整して、マスターのリソース使用量を考慮してください。
クラスターが大きくなると (特にノードが 100 を超える場合)、マスターとの間のネットワーク トラフィックと CPU/メモリの使用率が大きくなり、マスターと同じノードで mesos スレーブを実行したくなくなります。大規模であっても、ZK をマスターと同じ場所に配置しても問題ありません。
特に質問はありませんでしたが、フレームワーク スケジューラを実行する場所 (Spark、Marathon、Chronos など) についても説明します。これらは他のコンポーネントと同じ場所に配置できますが、スレーブへのすべての通信はマスターを経由するため、実際にはマスター ノードと zk ノードに到達できる必要があるだけです。マスター ノードでスケジューラを実行する顧客もいれば、エッジ ノードで実行する (ユーザーがスレーブにアクセスできないようにする) 顧客もいれば、Marathon などのメタ フレームワークを使用してスレーブで他のスケジューラを Mesos タスクとして実行する顧客もいます。