中間圏入門
中間圏とは
Mesosphereは、Apache Mesosのクラスター管理機能を拡張するソフトウェアソリューションであり、追加のコンポーネントを使用して、サーバーインフラストラクチャを管理するための新しい斬新な方法を提供します。 Mesosphereは、MarathonやChronosなどのいくつかのコンポーネントをMesosと組み合わせることで、スケーリングに関連する多くの課題を抽象化することで、アプリケーションを簡単にスケーリングする方法を可能にします。
Mesosphereは、アプリケーションスケジューリング、スケーリング、フォールトトレランス、自己修復などの機能を提供します。 また、アプリケーションサービスの検出、ポートの統合、およびエンドポイントの弾力性も提供します。
Mesosphereが前述の機能をどのように提供するかをよりよく理解するために、Apache Mesosから始めて、Mesosphereの各主要コンポーネントが何をするかを簡単に説明し、Mesosphereのコンテキストでそれぞれがどのように使用されるかを示します。
ApacheMesosの基本的な概要
Apache Mesosは、サーバーのスケーラブルなクラスターでのアプリケーションの実行を簡素化するオープンソースのクラスターマネージャーであり、Mesosphereシステムの心臓部です。
Mesosは、次のようなクラスターマネージャーに期待される多くの機能を提供します。
- 10,000ノードを超えるスケーラビリティ
- Linuxコンテナを介したタスクのリソース分離
- 効率的なCPUおよびメモリ対応のリソーススケジューリング
- ApacheZooKeeperによる高可用性マスター
- クラスタの状態を監視するためのWebUI
Mesosアーキテクチャ
Mesosには、マスターデーモンとスレーブデーモン、およびフレームワークで構成されるアーキテクチャがあります。 これらのコンポーネントの簡単な内訳と、いくつかの関連用語を次に示します。
- マスターデーモン:マスターノードで実行され、スレーブデーモンを管理します
- スレーブデーモン:マスターノードで実行され、フレームワークに属するタスクを実行します
- Framework :Mesosアプリケーションとも呼ばれ、リソースオファーを受信するためにマスターに登録するスケジューラーと1つ以上ので構成されます。 executors は、スレーブでタスクを起動します。 Mesosフレームワークの例には、Marathon、Chronos、Hadoopなどがあります。
- オファー:スレーブノードの使用可能なCPUおよびメモリリソースのリスト。 すべてのスレーブノードはマスターにオファーを送信し、マスターは登録されたフレームワークにオファーを提供します
- タスク:フレームワークによってスケジュールされ、スレーブノードで実行される作業単位。 タスクには、bashコマンドやスクリプトから、SQLクエリ、Hadoopジョブまで何でもかまいません。
- Apache ZooKeeper :マスターノードを調整するために使用されるソフトウェア
注:「ZK」は、この図のZooKeeperを表します。
このアーキテクチャにより、Mesosはクラスターのリソースをアプリケーション間で高レベルの粒度で共有できます。 特定のフレームワークに提供されるリソースの量は、マスターに設定されたポリシーに基づいており、フレームワークスケジューラーは、使用するオファーを決定します。 フレームワークスケジューラが使用するオファーを決定すると、実行するタスクをMesosに通知し、Mesosは適切なスレーブでタスクを起動します。 タスクが完了し、消費されたリソースが解放された後、リソース提供サイクルが繰り返されるため、より多くのタスクをスケジュールできます。
高可用性
クラスタ内のMesosマスターの高可用性は、Apache ZooKeeperを使用してマスターを複製し、クォーラムを形成することで実現されます。 ZooKeeperはまた、マスターリーダーの選出を調整し、スレーブやフレームワークを含むMesosコンポーネント間のリーダー検出を処理します。
高可用性構成には少なくとも3つのマスターノードが必要です。3つのマスターセットアップにより、単一のマスターに障害が発生した場合にクォーラムを維持できますが、回復力のある実稼働環境には5つのマスターノードが推奨され、クォーラムを維持できるようになります。 2つのマスターノードがオフラインです。
Apache Mesosの詳細については、の公式ドキュメントページにアクセスしてください。
マラソンの基本的な概要
Marathonは、長時間実行されるアプリケーションを起動するように設計されたMesosのフレームワークであり、Mesosphereでは、従来のinit
システムの代わりとして機能します。 高可用性、ノード制約、アプリケーションヘルスチェック、スクリプト可能性とサービス検出のためのAPI、使いやすいWebユーザーインターフェイスなど、クラスター環境でのアプリケーションの実行を簡素化する多くの機能があります。 Mesosphere機能セットにスケーリングおよび自己修復機能を追加します。
Marathonは、他のMesosフレームワークを開始するために使用できます。また、通常のシェルで開始できる任意のプロセスを起動することもできます。 長時間実行されるアプリケーション向けに設計されているため、実行中のスレーブノードに障害が発生した場合でも、起動したアプリケーションが引き続き実行されます。
Marathonの詳細については、そのGitHubページにアクセスしてください。
クロノスの基本的な概要
Chronosは、cron
の代わりにAirbnbによって開発されたMesosのフレームワークです。 そのため、Mesos向けのフル機能、分散型、およびフォールトトレラントなスケジューラーであり、タスクのコレクションであるジョブのオーケストレーションを容易にします。 スケジューリングジョブのスクリプトを可能にするAPIと、使いやすいWebUIが含まれています。
Mesosphereでは、Chronosは、スケジュールまたは別のジョブの完了などの他の条件に従って、アプリケーションを実行する別の方法を提供するため、Marathonを補完します。 また、複数のMesosスレーブノードでジョブをスケジュールすることもでき、ジョブの失敗と成功に関する統計を提供します。
Chronosの詳細については、そのGitHubページにアクセスしてください。
HAProxyの基本的な概要
HAProxyは、人気のあるオープンソースのロードバランサーおよびリバースプロキシソリューションです。 Mesosphereで使用して、既知のホスト(通常はMesosマスター)からMesosスレーブノードで実行されている実際のサービスにネットワークトラフィックをルーティングできます。 Mesosのサービス検出機能を使用して、着信トラフィックを適切なバックエンドスレーブノードにルーティングするようにHAProxyを動的に構成できます。
HAProxyの一般的な機能の詳細については、HAProxyの概要をご覧ください。
結論
Mesosphereは、クラスタリングとスケーラビリティに重点を置いて設計されているため、なじみのないサーバーインフラストラクチャパラダイムを採用していますが、その仕組みを十分に理解していることを願っています。 ベースとなる各コンポーネントは、サーバーインフラストラクチャのクラスタリングとスケーリングを処理するときに一般的に直面する問題のソリューションを提供し、Mesosphereはこれらのニーズに対する完全なソリューションを提供することを目指しています。
Mesosphereの基本を理解したので、このシリーズの次のチュートリアルを確認してください。 Ubuntu14.04で本番環境に対応したMesosphereクラスターをセットアップする方法を説明します。