OpenFlowスイッチによる Webサーバの動的負荷分散 · OpenFlow とは 12/01/31...

37
1 池田 賢斗 (Kento Ikeda) 早稲田大学基幹理工学部情報理工学科 後藤研究室 4卒業論文審査会 2011年度 卒業論文発表 12/01/31 OpenFlowスイッチによる Webサーバの動的負荷分散

Transcript of OpenFlowスイッチによる Webサーバの動的負荷分散 · OpenFlow とは 12/01/31...

Page 1: OpenFlowスイッチによる Webサーバの動的負荷分散 · OpenFlow とは 12/01/31 卒業論文審査会 3 OpenFlow. スイッチ OpenFlow. Controller ! スイッチの機能をスイッチ部とコントローラ部に分割’!

1

池田 賢斗 (Kento  Ikeda)  早稲田大学基幹理工学部情報理工学科  

後藤研究室 4年  

卒業論文審査会

2011年度 卒業論文発表  

12/01/31

OpenFlowスイッチによる  Webサーバの動的負荷分散

Page 2: OpenFlowスイッチによる Webサーバの動的負荷分散 · OpenFlow とは 12/01/31 卒業論文審査会 3 OpenFlow. スイッチ OpenFlow. Controller ! スイッチの機能をスイッチ部とコントローラ部に分割’!

研究の背景 n インターネット利用が拡大  •  複数のサーバマシンをバックエンドサーバとして  使用する構成を取ることが多い  

n バックエンドサーバの処理能力が不均一な  場合がある  •  各サーバに対するリクエストの配分を  適切に行う必要がある  

12/01/31 卒業論文審査会 2

柔軟なネットワーク制御が実現可能な  OpenFlowスイッチング技術に着目

Page 3: OpenFlowスイッチによる Webサーバの動的負荷分散 · OpenFlow とは 12/01/31 卒業論文審査会 3 OpenFlow. スイッチ OpenFlow. Controller ! スイッチの機能をスイッチ部とコントローラ部に分割’!

OpenFlow  とは

12/01/31 卒業論文審査会 3

OpenFlow  スイッチ

OpenFlow  Controller

n  スイッチの機能をスイッチ部とコントローラ部に分割  n  フロー単位で通信を制御可能  

•  レイヤ4までの情報の組み合わせでフローを識別  

n  各種ヘッダ情報の書き換え  •  ポート番号、IPアドレス、MACアドレスなど  レイヤ4以下のヘッダ情報は書き換えが可能  

柔軟なネットワーク制御が実現可能

TCPコネクションごとに1つのフローとみなすことも可能

レイヤ1:物理ポート等 レイヤ2:MACアドレス レイヤ3:IPアドレス レイヤ4:ポート番号

Page 4: OpenFlowスイッチによる Webサーバの動的負荷分散 · OpenFlow とは 12/01/31 卒業論文審査会 3 OpenFlow. スイッチ OpenFlow. Controller ! スイッチの機能をスイッチ部とコントローラ部に分割’!

12/01/31 卒業論文審査会 4

OpenFlow  スイッチ

OpenFlow  Controller

Client     Web  Server  群

Internet

研究テーマ OpenFlowスイッチによる  Webサーバの動的負荷分散

Page 5: OpenFlowスイッチによる Webサーバの動的負荷分散 · OpenFlow とは 12/01/31 卒業論文審査会 3 OpenFlow. スイッチ OpenFlow. Controller ! スイッチの機能をスイッチ部とコントローラ部に分割’!

研究目的

n OpenFlowスイッチを用いたサーバ負荷分散技術  について検討して考察を行う  

n バックエンドサーバの処理能力を考慮した  リクエストの動的な振り分けを行うことにより、  応答時間が短く安定したシステムを構築する

12/01/31 卒業論文審査会 5

Page 6: OpenFlowスイッチによる Webサーバの動的負荷分散 · OpenFlow とは 12/01/31 卒業論文審査会 3 OpenFlow. スイッチ OpenFlow. Controller ! スイッチの機能をスイッチ部とコントローラ部に分割’!

² OpenFlow  ControllerからHTTP  HEAD  要求を  バックエンドサーバに一定間隔で送信し、  その応答時間を測定  

² 測定結果に基づき、各サーバに割り当てるリクエスト数の比率を動的に変更  

提案手法  HTTP  HEAD  要求に対する、サーバの応答時間を性能指標とする負荷分散

卒業論文審査会 6 6 Web  Server

OpenFlow  スイッチ

Internet

OpenFlow  Controller

12/01/31

各サーバの処理能力に応じた  動的なリクエストの振り分けが可能

Page 7: OpenFlowスイッチによる Webサーバの動的負荷分散 · OpenFlow とは 12/01/31 卒業論文審査会 3 OpenFlow. スイッチ OpenFlow. Controller ! スイッチの機能をスイッチ部とコントローラ部に分割’!

実証実験

n 実機を用いた実験により提案手法の  評価を行う  

n 実験の方針  •  実験1:  提案手法の動作確認  •  実験2:  提案手法の優位性評価

12/01/31 卒業論文審査会 7

Page 8: OpenFlowスイッチによる Webサーバの動的負荷分散 · OpenFlow とは 12/01/31 卒業論文審査会 3 OpenFlow. スイッチ OpenFlow. Controller ! スイッチの機能をスイッチ部とコントローラ部に分割’!

実験機器の仕様

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スイッチの試作と評価,”  日本電気株式会社システムプラットフォーム研究所

Page 9: OpenFlowスイッチによる Webサーバの動的負荷分散 · OpenFlow とは 12/01/31 卒業論文審査会 3 OpenFlow. スイッチ OpenFlow. Controller ! スイッチの機能をスイッチ部とコントローラ部に分割’!

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サーバベンチマークツール

Page 10: OpenFlowスイッチによる Webサーバの動的負荷分散 · OpenFlow とは 12/01/31 卒業論文審査会 3 OpenFlow. スイッチ OpenFlow. Controller ! スイッチの機能をスイッチ部とコントローラ部に分割’!

12/01/31 卒業論文審査会 10

処理能力が高いserver1  により多くのリクエストが振り分けられている  

実験結果  1.1    通常時の提案手法の動作検証

Page 11: OpenFlowスイッチによる Webサーバの動的負荷分散 · OpenFlow とは 12/01/31 卒業論文審査会 3 OpenFlow. スイッチ OpenFlow. Controller ! スイッチの機能をスイッチ部とコントローラ部に分割’!

12/01/31 卒業論文審査会 11

300~450  [sec]  の間、人為的にserver3の性能を劣化させた

処理能力が低いserverへの リクエストの振り分けが動的に少なくなっている  

実験結果  1.2    性能が劣化したserverが出現した時の提案手法の動作検証

Page 12: OpenFlowスイッチによる Webサーバの動的負荷分散 · OpenFlow とは 12/01/31 卒業論文審査会 3 OpenFlow. スイッチ OpenFlow. Controller ! スイッチの機能をスイッチ部とコントローラ部に分割’!

実験  2  :  提案手法の優位性評価実験

12/01/31 卒業論文審査会 12

Server  1

OpenFlow  スイッチ

OpenFlow  Controller

Client

hOperf  を用いて、HTTP  GET  要求を  10  ~  120  req/s  の割合で発生させ、サーバ上のCGIプログラムを実行させる  

①提案手法  ②ラウンドロビン  ③ランダム  のスケジューリングアルゴリズムにより  リクエストを振り分け、応答時間について比較を行う  

Server  2 Server  3

Page 13: OpenFlowスイッチによる Webサーバの動的負荷分散 · OpenFlow とは 12/01/31 卒業論文審査会 3 OpenFlow. スイッチ OpenFlow. Controller ! スイッチの機能をスイッチ部とコントローラ部に分割’!

12/01/31 卒業論文審査会 13

HTTP  応答時間の平均値の特性

提案手法の方が  応答時間が短い  

Page 14: OpenFlowスイッチによる Webサーバの動的負荷分散 · OpenFlow とは 12/01/31 卒業論文審査会 3 OpenFlow. スイッチ OpenFlow. Controller ! スイッチの機能をスイッチ部とコントローラ部に分割’!

12/01/31 卒業論文審査会 14

HTTP  応答時間の標準偏差の特性

提案手法の方が  応答時間が安定  

Page 15: OpenFlowスイッチによる Webサーバの動的負荷分散 · OpenFlow とは 12/01/31 卒業論文審査会 3 OpenFlow. スイッチ OpenFlow. Controller ! スイッチの機能をスイッチ部とコントローラ部に分割’!

まとめ

n 本研究では、サーバ負荷分散を行うための有効な  手段としてOpenFlow  スイッチング技術に着目  

n 提案手法のほうが、サーバのHTTP応答時間が  短く安定していることを確認  

n 提案手法はコントローラ部の実装のみで適用でき、  導入は容易

12/01/31 卒業論文審査会 15

Page 16: OpenFlowスイッチによる Webサーバの動的負荷分散 · OpenFlow とは 12/01/31 卒業論文審査会 3 OpenFlow. スイッチ OpenFlow. Controller ! スイッチの機能をスイッチ部とコントローラ部に分割’!

今後の課題 n OpenFlowのパフォーマンス考察  •  Controller  へ問い合わせる際の遅延  

n 提案手法の拡張  •  サーバ負荷分散以外の分野への拡張  

12/01/31 卒業論文審査会 16

Page 17: OpenFlowスイッチによる Webサーバの動的負荷分散 · OpenFlow とは 12/01/31 卒業論文審査会 3 OpenFlow. スイッチ OpenFlow. Controller ! スイッチの機能をスイッチ部とコントローラ部に分割’!

12/01/31 卒業論文審査会 17

ご清聴ありがとうございました

Page 18: OpenFlowスイッチによる Webサーバの動的負荷分散 · OpenFlow とは 12/01/31 卒業論文審査会 3 OpenFlow. スイッチ OpenFlow. Controller ! スイッチの機能をスイッチ部とコントローラ部に分割’!

12/01/31 卒業論文審査会 18

補足資料

Page 19: OpenFlowスイッチによる Webサーバの動的負荷分散 · OpenFlow とは 12/01/31 卒業論文審査会 3 OpenFlow. スイッチ OpenFlow. Controller ! スイッチの機能をスイッチ部とコントローラ部に分割’!

レイヤ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)ルーティング

フロースイッチング

フロー定義に対するアクションに従い、エンドツーエンドで  最適な経路を選択して転送すること

Page 20: OpenFlowスイッチによる Webサーバの動的負荷分散 · OpenFlow とは 12/01/31 卒業論文審査会 3 OpenFlow. スイッチ OpenFlow. Controller ! スイッチの機能をスイッチ部とコントローラ部に分割’!

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

本研究におけるフロー定義

Page 21: OpenFlowスイッチによる Webサーバの動的負荷分散 · OpenFlow とは 12/01/31 卒業論文審査会 3 OpenFlow. スイッチ OpenFlow. Controller ! スイッチの機能をスイッチ部とコントローラ部に分割’!

OpenFlowとL2/L3スイッチとの違い n スイッチの転送部と制御部を独立・再構成

12/01/31 卒業論文審査会 21 OpenFlow Switch

Controller

転送部

制御部

OpenFlowプロトコル

L2/L3スイッチ

IPベースのルーティング  によるパケット転送方式

フロー単位で経路制御や  QoSを行う方式

高速かつ柔軟な  ネットワーク環境へ

制御部

転送部

Page 22: OpenFlowスイッチによる Webサーバの動的負荷分散 · OpenFlow とは 12/01/31 卒業論文審査会 3 OpenFlow. スイッチ OpenFlow. Controller ! スイッチの機能をスイッチ部とコントローラ部に分割’!

OpenFlowのアーキテクチャ n OpenFlowスイッチ(転送部)  •  フローテーブルを見てパケット転送を行う  

n OpenFlowコントローラ(制御部)  •  OpenFlowスイッチで構成されるネットワーク全体の  ルーティングの計算を行い、フローテーブルを作成する

•  ソフトウェアで制御する  n OpenFlowプロトコル  •  OpenFlowスイッチとOpenFlowコントローラ間のやりとりを行うためのプロトコル  

12/01/31 卒業論文審査会 22

Page 23: OpenFlowスイッチによる Webサーバの動的負荷分散 · OpenFlow とは 12/01/31 卒業論文審査会 3 OpenFlow. スイッチ OpenFlow. Controller ! スイッチの機能をスイッチ部とコントローラ部に分割’!

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()    上記の処理をコントローラに追加し、一定間隔で  バックエンドサーバにヘッダ要求を行う

Page 24: OpenFlowスイッチによる Webサーバの動的負荷分散 · OpenFlow とは 12/01/31 卒業論文審査会 3 OpenFlow. スイッチ OpenFlow. Controller ! スイッチの機能をスイッチ部とコントローラ部に分割’!

サーバに対するアクセスの割り当て量の計算

n         台のWeb  サーバがあるときの、  任意のサーバ  に対する割り当て

12/01/31 卒業論文審査会 24

kn

request _ ratek

replyTimei :  HTTPヘッダ要求の応答時間

request _ ratek =replyTimei

i=1

n

!replyTimek

Page 25: OpenFlowスイッチによる Webサーバの動的負荷分散 · OpenFlow とは 12/01/31 卒業論文審査会 3 OpenFlow. スイッチ OpenFlow. Controller ! スイッチの機能をスイッチ部とコントローラ部に分割’!

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サーバの状態を判断する事が可能  

Page 26: OpenFlowスイッチによる Webサーバの動的負荷分散 · OpenFlow とは 12/01/31 卒業論文審査会 3 OpenFlow. スイッチ OpenFlow. Controller ! スイッチの機能をスイッチ部とコントローラ部に分割’!

HTTP  リクエスト n HTTP  の代表的なメソッド  •  GET  ‒ URIで指定したリソースやリソースの処理結果を要求  

•  HEAD  ‒ GETと同じレスポンスのHTTP  ヘッダのみを要求  ‒ コンテンツの存在確認や、更新状況などを調べる  ために利用

12/01/31 卒業論文審査会 26

※HTTP  メッセージは、ヘッダとボディからなる  ※提案手法では、測定によりネットワークとWeb  サーバに            かかる負荷を小さくするため、GET  要求ではなくHEAD              要求とした

Page 27: OpenFlowスイッチによる Webサーバの動的負荷分散 · OpenFlow とは 12/01/31 卒業論文審査会 3 OpenFlow. スイッチ OpenFlow. Controller ! スイッチの機能をスイッチ部とコントローラ部に分割’!

12/01/31 卒業論文審査会 27

実験1  :  提案手法の動作検証実験結果  各Webサーバへのリクエスト数の割合

300  ~  450  [sec]  の間、Server3  の処理能力を人為的に劣化させた

Page 28: OpenFlowスイッチによる Webサーバの動的負荷分散 · OpenFlow とは 12/01/31 卒業論文審査会 3 OpenFlow. スイッチ OpenFlow. Controller ! スイッチの機能をスイッチ部とコントローラ部に分割’!

HTTP  応答時間の中央値の比較

12/01/31 卒業論文審査会 28

提案手法の方が  応答時間が短い  

Page 29: OpenFlowスイッチによる Webサーバの動的負荷分散 · OpenFlow とは 12/01/31 卒業論文審査会 3 OpenFlow. スイッチ OpenFlow. Controller ! スイッチの機能をスイッチ部とコントローラ部に分割’!

12/01/31 卒業論文審査会 29

応答時間(平均値)の比較 応答時間(中央値)の比較

Page 30: OpenFlowスイッチによる Webサーバの動的負荷分散 · OpenFlow とは 12/01/31 卒業論文審査会 3 OpenFlow. スイッチ OpenFlow. Controller ! スイッチの機能をスイッチ部とコントローラ部に分割’!

エラー率の比較

12/01/31 卒業論文審査会 30

提案手法の方が  エラー率が低い  

Page 31: OpenFlowスイッチによる Webサーバの動的負荷分散 · OpenFlow とは 12/01/31 卒業論文審査会 3 OpenFlow. スイッチ OpenFlow. Controller ! スイッチの機能をスイッチ部とコントローラ部に分割’!

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 高負荷時のシステムの挙動を見たい場合などに使用する

Page 32: OpenFlowスイッチによる Webサーバの動的負荷分散 · OpenFlow とは 12/01/31 卒業論文審査会 3 OpenFlow. スイッチ OpenFlow. Controller ! スイッチの機能をスイッチ部とコントローラ部に分割’!

hOperf n Webサーバベンチマークツール  •  毎秒のリクエスト数を指定できる  •  ベンチマーク結果として、  ‒ HTTPコネクションの生存時間(HTTP応答時間)  ‒ コネクションの確立(3-­‐way  handshake)にかかった時間  ‒ エラー率  の情報を取得できる。  

12/01/31 卒業論文審査会 32

Page 33: OpenFlowスイッチによる Webサーバの動的負荷分散 · OpenFlow とは 12/01/31 卒業論文審査会 3 OpenFlow. スイッチ OpenFlow. Controller ! スイッチの機能をスイッチ部とコントローラ部に分割’!

n CGI(Common  Gateway  Interface)  •  Webサーバが外部プログラムを呼び出す  サーバサイドアプリケーションの仕組み  

•  プログラムの処理結果に基づいて動的に  データを生成し、送出することが可能  

12/01/31 卒業論文審査会 33

n 標準偏差 •  Standard  Deviakon  •  データの散らばりの度合いを示す数値  

Page 34: OpenFlowスイッチによる Webサーバの動的負荷分散 · OpenFlow とは 12/01/31 卒業論文審査会 3 OpenFlow. スイッチ OpenFlow. Controller ! スイッチの機能をスイッチ部とコントローラ部に分割’!

Webサービスではスケールアウトが好まれる

n スケールアップ  •  サーバの単体性能を上げてシステム全体の性能を上げること  

n スケールアウト  •  サーバ負荷分散で、複数台のサーバを並べて  システム全体の性能を上げること  

12/01/31 卒業論文審査会 34

ユーザ数やサービス規模の予測がしづらいため、  必要にあわせて段階的に設備投資をしていけるため

Page 35: OpenFlowスイッチによる Webサーバの動的負荷分散 · OpenFlow とは 12/01/31 卒業論文審査会 3 OpenFlow. スイッチ OpenFlow. Controller ! スイッチの機能をスイッチ部とコントローラ部に分割’!

関連研究(1) n TCP  SYN  と SYN  ACK  を用いたサーバ性能指標のサーバ負荷分散への応用      安藤竜一,  太田聡(富山県立大学,電子情報通信学会技術研究報告)  

•  SYN  パケットのdrop率を性能指標とした  サーバ負荷分散方式と、従来の技術である  IPVSを比較し、提案方式の有効性を示している  ※IPVS(IP  Virtual  Server)

12/01/31 卒業論文審査会 35

Page 36: OpenFlowスイッチによる Webサーバの動的負荷分散 · OpenFlow とは 12/01/31 卒業論文審査会 3 OpenFlow. スイッチ OpenFlow. Controller ! スイッチの機能をスイッチ部とコントローラ部に分割’!

関連研究(2) n Plug-­‐n-­‐Serve:  Load-­‐Balancing  Web  Traffic    using  OpenFlow       

•  ネットワークの状態とサーバのCPUの使用率を  監視し、最適な経路とサーバ選択を決定する研究

12/01/31 卒業論文審査会 36

Page 37: OpenFlowスイッチによる Webサーバの動的負荷分散 · OpenFlow とは 12/01/31 卒業論文審査会 3 OpenFlow. スイッチ OpenFlow. Controller ! スイッチの機能をスイッチ部とコントローラ部に分割’!

参考文献 •  [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