(邦訳:OSサポートによるディペンダブルな単一IPアドレスクラスタ)
藤田 肇 シカゴ大学計算機科学科博士研究員 |
[背景]高性能で安定したサービスを提供するサーバへの需要
[問題]単一IPアドレスクラスタサーバのディペンダビリティ向上
[貢献]高可用・高信頼性と高性能を両立したクラスタサーバの実現
インターネット上のサービスは現代社会にとって欠かせないインフラであり,サーバには高性能で安定したサービスを提供することが求められる.
単一IPアドレスクラスタは複数の計算機(計算機クラスタ)に対して1つのIPアドレスを割り当てて1つのサーバのように見せることで,高性能かつ耐障害性のあるサーバを構築する手法であり,今日のインターネットサーバで広く用いられている.クライアントに対して見せるアドレスを1つにすることで,クライアントに意識させることなく実際のサーバ数を増減して負荷変動や故障に対処したり,サーバに対して発行されたリクエストを適切なノードに分散して処理したりすることが可能になる.
単一IPアドレスクラスタの1方式であるブロードキャスト型クラスタでは,1つのノードの故障が他のノードに影響を及ぼさないという耐障害上の利点があるものの,従来の方式では負荷分散性能に限界があり,高負荷時にクラスタの総性能を活かしきれないという問題があった.また,ノードの故障が発生してからクラスタの再構成が行われるまでの間にクライアントからの新規接続要求に応答できないことがある,ノード故障の発生時に既存の接続と処理経過が失われるといった問題があり,サーバの可用性と信頼性向上の障害となっていた.
本論文では,TCP(Transmission Control Protocol)を用いて通信するアプリケーションを対象に,1)ブロードキャスト型クラスタの対障害性を活かしつつ負荷分散性能を向上させる手法 2)故障ノードの代替ノードが投機的にクライアントに応答することでノード故障時のダウンタイムを削減する手法 3)サーバプロセスの状態をクライアントのメモリ上に保存することでサーバ障害からの復旧を可能にする手法を提案し,サーバのディペンダビリティ向上に貢献した.以下では紙面の都合上,負荷分散手法について紹介する.
ブロードキャスト型クラスタは,外部から入ってきたパケットをクラスタノード全体にブロードキャストし,ノードの1つが応答することで単一IPアドレスを実現する.この方式のクラスタでは,これまで主にクライアントのIPアドレスやTCPポート番号に基づくハッシュ関数によって担当ノードを決定する静的な接続割り当て方式が用いられており,動的な負荷の偏りを考慮した集中型スケジューリングアルゴリズムの適用が困難だった.
そこで本論文では,ブロードキャスト型クラスタに対して新規TCP接続要求の割り当てを決定するスケジューリングノードを導入することで,さまざまな負荷分散アルゴリズムを適用可能とした.スケジューリングノードはTCP接続の開始時にのみ通信に介在するため,接続の確立後にスケジューリングノードが故障しても確立済み接続は影響を受けない.
提案手法をOS拡張機能としてLinuxカーネルに実装し,さらにスケジューラとして最小接続数優先スケジューラ及びリクエストされたファイルの局所性を考慮したスケジューラを実装した.SPECweb2005 Supportベンチマークを用いた評価実験によって,最小接続数優先スケジューラによって既存手法よりも13%多くのリクエストを処理でき,また局所性を考慮したスケジューラによってダウンロード速度基準を満たさないリクエスト数を48%削減できることを示した.
単一IPアドレスクラスタは複数の計算機(計算機クラスタ)に対して1つのIPアドレスを割り当てて1つのサーバのように見せることで,高性能かつ耐障害性のあるサーバを構築する手法であり,今日のインターネットサーバで広く用いられている.クライアントに対して見せるアドレスを1つにすることで,クライアントに意識させることなく実際のサーバ数を増減して負荷変動や故障に対処したり,サーバに対して発行されたリクエストを適切なノードに分散して処理したりすることが可能になる.
単一IPアドレスクラスタの1方式であるブロードキャスト型クラスタでは,1つのノードの故障が他のノードに影響を及ぼさないという耐障害上の利点があるものの,従来の方式では負荷分散性能に限界があり,高負荷時にクラスタの総性能を活かしきれないという問題があった.また,ノードの故障が発生してからクラスタの再構成が行われるまでの間にクライアントからの新規接続要求に応答できないことがある,ノード故障の発生時に既存の接続と処理経過が失われるといった問題があり,サーバの可用性と信頼性向上の障害となっていた.
本論文では,TCP(Transmission Control Protocol)を用いて通信するアプリケーションを対象に,1)ブロードキャスト型クラスタの対障害性を活かしつつ負荷分散性能を向上させる手法 2)故障ノードの代替ノードが投機的にクライアントに応答することでノード故障時のダウンタイムを削減する手法 3)サーバプロセスの状態をクライアントのメモリ上に保存することでサーバ障害からの復旧を可能にする手法を提案し,サーバのディペンダビリティ向上に貢献した.以下では紙面の都合上,負荷分散手法について紹介する.
ブロードキャスト型クラスタは,外部から入ってきたパケットをクラスタノード全体にブロードキャストし,ノードの1つが応答することで単一IPアドレスを実現する.この方式のクラスタでは,これまで主にクライアントのIPアドレスやTCPポート番号に基づくハッシュ関数によって担当ノードを決定する静的な接続割り当て方式が用いられており,動的な負荷の偏りを考慮した集中型スケジューリングアルゴリズムの適用が困難だった.
そこで本論文では,ブロードキャスト型クラスタに対して新規TCP接続要求の割り当てを決定するスケジューリングノードを導入することで,さまざまな負荷分散アルゴリズムを適用可能とした.スケジューリングノードはTCP接続の開始時にのみ通信に介在するため,接続の確立後にスケジューリングノードが故障しても確立済み接続は影響を受けない.
提案手法をOS拡張機能としてLinuxカーネルに実装し,さらにスケジューラとして最小接続数優先スケジューラ及びリクエストされたファイルの局所性を考慮したスケジューラを実装した.SPECweb2005 Supportベンチマークを用いた評価実験によって,最小接続数優先スケジューラによって既存手法よりも13%多くのリクエストを処理でき,また局所性を考慮したスケジューラによってダウンロード速度基準を満たさないリクエスト数を48%削減できることを示した.

(2012年8月28日受付)