現在、新しい Apache Mesos クラウド セットアップのアーキテクチャを設計中です。目標は、さまざまなスタックを同じアーキテクチャに移動してシステムを統合することです。主なワークロードは、Apache Spark を使用したビッグ データ分析と、Web サーバー、メール サーバーなどの企業インフラストラクチャです。
アイデアとしては、Mesos で利用可能なスケジューラ (Marathon/Chronos、Aurora、または Singularity) の 1 つ上で実行される Docker コンテナで Web サービスを実行することです。これが最初の Mesos フレームワーク グループになります。次に、Apache Spark フレームワークと、データ ストレージ用のいくつかのデータベース フレームワークがあります。これが 2 番目の Mesos フレームワーク グループになります。すべてを並行して実行してテストした後、詳細を選択します。
しかし、Mesos 自体をどのような基準で実行するかを決めるのは困難です。理想的には、できるだけ実機に近い状態で実行したいと考えています。また、オーケストレーション ソリューションを使用して、Mesos とフレームワーク デーモンが常に実行され、障害発生時に再起動されるようにしたいと考えています。検討しているオプションは次のとおりです。
1) 最小限の OS で、Mesos とフレームワークを Docker コンテナとして実行します。この点では、現在 CoreOS と Fleet に傾いています。
2) Mesos とフレームワークを Ubuntu/Debian サーバー上で直接実行する。このオプションでは、Foreman と Puppet を使用する予定です。
質問に関しては、重要度順に以下の解決策を特定したいと考えています。
- 設定が最も簡単
- メンテナンスと更新が最も簡単です
- オーバーヘッドが最も少ない
これまで CoreOS を使ったことはありませんが、これは私たちが向かっている選択肢のようです。これに関して私が抱えている大きな (主観的な) 問題は、Mesos を Docker コンテナで実行し、次に Docker コンテナを Mesos で実行することです。これは「不潔」で間違っているように思えます。この検討にはメリットがないのでしょうか?
同様の考えは、レイヤー間の冗長性に関するものです。私の考えを説明すると、Mesos がメタルの上で直接実行される実際の OS であればよいと思います。どのような基盤を使用しても、アーキテクチャの複数のレイヤーで同じ意図された機能が得られるようです (つまり、CoreOS&Fleet&SystemD == Mesos&Marathon&Chronos)。これは避けられないことでしょうか?
私たちの基準を念頭に置いて、Mesos の下のレイヤーを実行するために考慮しなかった他の良いオプションはありますか?
答え1
Mesos でサービスを設定して実行する操作は、複雑な場合もあれば簡単な場合もあります。必要なソリューションを得るには、まず、ニーズと目標に応じて、Mesos で実行するサービスのスキーマを定義する必要があります。
私は、Mesos-DNS と Marathon、Api ゲートウェイ、Chronos、Jenkins、Docker、Collectd、Graphite などを使用した動的負荷分散のために、HAProxy の下で 70 台を超えるマシンとさまざまなサービスのセットアップを実行しています。
さて、あなたの直接の質問に答えましょう:
- Mesosは、「お気に入りの」Linuxディストリビューションあなたが最もよく知っているもの。
- 最も簡単にメンテナンスできるのは、やはり、最も使い慣れたディストリビューションです。
- オーバーヘッドに関して言えば、Mesos は、基盤となる OS ライブラリと、それ自身のソフトウェア機能以外の他のソフトウェア機能を使用するソフトウェア システムであり、Mesos を OS として使用する (ハードウェアとソフトウェアの両方で動作する) というのは、まったく間違った考え方です。
だから、あなたへの私の最善の答えは、お気に入りのLinuxディストリビューションを使用してMesosをインストールすることです。または、何か新しいことを素早く簡単に学びたい場合は、(オープンソース) DCOSそしてコアOS。