Server Orchestration

Server Orchestration

2020, May 10    

サーバオーケストラレーション(Server Orchestration)とは

サーバオーケストラレーションという用語は曖昧な意味を持っている。簡単に定義すると、複数のサーバと複数のサービスを便利に管理する作業であると言える。実際にはスケジューリングscheduling、クラスタリングclustering、サービスディスカバリーservice discovery、ロギングlogging、モニタリングmonitoringなどの作業を行う。

ただ、複数のサーバーを楽に管理したいだけなのに、新しい用語がたくさん登場する。

  • スケジューリング:コンテナを適当なサーバにデプロイする作業。ツールによって支援する戦略が少しずつ異なるが、数台のサーバの中で最も必要のないサーバにデプロイしたり、順番にデプロイしたり、ランダムにデプロイすることもできる。コンテナの個数を複数に増やせば、適当に分けてデプロイし、サーバーが死ぬと、実行中だったコンテナを別のサーバーで実行することもできる。

  • クラスタリング:複数のサーバを1つのサーバのように使用できる。クラスタに新しいサーバーを追加することも、削除することもできる。少なくとも数少ないサーバから、多くは数千台のサーバを1つのクラスタにすることができる。あちこちに散らばっているコンテナも仮想ネットワークを利用して、まるで同じサーバーにあるように簡単に通信できる。

  • サービスディスカバリ:文字通り、サービスを探す機能。コンテナはクラスタ環境でどのサーバに生成されるか分からず、別のサーバに移動することもできる。したがって、コンテナと通信をするためには、どのサーバで実行中なのかを把握しなければならず、コンテナが生成・中止する時にどこかにIPやポートのような情報をアップデートする必要がある。キーベバリュー・ストレージに情報を保存することも、内部DNSサーバーを利用することもできる。

  • ロギング、モニタリング:複数のサーバーを管理する場合は、ログとサーバーの状態を1ヶ所で管理するのが便利である。ツールで直接サポートする場合もあれば、別途プログラムをインストールしなければならない場合もある。ELKやprometheusなどのさまざまなツールがある。

オーケストレーション・ツールはサーバを中央で管理し、多くのことを自動化してくれるので、複数のサーバを管理するのなら、導入しなければならない非常に優れた方法だと言える。

しかし、こんなに良いものがあると知りながらも、様々な理由で導入が難しいのが現実。

最も大きな理由は、インストールと管理が難しいということである。普段ならオーケストラツールは数百、数千、数万台の膨大なサーバーを管理するためにできている。基本、インストールと管理がかなり難しく、大規模のシステム環境を持つ一部の企業を除いては、導入する費用が手作業で管理する費用よりはるかに大きい。ツールについても勉強しなければならない。何か障害が生じると、全サーバーに問題が生じるので、導入においては慎重にならざるを得ない。