メソスフェアとは
Mesosphereは、Apache Mesosのクラスター管理機能を拡張するソフトウェアソリューションであり、サーバーインフラストラクチャを管理する新しい斬新な方法を提供するコンポーネントが追加されています。 MarathonやChronosなどのいくつかのコンポーネントをMesosと組み合わせることにより、Mesosphereはスケーリングに関連する多くの課題を抽象化することにより、アプリケーションを簡単にスケーリングする方法を実現します。
Mesosphereは、アプリケーションのスケジューリング、スケーリング、フォールトトレランス、自己修復などの機能を提供します。 また、アプリケーションサービスの検出、ポートの統合、およびエンドポイントの弾力性も提供します。
Mesosphereが前述の機能をどのように提供するかをよりよく理解するために、Apache Mesosから始めて、Mesosphereの各主要コンポーネントの機能を簡単に説明し、Mesosphereのコンテキストでそれぞれを使用する方法を示します。
Apache Mesosの基本的な概要
Apache Mesosは、サーバーのスケーラブルなクラスターでのアプリケーションの実行を簡素化するオープンソースのクラスターマネージャーであり、Mesosphereシステムの中心です。
Mesosは、次のようなクラスターマネージャーに期待される多くの機能を提供します。
-
10,000ノード以上へのスケーラビリティ
-
Linuxコンテナーを介したタスクのリソース分離
-
効率的なCPUおよびメモリ対応のリソーススケジューリング
-
Apache ZooKeeperを介した高可用性マスター
-
クラスターの状態を監視するためのWeb UI
Mesosアーキテクチャ
Mesosには、マスターデーモンとスレーブデーモン、およびフレームワークで構成されるアーキテクチャがあります。 これらのコンポーネントの簡単な内訳と、関連する用語を次に示します。
-
マスターデーモン:マスターノードで実行され、スレーブデーモンを管理します
-
スレーブデーモン:マスターノードで実行され、フレームワークに属するタスクを実行します
-
フレームワーク:Mesosアプリケーションとも呼ばれ、scheduler(マスターに登録してリソース_offers_を受信する)と、スレーブで_tasks_を起動する1つ以上の_executors_で構成されます。 Mesosフレームワークの例には、Marathon、Chronos、Hadoopが含まれます
-
提供:スレーブノードの使用可能なCPUおよびメモリリソースのリスト。 すべてのスレーブノードがオファーをマスターに送信し、マスターが登録済みフレームワークにオファーを提供します
-
タスク:フレームワークによってスケジュールされ、スレーブノードで実行される作業単位。 タスクは、bashコマンドまたはスクリプトから、SQLクエリ、Hadoopジョブまで何でもかまいません
-
* Apache ZooKeeper *:マスターノードの調整に使用されるソフトウェア
image:https://assets.digitalocean.com/articles/mesosphere/mesos_architecture.png [Mesos Architecture]
注:「ZK」は、この図のZooKeeperを表しています。
このアーキテクチャにより、Mesosはクラスターのリソースを高レベルの粒度でアプリケーション間で共有できます。 特定のフレームワークに提供されるリソースの量は、マスターに設定されたポリシーに基づいており、フレームワークスケジューラは使用するオファーを決定します。 フレームワークスケジューラは、使用するオファーを決定すると、Mesosに実行するタスクを指示し、Mesosは適切なスレーブでタスクを起動します。 タスクが完了し、消費されたリソースが解放されると、リソース提供サイクルが繰り返され、より多くのタスクをスケジュールできるようになります。
高可用性
クラスタ内のMesosマスターの高可用性は、Apache ZooKeeperを使用してマスターを複製し、_quorum_を形成することで可能になります。 ZooKeeperはまた、マスターリーダーの選出を調整し、スレーブやフレームワークを含むMesosコンポーネント間でリーダーの検出を処理します。
高可用性構成には少なくとも3つのマスターノードが必要です。3つのマスターセットアップでは、1つのマスターに障害が発生した場合にクォーラムを維持できます。 2つのマスターノードがオフラインです。
Apache Mesosの詳細については、http://mesos.apache.org/documentation/latest/ [公式ドキュメントページ]をご覧ください。
マラソンの基本的な概要
Marathonは、長時間実行されるアプリケーションを起動するように設計されたMesosのフレームワークであり、Mesosphereでは、従来の「+ init +」システムの代わりとして機能します。 高可用性、ノードの制約、アプリケーションの健全性チェック、スクリプト可能性とサービス検出のためのAPI、使いやすいWebユーザーインターフェイスなど、クラスター環境でのアプリケーションの実行を簡素化する多くの機能があります。 メソスフェア機能セットにスケーリングと自己修復機能を追加します。
Marathonは、他のMesosフレームワークを開始するために使用でき、通常のシェルで開始できるプロセスを起動することもできます。 長時間実行するアプリケーション向けに設計されているため、実行中のスレーブノードに障害が発生した場合でも、起動したアプリケーションの実行が継続されます。
マラソンの詳細については、https://github.com/mesosphere/marathon [its GitHub page]をご覧ください。
クロノスの基本的な概要
ChronosはMesosのフレームワークで、もともとAirbnbが「+ cron +」の代わりとして開発したものです。 そのため、Mesos向けの完全な機能を備えた分散型のフォールトトレラントスケジューラであり、タスクの集合であるジョブのオーケストレーションを容易にします。 スケジューリングジョブのスクリプト作成を可能にするAPIと使いやすいWeb UIが含まれています。
メソスフェアでは、Chronosは、別のジョブの完了などのスケジュールまたは他の条件に従って、アプリケーションを実行する別の方法を提供するMarathonを補完します。 また、複数のMesosスレーブノードでジョブをスケジュールでき、ジョブの失敗と成功に関する統計情報を提供します。
Chronosの詳細については、https://github.com/mesosphere/chronos [its GitHub page]をご覧ください。
HAProxyの基本的な概要
HAProxyは、一般的なオープンソースロードバランサーおよびリバースプロキシソリューションです。 Mesosphereで使用して、既知のホスト(通常はMesosマスター)からMesosスレーブノードで実行されている実際のサービスにネットワークトラフィックをルーティングできます。 Mesosのサービス検出機能を使用して、着信トラフィックを適切なバックエンドスレーブノードにルーティングするようにHAProxyを動的に構成できます。
HAProxyの一般的な機能の詳細については、https://www.digitalocean.com/community/tutorials/an-introduction-to-haproxy-and-load-balancing-concepts [HAProxyの紹介]をご覧ください。
結論
Mesosphereは、クラスタリングとスケーラビリティに重点を置いて設計されているため、なじみのないサーバーインフラストラクチャパラダイムを採用していますが、うまく機能することを理解できたと思います。 基盤となる各コンポーネントは、サーバーインフラストラクチャのクラスタリングとスケーリングを扱う際に一般的に直面する問題に対するソリューションを提供し、Mesosphereはこれらのニーズに対する完全なソリューションの提供を目指しています。
Mesosphereの基本を理解したので、このシリーズの次のチュートリアルをご覧ください。 https://www.digitalocean.com/community/tutorials/how-to-configure-a-production-ready-mesosphere-cluster-on-ubuntu-14-04 [本番対応のセットアップ方法Ubuntu 14.04のMesosphereクラスター]!