Nomadは、コンテナオーケストレーション分野における、分散型で高可用性かつ柔軟なデータセンター対応のクラスターマネージャー兼スケジューラーだ。
HashiCorpは、クラスター内のワーカーノード間でタスクのスケジューリングとデプロイを行えるようNomadをリリースした。オンプレミス環境でもクラウド環境でも、さまざまなインフラ上でコンテナや非コンテナ化アプリケーションを大規模にデプロイし、管理するのに役立つ。
HashiCorp Nomadは、オーバーヘッドを最小限に抑えて簡単に利用でき、主要なすべてのオペレーティングシステム上で動作する仮想化アプリケーション、コンテナ化アプリケーション、スタンドアロンアプリケーションに対応する。幅広いワークロードを処理でき、コンテナに限らず、あらゆる種類のアプリケーションをオーケストレーションできる。Nomadは、ビンパッキングによるリソース利用の最適化によってコンテナのスケジューリングとクラスター管理に重点を置いており、Unixの哲学に基づいて設計され、HashiCorpエコシステムとも統合されている。
HashiCorpのNomadについて、またコンテナオーケストレーション分野での位置付けについて詳しく知りたい場合は、以下を参照してほしい。
コンテナオーケストレーション市場
世界のコンテナオーケストレーション市場は、Research And Marketsによると、2021年には4億5,400万米ドル規模と推定され、2022年から2027年にかけて年平均成長率(CAGR)16.62%で成長し、2027年には17億8,000万米ドルに達すると予測されている。
Nomadの主な機能
Nomadは、さまざまなインフラ上でアプリケーションを大規模に実行できる、機能豊富で高性能な環境だ。Nomadの主な機能を以下に示す。
マルチリージョンフェデレーション
HashiCorp Nomadはリージョン単位で動作し、ユーザーがリージョンに関係なく特定のサーバーを対象としてジョブを送信したり、HTTP APIを操作したりできるフェデレーションを上位レベルでサポートする。複数のクラスターをフェデレーションするにはクラスター間の接続が必要であり、各クラスターのサーバーはRPCとSerfを介して通信できる。サーバーがネットワーク経由で接続されると、ユーザーはNomad server joinコマンドを実行し、あるリージョンのサーバーからリモートリージョンのサーバーへクラスターをフェデレーションできる。
HashiCorpおよびコミュニティーのツール
Nomadのパフォーマンス向上や、追加機能およびユースケースの実現に役立つ外部ツールが複数存在する。これらのツールはNomad本体とは別にインストールし、場合によってはクラスター内のNomadジョブとしてデプロイできる。
現在Nomadで利用できる外部ツールはHashiCorpが保守しており、Autoscaling、Damon、Levant、Nomad Pack、OpenAPIなどがある。
現在Nomadで利用できる外部ツールには、Nomadコミュニティーのメンバーが保守しているものも数多くある。例えば、Caravan、Chaotic、Deadman Check、Hashi Up、HashiBox、Jenkins Nomad Cloud Plugin、Kreconciler、Nelsonなどだ。
移行と障害復旧
既存のアプリケーションをコンテナに移行するのは難しい場合がある。Nomadの柔軟なワークロード対応により、移行の全過程を通じて、コンテナ化アプリケーション、非コンテナ化アプリケーション、バッチアプリケーションを単一のワークフローで実行できる。レガシーアプリケーション、静的バイナリー、Java JAR、QEMU仮想マシン、単純なOSコマンドの実行もネイティブに直接サポートする。また、書き換えやリファクタリングのコストをかけずに、ビンパッキング、自動化、コンテナオーケストレーション向けの複数のアップグレード戦略を実現する。
デプロイ構成によっては、クラスターが利用不能になるのに必要な障害は単一サーバーの故障だけであり、復旧にはオペレーターの介入が必要となるが、手順は簡単だ。Nomadでは、データセンター内のサーバーノードの過半数を失ったことによる障害からも復旧できる。
ユースケース
HashiCorp Nomadは、規模を問わずさまざまな組織のユーザーにコンテナオーケストレーションを提供する、広く利用されている環境だ。
既存サービスにオーケストレーションのメリットを組み込み、1つのワークフローでクラウド環境やベアメタル環境にデプロイできる。
「新しい構成のセットアップやサーバーへの追加といった基本的な作業だけでも、Nomadによって毎週数十時間を節約できました。以前は1週間かかっていた作業が今では数分で完了し、顧客が期待する速さで新機能やサービスを提供する妨げとなっていた障壁もなくなりました」—Jordan Hager、ホスティングアーキテクチャ担当VP、Q2 Software
「アプリケーションスケジューラーとしてNomadを選んだことに自信を持っており、その後Consulもスタックに統合しました。Boweryは今後もファームを増やし続け、それぞれに複数のNomadクライアントを配置して、考案したあらゆるサービスを受け入れ、実行できるようにしていきます。Nomadは高いスケーラビリティーを実証しており、Nomadとともに事業を拡大できることを楽しみにしています」—John Spencer、シニアサイト信頼性エンジニア、Bowery
差別化要因
Nomadはマルチクラウドアプリケーションを実現し、プロビジョニングとサービスネットワーキングのためにTerraform、Consul、Vaultと統合できる。HashiCorp Nomadの主な差別化要因を以下に示す。
高度なスケジューリング
Nomadのスケジューラーは、ビンパッキングアルゴリズムを使用して、Nomadクラスター内のアプリケーションのリソース利用率と密度を最適化する。Nomad 0.9では、オペレーターがアロケーションの配置をよりきめ細かく制御できる新機能が追加された。これにより、affinityスタンザを介して特定のアプリケーションに対し、特定クラスのノードを優先する設定を表現できる。また、spreadスタンザを使って、データセンター、ラック、その他のノード属性やメタデータにまたがってアロケーションを分散できる。
オートスケーリング
Nomadでは、過剰プロビジョニングのコストを抑えながら、需要に応じてクラスターとワークロードのインスタンス数を自動的に維持できる。Nomad Autoscalerは別途構築・リリースされ、デーモンプロセスとして実行される。これは一般にAutocaler Agentと呼ばれ、Nomad Agentとは別個の独立したプロセスだ。Agentはデーモンとして実行され、コマンドラインフラグで渡すか、構成ファイルから解析する設定が必要となる。
Nomadヘルパーとウォッチャー
nomad-helperやnomad-watcherなど、Nomadコミュニティーが保守するツールが、Nomadを他と差別化している。nomad-helperは、使いやすく共有しやすいYAML形式でスケーリング機能を公開することで、チームがNomadをすぐに使い始められるようにする。ネイティブのNomad CLIツールがサポートするNOMAD_*環境変数はすべて、このツールでもサポートされる。nomad-watcherは、Nomadのノード、ジョブ、デプロイ、評価、アロケーション、タスクの状態を監視し、イベントをファイルに書き込むシンプルなツールだ。
Nomadのユーザーレビュー
HashiCorp Nomadは、複数のユーザーレビューサイトでおおむね肯定的な評価と推薦を得ている。G2のユーザーはNomadを5点満点中4.1点と評価しており、TrustRadiusでは8.7点(10点満点)と評価している。
G2のユーザーは、カスタマーエクスペリエンスについても以下の評価を付けている。
- 使いやすさ:10点満点中7.8点
- サポート品質:10点満点中5.7点
料金
HashiCorp Nomadには、2つの料金プランがあり、いずれもセルフマネージド型だ。オープンソース版とエンタープライズ版が用意されている。
オープンソース版は無料で利用でき、コンテナオーケストレーション、非コンテナ化アプリケーションのオーケストレーション、コミュニティーサポートが含まれる。
セルフマネージド型のエンタープライズ版には、プラットフォーム、マルチクラスターおよび効率化、ガバナンスとポリシー、プレミアムサポートとサービスも含まれる。HashiCorp Nomad Enterpriseには30日間の無料トライアルがある。
まとめ
HashiCorp Nomadは、シンプルで柔軟なワークロードオーケストレーションツールを提供する、広く受け入れられたサービスプロバイダーだ。複数のリージョンやクラウドプラットフォームにまたがるさまざまなワークロードのデプロイ、管理、スケーリングのための複数の機能を備えている。セキュリティー、スケーラビリティー、パフォーマンス、低い運用コストも実現する。さらにNomadを使えば、大規模な開発チームで運用できるコンテナ化アプリケーションも簡単にデプロイできる。そのため、HashiCorp Nomadはあらゆる企業にとって有力なコンテナオーケストレーションの選択肢となり得る。