OpenFlowスイッチによる Webサーバの動的負荷分散 · OpenFlow とは 12/01/31...
Transcript of OpenFlowスイッチによる Webサーバの動的負荷分散 · OpenFlow とは 12/01/31...
1
池田 賢斗 (Kento Ikeda) 早稲田大学基幹理工学部情報理工学科
後藤研究室 4年
卒業論文審査会
2011年度 卒業論文発表
12/01/31
OpenFlowスイッチによる Webサーバの動的負荷分散
研究の背景 n インターネット利用が拡大 • 複数のサーバマシンをバックエンドサーバとして 使用する構成を取ることが多い
n バックエンドサーバの処理能力が不均一な 場合がある • 各サーバに対するリクエストの配分を 適切に行う必要がある
12/01/31 卒業論文審査会 2
柔軟なネットワーク制御が実現可能な OpenFlowスイッチング技術に着目
OpenFlow とは
12/01/31 卒業論文審査会 3
OpenFlow スイッチ
OpenFlow Controller
n スイッチの機能をスイッチ部とコントローラ部に分割 n フロー単位で通信を制御可能
• レイヤ4までの情報の組み合わせでフローを識別
n 各種ヘッダ情報の書き換え • ポート番号、IPアドレス、MACアドレスなど レイヤ4以下のヘッダ情報は書き換えが可能
柔軟なネットワーク制御が実現可能
TCPコネクションごとに1つのフローとみなすことも可能
レイヤ1:物理ポート等 レイヤ2:MACアドレス レイヤ3:IPアドレス レイヤ4:ポート番号
12/01/31 卒業論文審査会 4
OpenFlow スイッチ
OpenFlow Controller
Client Web Server 群
Internet
研究テーマ OpenFlowスイッチによる Webサーバの動的負荷分散
研究目的
n OpenFlowスイッチを用いたサーバ負荷分散技術 について検討して考察を行う
n バックエンドサーバの処理能力を考慮した リクエストの動的な振り分けを行うことにより、 応答時間が短く安定したシステムを構築する
12/01/31 卒業論文審査会 5
² OpenFlow ControllerからHTTP HEAD 要求を バックエンドサーバに一定間隔で送信し、 その応答時間を測定
² 測定結果に基づき、各サーバに割り当てるリクエスト数の比率を動的に変更
提案手法 HTTP HEAD 要求に対する、サーバの応答時間を性能指標とする負荷分散
卒業論文審査会 6 6 Web Server
OpenFlow スイッチ
Internet
OpenFlow Controller
12/01/31
各サーバの処理能力に応じた 動的なリクエストの振り分けが可能
実証実験
n 実機を用いた実験により提案手法の 評価を行う
n 実験の方針 • 実験1: 提案手法の動作確認 • 実験2: 提案手法の優位性評価
12/01/31 卒業論文審査会 7
実験機器の仕様
12/01/31 卒業論文審査会 8
Server 1
OpenFlow スイッチ
OpenFlow Controller
Client
Server 2 Server 3
機器 CPU Memory
NOX コントローラ 4 CPUs : 3.058GHz * 4 4 GB
Web サーバ1 4 CPUs : 3.058GHz * 4 4 GB
Web サーバ2 1 CPU : 2.660GHz * 1 1 GB
Web サーバ3 1 CPU : 2.260GHz * 1 1 GB
クライアント 2 CPUs : 3.160GHz * 2 3 GB
OpenFlow スイッチ
NEC IP8800/S3640-‐24T S/W: OS-‐F3L Ver. 11.1.C.Ae H/W: AX-‐3640-‐24TE-‐L ※既存のL3 スイッチをベースに ファーム ウェアの改造によって OpenFlow機能を持たせたもの
*
*“OpenFlowスイッチの試作と評価,” 日本電気株式会社システムプラットフォーム研究所
12/01/31 卒業論文審査会 9 Server 1
OpenFlow スイッチ
OpenFlow Controller
Client
hOperf* を用いて、サーバ上の10kByte のファイルに対してHTTP GET 要求を 60 req/s の割合で発生させる
提案手法によりリクエストを振り分け、 各サーバのデータ通信量を測定
※Web サーバ : 3台 ※生存監視間隔 : 10秒
Server 2 Server 3
実験 1 : 提案手法の動作検証実験
*hOperf ・HTTP GET要求を発生させる ・毎秒のリクエスト数を指定できる、 Webサーバベンチマークツール
12/01/31 卒業論文審査会 10
処理能力が高いserver1 により多くのリクエストが振り分けられている
実験結果 1.1 通常時の提案手法の動作検証
12/01/31 卒業論文審査会 11
300~450 [sec] の間、人為的にserver3の性能を劣化させた
処理能力が低いserverへの リクエストの振り分けが動的に少なくなっている
実験結果 1.2 性能が劣化したserverが出現した時の提案手法の動作検証
実験 2 : 提案手法の優位性評価実験
12/01/31 卒業論文審査会 12
Server 1
OpenFlow スイッチ
OpenFlow Controller
Client
hOperf を用いて、HTTP GET 要求を 10 ~ 120 req/s の割合で発生させ、サーバ上のCGIプログラムを実行させる
①提案手法 ②ラウンドロビン ③ランダム のスケジューリングアルゴリズムにより リクエストを振り分け、応答時間について比較を行う
Server 2 Server 3
12/01/31 卒業論文審査会 13
HTTP 応答時間の平均値の特性
提案手法の方が 応答時間が短い
12/01/31 卒業論文審査会 14
HTTP 応答時間の標準偏差の特性
提案手法の方が 応答時間が安定
まとめ
n 本研究では、サーバ負荷分散を行うための有効な 手段としてOpenFlow スイッチング技術に着目
n 提案手法のほうが、サーバのHTTP応答時間が 短く安定していることを確認
n 提案手法はコントローラ部の実装のみで適用でき、 導入は容易
12/01/31 卒業論文審査会 15
今後の課題 n OpenFlowのパフォーマンス考察 • Controller へ問い合わせる際の遅延
n 提案手法の拡張 • サーバ負荷分散以外の分野への拡張
12/01/31 卒業論文審査会 16
12/01/31 卒業論文審査会 17
ご清聴ありがとうございました
12/01/31 卒業論文審査会 18
補足資料
レイヤ4以下の情報の組み合わせで、特定の通信トラフィックを識別し、“フロー”と定義する
12/01/31 卒業論文審査会 19
フロー定義
Dst MAC
Ether Type
VLAN ID
VLAN Priority
Src MAC
Dst IP
IP Proto
IP ToS
Src IP
TCP/UDP Src Port
TCP/UDP Dst Port Data Ingress
Port
L1 L2 L3 L4
L2(MAC)スイッチング L3(IP)ルーティング
フロースイッチング
フロー定義に対するアクションに従い、エンドツーエンドで 最適な経路を選択して転送すること
12/01/31 卒業論文審査会 20
*順方向 : Internet → Web Server **逆方向: Web Server → Internet
l 順方向*のフロー: • L4までのすべての情報の組み合わせをフローとして定義
l 逆方向**のフロー: • L2までの情報の組み合わせをフローとして定義 (既存のL2スイッチング)
すべてのSYN がController に問い合わせがくる
Controller に問い合わせはこない
OpenFlow スイッチ
OpenFlow Controller
Client Web Server 群
Internet
本研究におけるフロー定義
OpenFlowとL2/L3スイッチとの違い n スイッチの転送部と制御部を独立・再構成
12/01/31 卒業論文審査会 21 OpenFlow Switch
Controller
転送部
制御部
OpenFlowプロトコル
L2/L3スイッチ
IPベースのルーティング によるパケット転送方式
フロー単位で経路制御や QoSを行う方式
高速かつ柔軟な ネットワーク環境へ
制御部
転送部
OpenFlowのアーキテクチャ n OpenFlowスイッチ(転送部) • フローテーブルを見てパケット転送を行う
n OpenFlowコントローラ(制御部) • OpenFlowスイッチで構成されるネットワーク全体の ルーティングの計算を行い、フローテーブルを作成する
• ソフトウェアで制御する n OpenFlowプロトコル • OpenFlowスイッチとOpenFlowコントローラ間のやりとりを行うためのプロトコル
12/01/31 卒業論文審査会 22
OpenFlow Controller の実装
12/01/31 卒業論文審査会 23
n Nox を利用 • 最も歴史が古く、利用者も多いコントローラ • オープンソースで開発されたコントローラであり、 C++及びPython の開発環境を提供する
n HTTP ヘッダ要求の実装 import hOplib
conn = hOplib.HTTPConneckon(server_ip) conn.request('HEAD', "/") resp = conn.getresponse() conn.close() 上記の処理をコントローラに追加し、一定間隔で バックエンドサーバにヘッダ要求を行う
サーバに対するアクセスの割り当て量の計算
n 台のWeb サーバがあるときの、 任意のサーバ に対する割り当て
12/01/31 卒業論文審査会 24
kn
request _ ratek
replyTimei : HTTPヘッダ要求の応答時間
request _ ratek =replyTimei
i=1
n
!replyTimek
HTTP HEAD リクエストに対するレンスポンスの遅延時間の測定
12/01/31 卒業論文審査会 25
SYN
ACK
SYN/ACK
host Webサーバ
kme
HTTP HEAD
HTTP DATA
ACK FIN/ACK
ACK
FIN/ACK この時間を測定
n HTTP HEAD リクエストを対象サーバへ送信し、その応答時間を測定
n HTTPサーバの状態を判断する事が可能
HTTP リクエスト n HTTP の代表的なメソッド • GET ‒ URIで指定したリソースやリソースの処理結果を要求
• HEAD ‒ GETと同じレスポンスのHTTP ヘッダのみを要求 ‒ コンテンツの存在確認や、更新状況などを調べる ために利用
12/01/31 卒業論文審査会 26
※HTTP メッセージは、ヘッダとボディからなる ※提案手法では、測定によりネットワークとWeb サーバに かかる負荷を小さくするため、GET 要求ではなくHEAD 要求とした
12/01/31 卒業論文審査会 27
実験1 : 提案手法の動作検証実験結果 各Webサーバへのリクエスト数の割合
300 ~ 450 [sec] の間、Server3 の処理能力を人為的に劣化させた
HTTP 応答時間の中央値の比較
12/01/31 卒業論文審査会 28
提案手法の方が 応答時間が短い
12/01/31 卒業論文審査会 29
応答時間(平均値)の比較 応答時間(中央値)の比較
エラー率の比較
12/01/31 卒業論文審査会 30
提案手法の方が エラー率が低い
stress
stress is a deliberately simple workload generator for POSIX systems. It imposes a configurable amount of CPU, memory, I/O, and disk stress on the system. (hOp://weather.ou.edu/~apw/projects/stress/) 12/01/31 卒業論文審査会 31
n CPUやメモリ、ディスクに対して意図的に負荷を与えることが可能
n 高負荷時のシステムの挙動を見たい場合などに使用する
hOperf n Webサーバベンチマークツール • 毎秒のリクエスト数を指定できる • ベンチマーク結果として、 ‒ HTTPコネクションの生存時間(HTTP応答時間) ‒ コネクションの確立(3-‐way handshake)にかかった時間 ‒ エラー率 の情報を取得できる。
12/01/31 卒業論文審査会 32
n CGI(Common Gateway Interface) • Webサーバが外部プログラムを呼び出す サーバサイドアプリケーションの仕組み
• プログラムの処理結果に基づいて動的に データを生成し、送出することが可能
12/01/31 卒業論文審査会 33
n 標準偏差 • Standard Deviakon • データの散らばりの度合いを示す数値
Webサービスではスケールアウトが好まれる
n スケールアップ • サーバの単体性能を上げてシステム全体の性能を上げること
n スケールアウト • サーバ負荷分散で、複数台のサーバを並べて システム全体の性能を上げること
12/01/31 卒業論文審査会 34
ユーザ数やサービス規模の予測がしづらいため、 必要にあわせて段階的に設備投資をしていけるため
関連研究(1) n TCP SYN と SYN ACK を用いたサーバ性能指標のサーバ負荷分散への応用 安藤竜一, 太田聡(富山県立大学,電子情報通信学会技術研究報告)
• SYN パケットのdrop率を性能指標とした サーバ負荷分散方式と、従来の技術である IPVSを比較し、提案方式の有効性を示している ※IPVS(IP Virtual Server)
12/01/31 卒業論文審査会 35
関連研究(2) n Plug-‐n-‐Serve: Load-‐Balancing Web Traffic using OpenFlow
• ネットワークの状態とサーバのCPUの使用率を 監視し、最適な経路とサーバ選択を決定する研究
12/01/31 卒業論文審査会 36
参考文献 • [1] The OpenFlow Switch Consorkum,
hOp://www.openflowswitch.org/ • [2] Hardeep Uppal, Dane Brandon, OpenFlow Based Load Balancing,
CSE561: Networking Project Report, University of Washington, 2010. • [3] David Mosberger, Tai Jin, hOperf ― A Tool for Measuring Web Server
Performance, ACM SIGMETRICS Performance Evaluakon Review, p.p.31-‐37, December 2008.
• [4] Stress project page, hOp://weather.ou.edu/apw/projects/stress • [5] Nikhil Handigol, Pulg-‐n-‐Serve: Load-‐Balancing Web Traffic using
OpenFlow, ACM SIGCOMM Demo, August 2009. • [6] 安藤竜一, 太田聡, TCP SYN とSYN ACK を用いたサーバ性能指標のサーバ負荷分散への応用, 電子情報通信学会技術研究報告, p.p.97-‐102, November 2009.
12/01/31 卒業論文審査会 37