エンジニアの生き様をウォッチするメディア

まつもとりーのインフラ入門-第五回「高集積マルチテナントアーキテクチャのリソース分離(2)」

みなさん、こんにちは。まつもとりーのインフラ入門第五回です。 本連載では、主にインターネット基盤技術、または、インターネットのインフラ技術と呼ばれる領域に関して、Webホスティングサービスの歴史やWebサーバの設計と実装を中心に執筆していくと第一回で述べました。 第五回では、第四回に続き、高集積マルチテナント環境において非常に重要となるリソース制御や研究動向についての研究動向を紹介します。

限られたコンピュータリソースで複数のホストをできるだけ高集積に管理・運用し、全体のコストを低減しながら安定稼働させるためには、特定のホストに対するWebアクセスがサーバ全体のリソースを占有しないように、ホスト単位で公平にリソースを配分するためのリソース分離手法が必要になります。

前回のリソース制御の復習

連載の第四回で述べたように、限られたコンピュータリソースで複数のホストをできるだけ高集積に管理・運用し、全体のコストを低減しながら安定稼働させるためには、特定のホストに対するWebアクセスがサーバ全体のリソースを占有しないように、ホスト単位で公平にリソースを配分するためのリソース分離手法が必要になります。しかし、CPUやDisk I/O等のコンピュータリソースは共有のため、特定ホストにアクセスが集中したり、多くのリソースを消費するアプリケーションへのたった一つのリクエストによりリソースが占有されたりすることで、他のホストに影響を与える問題がありました。 そのような課題を解決するために、リソース分離手法がこれまで複数提案されてきました。

リクエスト単位でのリソース分離

Linuxには、cgroupと呼ばれるプロセスのリソース管理技術があります。下記の論文では、cgroupがどの程度の制御を可能かを試しています。

富樫荘太, 大月勇人, 瀧本栄二, 毛利公一, Linux の Cgroups における CPU throttling の精度改善手法, 電子情報通信学会総合大会講演論文集 D-6. コンピュータシステム C (ソフトウェアと性能評価), pp. 62, 2014.

cgroupはプロセスのリソース制御を様々な観点から制御可能で、例えば、cgroupの優先順位機能を使うことで、CPUの使用率やI/Oの帯域を制御できます。そこで、松本らは、リクエスト処理時に、cgroupを利用して、管理者が記述した内容、この手法ではRubyスクリプトに従って仮想的に分離されたリソース領域を作成し、サーバプロセスをそのリソース領域内で動作させることで、リクエスト単位で任意のリソース分離が可能なWebサーバのリソース分離手法を提案しています。

松本 亮介, 栗林 健太郎, 岡部 寿男, リクエスト単位で仮想的にハードウェアリソースを分離するWebサーバのリソース制御アーキテクチャ , 情報処理学会論文誌, Vol.59, No.3, pp.1016-1025, Mar 2018.

この手法では、クライアントからサーバプロセスに対してリクエスト処理が来ると、そのリクエストの処理が制御対象であった場合、サーバプロセス上で動作しているリソースコントローラが、リソース分離ルールからリソースに関する設定値を取得します。そして、そのリソース設定値を元に確保された仮想リソース領域がなければ、新規で領域を作成します。そのプロセス単位での仮想リソース領域にcgroupを使用しています。

例えば、任意のリクエストに対し、CPU使用率は最大10%、ディスクへの書き込みは最大5MB/secに制限したいとします。その場合は、制御ルールを設定ファイル、すなわちRubyスクリプトとして記述します。記述後、新しいリクエストを受けた際に、リソースコントローラは制御ルールを解釈し、ルール通りにリソース領域を生成します。これは、つまり、WebサーバがRubyスクリプトを実行することに他ならないのです。そして、サーバプロセスを、作成したリソース領域に割り当てた後、リクエストをそのリソース範囲内で処理します。処理後は、生成したレスポンスをクライアントに返し、リソース領域への割り当てを解除してから、次のリクエスト処理に備えます。このようなアーキテクチャを取ることにより、リクエストに含まれる情報、例えば、ホスト名やHTTPメソッド、ユーザ情報等を条件に、管理者がHTTPリクエスト単位で柔軟にリソース分離を行えます。

リクエスト単位で仮想的にリソースを制御をする理由としては、やはり、高集積に収容した仮想ホストを、それよりも十分に少ないプロセスでリソースを共有しながらリクエストを代わる代わる処理するからです。あるタイミングで来たリクエストとその次に同じプロセスに来たリクエストは、別のホストに対するリクエストであるため、リクエスト単位でリソースを制御した上で、制御後は次のリクエストに備えて元の状態に戻さなければなりません。

特徴量抽出と変化点検出に基づくリソースの自律制御アーキテクチャ

高集積にホストが収容されたWebサーバにおいて、高負荷時にどれぐらいのリソース使用量をどのホストに割り当てるのが適切なのかということを迅速に検討しなければいけません。また、負荷原因の状況に応じて、ホストに対する同時接続数制限と、その他の制限手法の組み合わせをどう判定するかについて、刻々と変化しログの量も肥大化していく状況下で人力による調査に頼って判断することは高コストです。適切な制限項目や一定のルールに従った制限値を、いかにシステム管理者の運用コストをかけずに調査し制限するかという、ホスト単位で精細なリソース分離を行う際の課題があります。

松本らは、Webサーバのコンピュータリソースの特徴量を時系列データとして抽出してリクエスト毎に変化点検出を行い、原因となるホストやプログラムの変化らしさの重み付けを行った上で、サーバ全体のリソース逼迫時には、重み付けリストの結果に基いて自律的に原因となるリクエストを特定し分離するアーキテクチャを提案しています。

松本 亮介, 田平 康朗, 山下 和彦, 栗林 健太郎, 特徴量抽出と変化点検出に基づくWebサーバの高集積マルチテナント方式におけるリソースの自律制御アーキテクチャ, 情報処理学会研究報告, Vol.2017-IOT-36, No.26, pp.1-8, 2017年2月.

時系列データには、ホストおよびプログラム単位でのレスポンスタイムのデータとその時点の同時接続数を使用します。この時系列データに対して、変化の傾向を表すスコアを計算し、リクエストのあったホスト名とプログラム名に基づいて、計測したスコアからリソースの傾向変化に寄与したホストおよびプログラムの重み付けリストを更新していきます。そして、サーバ全体が高負荷状態になった場合に、重み付けリストに従って原因の可能性が高いリクエストのみを、リソース使用量が限定された隔離環境内で処理するようにします。これらを、Webサーバのレスポンス生成処理の過程に組み込むことにより、Webサーバはサーバ管理者の代わりに自律的に原因を解析し、必要な時にその原因に対処できるようになります。

この手法では、変化点検出のようなデータマイニングの観点からの統計的手法を活用している点が特徴です。一方で、この手法で発見出来た問題が、これまでの手法で対応できたことと比較してどれぐらい優れているのか、また、この手法は従来の手法では見つけることのできなかった問題を発見できるのかなど、統計的手法を利用することによる評価の難しさも浮き彫りになりました。この観点では、深層学習や機械学習を使った手法でも同様の難しさに直面するため、このような手法の有効性をいかに評価するかといった点が、このようなインターネットと運用技術に応用する場合のポイントになるでしょう。

まとめ

ということで、今回は高集積マルチテナントアーキテクチャを採用したWebサーバにおいて、これまで述べてきた基礎概念から少し踏み込んで、マルチテナント環境において非常に重要となるリソース制御や研究動向について紹介しました。いよいよ次回からは、Webサーバの高集積マルチテナントアーキテクチャにおける権限分離、すなわち、セキュリティ技術についてじっくり紹介していきます。

リファレンス
本連載は下記の私が執筆した論文を参考に、新しい読者へ広めるために平易な形へと再編集しています。
・ 松本 亮介, 栗林 健太郎, 岡部 寿男, Webサーバの高集積マルチテナントアーキテクチャと運用技術, 電子情報通信学会論文誌B, Vol.J101-B, No.1, pp.16-30, Jan 2018.
・ copyright©2018 IEICE

(記事:松本 亮介)

京都大学博士(情報学)、さくらインターネット研究所上級研究員、ペパボ研究所客員研究員、Forkwell技術顧問、セキュリティ・キャンプ講師、情報処理学会各種委員、松本亮介事務所所長。

2008年に現場の技術を知るため修士に行かずにホスティング系企業に就職したのち、2012年に異例の修士飛ばしで京都大学大学院の博士課程に入学。インターネット基盤技術の研究に取り組み、mod_mrubyやngx_mrubyなどのOSSを始めとした多数のOSSへの貢献や学術的成果を修める。

2015年4月より2018年10月までGMOペパボ株式会社にてチーフエンジニアとしてプロダクトのアーキテクトやエンジニア組織のマネージメントに従事すると同時に、ペパボ研究所では主席研究員としてOS・Middleware・HTTPに関する研究、及び、事業で実践できるレベルまで作りこむことを目標に研究に従事。

2018年11月より現職のさくらインターネット研究所で上級研究員を務める。

第9回日本OSS奨励賞や2014年度情報処理学会山下記念研究賞など、その他受賞多数。2016年に情報処理学会IPSJ-ONEにおいて時流に乗る日本の若手トップ研究者19名に選出される。