web-dev-qa-db-ja.com

Apache Mesosの永続ストレージ

最近、Apache Mesosのようなものを発見しました。

デモや例では、すべてが驚くほどに見えます。ステートレスジョブを実行する方法を簡単に想像できました。これは、全体のアイデアに自然に適合します。

ボットは、ステートフルな長時間実行ジョブをどのように処理するのですか?

たとえば、N台のマシンで構成されるクラスターがある(そして、マラソン経由でスケジュールされている)とします。そこで、postgresqlサーバーを実行したいと思います。

それだけです-最初は高可用性にしたくありませんが、postgresqlサーバーをホストする単一のジョブ(実際にはDockerized)だけです。

1-どのように整理しますか?サーバーを特定のクラスターノードに制限しますか?分散FSを使用しますか?

2- DRBD、MooseFS、GlusterFS、NFS、CephFS、それらのうちどれがMesosやpostgresなどのサービスでうまく機能しますか? (私はここでMesos /マラソンがダウンした場合にサービスを再配置する可能性について考えています)

3-哲学の観点から私のアプローチが間違っているかどうか教えてください(データサーバーのDFS、およびMesosの上のpostgresなどのサーバーのある種のスイッチオーバー)

Apache Mesosの永続ストレージ からの質問の大部分は、 zerkmsProgrammers Stack Exchange によって尋ねられました。

34

すばらしい質問です。ここでは、ステートフルサービスのサポートを改善するためのMesosのいくつかの今後の機能と、対応する現在の回避策を示します。

  1. 永続ボリューム (0.23):タスクを起動するときに、タスクのサンドボックスの外部に存在し、タスクが終了/完了した後でもノードに保持されるボリュームを作成できます。タスクが終了すると、永続ボリュームを含むそのリソースをフレームワークに戻すことができるため、フレームワークは同じタスクを再度起動したり、リカバリタスクを起動したり、前のタスクの出力を消費する新しいタスクを起動したりできます。入力として。
    • 現在の回避策:サンドボックス外の既知の場所に状態を永続化し、タスクで手動で回復を試みます。多分それを分散ファイルシステム/データベースに永続化して、どのノードからでもアクセスできるようにします。
  2. ディスク分離 (0.22):サンドボックスと永続ボリュームにディスククォータ制限を適用します。これにより、ストレージを多用するフレームワークがディスクを詰まらせ、他のタスクが実行されないようにすることができます。
    • 現在の回避策:帯域外のディスク使用量を監視し、定期的なクリーンアップジョブを実行します。
  3. Dynamic Reservations (0.23):タスクの起動時に、タスクが使用するリソース(永続ボリュームを含む)を予約して、どちらのフレームワークに移動するのではなく、タスクの終了時にリソースが提供されることを保証できます。フェアシェアを最も下回っています。
    • 現在の回避策:スレーブの--resourcesフラグを使用して、スレーブの起動時にフレームワークのリソースを静的に予約します。

特定のユースケースと質問に関しては:

1a)それをどのように編成しますか?これをMarathonで行うことができます。おそらく、ステートフルサービス用に別のMarathonインスタンスを作成して、静的なステートフルなマラソンのみがこれらのリソースを保証されるように、「ステートフル」の役割の予約。

1b)サーバーを特定のクラスターノードに制限しますか?これをMarathonで簡単に行うことができ、アプリケーションを特定のホスト名、または特定の属性値(NFS_Access = trueなど)。 Marathon Constraints を参照してください。特定のノードセットでのみタスクを実行したい場合は、それらのノードで静的予約を作成するだけで済みます。そして、それらのノードの検出可能性が必要な場合は、 Mesos-DNS および MarathonのHAProxy統合 を確認する必要があります。

1c)分散FSを使用しますか?多くの分散ファイルシステムによって提供されるデータレプリケーションは、データが単一のノードの障害に耐えられることを保証します。また、DFSを維持すると、ネットワークとローカルディスク間の遅延の違いを犠牲にしても、タスクをスケジュールできる場所の柔軟性が高まります。 Mesosには、HDFS URIからバイナリをフェッチするための組み込みサポートがあり、多くのお客様は、HDFSを使用して、タスクを実行するスレーブにエグゼキューターバイナリ、構成ファイル、および入力データを渡します。

2)DRBD、MooseFS、GlusterFS、NFS、CephFS?MesosでCephFS、HDFS、MapRFSを使用しているお客様のことを聞きました。 NFSも簡単に適合します。タスクが配置されているノードからアクセスする方法をタスクが知っている限り、Mesosは何を使用してもかまいません。

お役に立てば幸いです。

43
Adam