ングにその条件をセットします そうすれば Amazon EC2 インスタンスが 2 つ未満になったことを検出すると 自動的に必要な数の EC2 インスタンスをオートスケーリンググループに追加します もう一つの例をあげましょう もしインスタンスのどれか一つのレイテンシーが 15 分間にわたって 4 秒

Similar documents
PowerPoint プレゼンテーション

2010年4月~6月 協業実績報告

プロダクト仕様書 SLB

Incapsula を選択する理由 高速かつ高コストパフォーマンスのスケーラビリティを実現するクラウド ベースのロードバランサ アプリケーション パフォーマンスを向上させ サーバ負荷を軽減する最適なトラフィック配分 クライアント クラシフィケーションによるボットの特定および標的のリルート 簡単な D

使用する前に

10年オンプレで運用したmixiをAWSに移行した10の理由

Microsoft Word - 楽天㇯ㅩ㇦ㅛIaaSㇵㅼã…fiã‡¹ä»Łæ§Ÿ.doc

memcached 方式 (No Replication) 認証情報は ログインした tomcat と設定された各 memcached サーバーに認証情報を分割し振り分けて保管する memcached の方系がダウンした場合は ログインしたことのあるサーバーへのアクセスでは tomcat に認証情報

PassSureExam Best Exam Questions & Valid Exam Torrent & Pass for Sure

Oracle Un お問合せ : Oracle Data Integrator 11g: データ統合設定と管理 期間 ( 標準日数 ):5 コースの概要 Oracle Data Integratorは すべてのデータ統合要件 ( 大量の高パフォーマンス バッチ ローブンの統合プロセスおよ

ライフサイクル管理 Systemwalker Centric Manager カタログ

Windows GPO のスクリプトと Cisco NAC 相互運用性

Microsoft Word - JP-AppLabs-MySQL_Update.doc

9 WEB監視

PowerPoint プレゼンテーション

5400 エミュレーターII 構成の手引き(第6章 トラブルシューティング)

AWS Deck Template

UNIVERGE SG3000 から SG3600 Ver.6.2(2012 年モデル ) への 移行手順 All Rights Reserved, Copyright(C) NEC Corporation 2017 年 11 月 4 版

よくある問題を解決する~ 5 分でそのままつかえるソリューション by AWS ソリューションズビルダチーム

OmniTrust

主なスキル Citrix NetScaler の機能の理解 基本的な NetScaler ネットワークアーキテクチャの把握 NetScaler ライセンスの取得 インストール 管理 SSL を使用して NetScaler を保護する方法の理解 トラフィック処理および管理のための NetScaler

SSL サムプリントの検証 SSL サムプリントの検証はリモートユーザーがホストの信頼性を検証するために使用します この検証はリモートとホスト間の接続の安全性を確立して MITM 攻撃から保護するために実行する必要があります デフォルトで リモートユーザーが TCP/IP を使用してホストに接続しよ

サービス仕様 1. 提供機能一覧楽天クラウド IaaS では以下の機能をユーザに対し提供します 機能名 1 管理コンソール 2 仮想マシン 概要 ユーザが楽天クラウド IaaS の各機能を操作するための Web インターフェースです 以下の全ての機能を操作できます ユーザが占有でき

_mokuji_2nd.indd

提案書

2014 年電子情報通信学会総合大会ネットワークシステム B DNS ラウンドロビンと OpenFlow スイッチを用いた省電力法 Electric Power Reduc8on by DNS round- robin with OpenFlow switches 池田賢斗, 後藤滋樹

CloudEdgeあんしんプラス月次レポート解説書(1_0版) _docx

目次 第 1 章 環境構築 システム概要 ロードバランサ ジーンコードサーバー コンテンツサーバー (PC サイトサーバー ) コンテンツサーバー (PC サイトサーバー ) DNS... 6

更新履歴 Document No. Date Comments 次 D JP 2017/05/01 初版 1. 概要 はじめに 情報源 A10 Lightning Application Delivery Service(ADS) 導 構成 動作概要 構築概要 2. 事

Microsoft Word - ssVPN MacOS クライアントマニュアル_120版.doc

Arcserve Replication/High Availability 製品の仕組み

R80.10_FireWall_Config_Guide_Rev1

Symantec Endpoint Protection 12.1 の管理練習問題 例題 1. 管理外検出でネットワーク上のシステムを識別するとき 次のどのプロトコルが使用されますか a. ICMP b. TCP c. ARP a. UDP 2. ある管理者が Symantec Endpoint P

9. システム設定 9-1 ネットワーク設定 itmはインターネットを経由して遠隔地から操作を行ったり 異常が発生したときに電子メールで連絡を受け取ることが可能です これらの機能を利用するにはiTM 本体のネットワーク設定が必要になります 設定の手順を説明します 1. メニューリスト画面のシステム設

目次 1. はじめに SSL 通信を使用する上での課題 SSL アクセラレーターによる解決 SSL アクセラレーターの導入例 SSL アクセラレーターの効果... 6 富士通の SSL アクセラレーター装置のラインナップ... 8

PC にソフトをインストールすることによって OpenVPN でセキュア SAMBA へ接続することができます 注意 OpenVPN 接続は仮想 IP を使用します ローカル環境にて IP 設定が被らない事をご確認下さい 万が一仮想 IP とローカル環境 IP が被るとローカル環境内接続が行えなくな

Microsoft PowerPoint - CLUSTERPRO_BIG-IP.ppt[読み取り専用]

クラウド時代のロードバランサ

PHP 開発ツール Zend Studio PHP アフ リケーションサーハ ー Zend Server OSC Tokyo/Spring /02/28 株式会社イグアスソリューション事業部

Team Foundation Server 2018 を使用したバージョン管理 補足資料

利用約款別紙 SkyCDP for AWS 基本サービス仕様書 この仕様書は SkyCDP for AWS の基本サービスに関する内容 方法について記述したものです 尚 SkyCDP for AWS オプションサービスをご利用のお客様は各 SkyCDP for AWS オプションサービスのご契約内容

リバースプロキシー(冗長構成)構築手順

延命セキュリティ製品 製品名お客様の想定対象 OS McAfee Embedded Control 特定の業務で利用する物理 PC 仮想 PC や Server 2003 Server 2003 ホワイトリスト型 Trend Micro Safe Lock 特定の業務で利用するスタンドアロン PC

ケットを持って帰ってきたとき その駐車を行ってくれた人は そのチケットにより駐車場所を特定し その車をあな たに返してくれます クッキーは ネットワーク管理者や web マスターが彼等のサイトを個人ベースにカスタマイズする事を可能にしてくれます クッキーは 情報の個人対応 オンライン販売を補助する事

Acronis Snap Deploy 5

UCCX ソリューションの ECDSA 証明書について

SIOS Protection Suite for Linux v9.3.2 AWS Direct Connect 接続クイックスタートガイド 2019 年 4 月

<4D F736F F D2089E696CA8F4390B35F B838B CA816A>

<4D F736F F F696E74202D E656D6F73837D836C815B C B CC90DA91B182CC8E DD82F0979D89F082B582E682A F38DFC E >

TimeTracker FX セットアップガイド 補足資料 2/14 0. はじめに 本資料は [TimeTracker FX セットアップガイド ] では説明していない Microsoft SQL Server 2005 ( 以下 SQL Server 2005) の設定や操作方法を補足するための

シナリオ:サイトツーサイト VPN の設定

INDEX Demo の目的 ゴール Scenario 1: 自動化 Scenario 2: 効率化 2

【アフィリコードプラス/管理者】システム・デザイン設定マニュアル

Microsoft PowerPoint VIOPS.ppt

FUJITSU Cloud Service for OSS 認証サービス サービス仕様書

Mobile Access簡易設定ガイド

Microsoft Word - NW2013_Installation_Guide_English_no_screenshots_JPN.doc

Microsoft Word - Qsync設定の手引き.docx

アプリケーション インスペクションの特別なアクション(インスペクション ポリシー マップ)

TECHNICAL BRIEF RealServer ロードバランス時の BIG-IP 設定方法 本ドキュメントは複数の RealServer をロードバランスする際の BIG-IP コントローラの設定方法を紹介するもので F5 Networks Japan K.K. と RealNetworks

目次 1. Azure Storage をインストールする Azure Storage のインストール Azure Storage のアンインストール Azure Storage を使う ストレージアカウントの登録... 7

中継サーバを用いたセキュアな遠隔支援システム

PowerPoint Presentation

PfRv2 での Learn-List と PfR-Map の設定

X-MON 3.2.0

McAfee Application Control ご紹介

MIRACLE LoadBalancerを使用したネットワーク構成と注意点

WP-Swivel-Multifactor-Authentication-JP indd

機能紹介:コンテキスト分析エンジン

Imperva Incapsula Web サイト セキュリティ データシート クラウドを利用したアプリケーション セキュリティ クラウドベースの Web サイト セキュリティ ソリューションである Imperva Incapsula は 業界をリードする WAF 技術に加え 強力な二要素認証および

Shareresearchオンラインマニュアル

QualysGuard(R) Release Notes

スライド 1

Oracle Enterprise Managerシステム監視プラグイン・インストレーション・ガイドfor Juniper Networks NetScreen Firewall, 10gリリース2(10.2)

CLUSTERPRO MC ProcessSaver 2.1 for Windows 構築ガイド 2016(Mar) NEC Corporation はじめに 責任範囲 適用範囲 概要 事前準備 クラスタ設定

インストールガイド システム必要条件 オペレーティングシステム Nintex Workflow 2010 は Microsoft Windows Server 2008 または 2008 R2 にインストールする必要があります ブラウザークライアント Microsoft Internet Explo

内容環境... 3 対応 OS の変更... 3 関連アプリケーションの追加... 4 機能追加... 5 グラフ機能... 5 稼働率... 8 サービス一括削除 自動復旧エスカレーションコマンド AWS カスタムメトリックス監視 NRPE 任意監視... 11

Microsoft Word - TCPIPポートモニタ02_PDF版_.doc

メールデータ移行手順

ServerView RAID Manager VMware vSphere ESXi 6 インストールガイド

2

トラブルシューティング集

Exam4Docs Get your certification with ease by studying with our valid and latest training material.

FUJITSU Cloud Service K5 認証サービス サービス仕様書

ライセンス管理

サーバセキュリティサービスアップグレード手順書 Deep Security 9.6SP1 (Windows) NEC 第 1 版 2017/08/23

ITdumpsFree Get free valid exam dumps and pass your exam test with confidence

目次 はじめに 1サーバ作成 2 初期設定 3 利用スタート 付録 Page.2

Japanese.p65

proventia_site_protector_sp8_sysreq

KSforWindowsServerのご紹介

<4D F736F F D DEC90E096BE8F C E838B82CC836A C E312E31816A2E646F63>

TFTP serverの実装

クライアント証明書インストールマニュアル

Microsoft認定資格問題集DEMO(70-642)

ソフトウェアの説明

リバースプロキシー (シングル構成) 構築手順

Confidential

IBM Internet Security Systems NTFS ファイルシステム必須 一覧の 以後にリリースされた Service Pack (Release 2 等は除く ) は特に記載の無い限りサポートいたします メモリ 最小要件 512MB 推奨要件 1GB 最小要件 9GB 推奨要件

PowerPoint プレゼンテーション

Transcription:

Elastic Load Balancing(ELB) を評価するためのベストプラクティス本ドキュメントはアマゾンウェブサービス ( 以下 AWS) の Elastic Load Balancing( エラスティックロードバランシング 以下 ELB) サービスの機能やアーキテクチャについて説明しています このベストプラクティスをご覧頂くことで ELB をテストしたり評価したりする場合によく陥る問題を回避できるようになります このホワイトペーパーは ELB を少しでも利用した経験をお持ちか 過去にソフトウェアまたはハードウェアのロードバランサを使った経験のある方を特に対象としています ELB の概要 ELB は複数の Amazon Elastic Compute Cloud( 以下 Amazon EC2) インスタンスにアプリケーションへのアクセスを自動的に分散します ELB をセットアップすることで 1つのアベイラビリティゾーンまたは複数のアベイラビリティゾーンにある Amazon EC2 インスタンスに対してアクセスの負荷分散をすることができます また ELB を使うことで耐障害性に優れたアプリケーションを構築することが出来ます さらにアプリケーションのトラフィック増加に対応可能なキャパシティをシームレスに提供します 複数のアベイラビリティゾーンに Amazon EC2 インスタンスを配置することで耐障害性のあるアプリケーションを構築することが可能です 人的操作を減らして より優れた耐障害性を実現するには ELB を使うのがよいでしょう ロードバランサの後ろに EC2 インスタンスを配置すると 複数のインスタンスや複数のアベイラビリティゾーンにわたって ロードバランサが自動的にトラフィックを分散するため 耐障害性を高めることが可能です さらに ELB は Amazon EC2 インスタンスの状態を確認します 問題のある Amazon EC2 インスタンスを検出すると ELB はそれらにトラフィックを割り当てません その代りに 健全な EC2 インスタンスに負荷を割り当てます もし複数のアベイラビリティゾーンに EC2 インスタンスをセットアップして その内の1つのアベイラビリティゾーンの EC2 インスタンス全てに問題が起こった場合 ELB は別のゾーンにある健全な EC2 インスタンスにトラフィックを送ります 問題のある EC2 インスタンスが健全な状態に回復すると ELB はそれらのインスタンスに再び負荷を分散します また ELB はそれ自体が耐障害性の高い分散型のシステムであり 高頻度に監視されています また ELB は 変化するトラフィックに応じてバックエンドに十分なキャパシティを保つ機能を持ったオートスケーリングと統合することが可能です 例えばロードバランサの後ろにある EC2 インスタンスの数が 2 つ未満にならないようにしたい場合 オートスケーリ

ングにその条件をセットします そうすれば Amazon EC2 インスタンスが 2 つ未満になったことを検出すると 自動的に必要な数の EC2 インスタンスをオートスケーリンググループに追加します もう一つの例をあげましょう もしインスタンスのどれか一つのレイテンシーが 15 分間にわたって 4 秒を越えたら EC2 インスタンスを追加したい といった場合に そのような条件をセットすることが可能です オートスケーリングはロードバランサの後ろで動作する時でさえも EC2 インスタンスに対して適切なアクションをとります もちろん オートスケーリング自体は ELB を使っている いないに関わらず スケールを変化させることが可能です ELB の主なメリットの一つは ロードバランサの管理 維持 スケーリングの複雑さを取り除いてくれることです そのサービスは必要に応じて人手を介さずに自動的にキャパシティを追加したり削除したりできるよう設計されています ELB のアーキテクチャとその動作 ELB サービスのアーキテクチャには2つの論理的なコンポーネントがあります ロードバランサとコントローラサービスです ロードバランサはトラフィックを監視し インターネットを経由してくるリクエストを処理します コントローラサービスはロードバランサを監視し 必要に応じてキャパシティを増減させ 正しく動いているか確認します

ロードバランサのスケーリングロードバランサを作成すると 流入してくるトラフィックを受け入れて Amazon EC2 インスタンスへリクエストを送るように設定する必要があります これらの設定パラメータはコントローラによって保存され 全ロードバランサが設定に基づいて正しく動作するように制御します コントローラは ロードバランサも監視し クライアントのリクエストを処理できるようキャパシティを管理します キャパシティを増やす際には より大きなリソース ( より高いパフォーマンス特性を持つリソース ) を用いるか より数多くの個別リソースを利用します ELB サービスでは ロードバランサがスケールする時にはロードバランサのドメインネームサービス (DNS) のレコードを更新します すると新しいリソー

スは DNS に登録された個別の IP アドレスを持つようになります 作成された DNS レコードは 60 秒の Time-to-Live(TTL) の設定を持ち クライアントが少なくとも 60 秒ごとに DNS を再度検索するよう想定されています デフォルトでは ELB はクライアントが DNS 名前解決を実行するときには それぞれの DNS 名前解決リクエストごとにランダムな順番で複数の IP アドレスを返します トラフィックの状況が変化すると コントローラサービスは より多くのリクエストを処理できるように 全てのアベイラビリティゾーンで均等にスケールさせます ロードバランサは ELB で登録されている Amazon EC2 インスタンスのヘルスチェックも実行します インスタンスがサービス中であり健全であると見なされるまでに ELB の設定の中で定義された対象に対してヘルスチェックが行われ 定義された回数の分だけヘルスチェックが成功する必要があります 例えば ELB で登録された複数のインスタンスに対して 仮にヘルスチェックの間隔を 20 秒に設定し ヘルスチェックの成功回数を 10 回に設定した場合 ELB がトラフィックをインスタンスに送るようになるまでに少なくとも 200 秒かかります また ヘルスチェックでは失敗回数のしきい値を設定できます 例えば ヘルスチェックの間隔を 20 秒に設定し 失敗回数のしきい値を 4 回にした場合 インスタンスがリクエストに反応しなくなり そのインスタンスがサービス停止中と見なされるまでに 80 秒かかります しかし インスタンスが終了したときには登録解除はすぐに実行されるので問題ありませんが インスタンス登録解除までに遅延が起こる場合もあり得ます このため それらのインスタンスを終了させる前にインスタンスを登録解除することが重要です もし登録が解除される場合 インスタンスは非常に短い時間でサービスから削除されます 負荷テストシナリオの計画多くの開発者は仮想プライベートサーバ (VPS) または物理ハードウェア環境の中で負荷テストツールを使ったことがあり このような状況でロードバランサの動作をどのように評価するのかを理解しています 彼らはロードバランサを評価して 次のような決断をします 1. さまざまなトラフィックレベルをサポートするために何台のアプリケーションサーバを必要とするのか? 2. レスポンスタイムを低下させることなくトラフィックを分散させるには何台のロードバランサが必要なるのか? 3. ハードウェアやネットワーク障害のイベント時にアプリケーションが動作し続けることが可能か? これらのすべての質問は重要ではありますが アプリケーションの構成の仕方によっては 上記質問の1 もしくは 2 の質問は Amazon EC2 環境では重要ではないかもしれません

もしオートスケーリングを使っていて アプリケーションサーバを必要に応じて追加したり削除したりするならば 前もって上記の決断をしなくても良くなります ELB を使っている時に2の質問を考慮する必要はありません なぜなら ELB が動作している時間とそれが処理するデータに対してのみ支払い アプリケーションを提供するために必要な実際のキャパシティに対しては支払う必要がないためです ELB の目的はアプリケーションの要求に合致するようスケールすることであり これはロードバランサ用の DNS レコードを更新することによって実現されているため ELB サービスのいくつかの特長がテストシナリオにどのように影響するかを意識する必要があります DNS 解決ロードテスト用のツールにはたくさんの種類があり それらのツールのほとんどは サーバが処理することができるトラフィックの量に基づき何台のサーバが必要とされるかという要求対処できるよう設計されています この状況でサーバの負荷をテストするには サーバがいつ飽和するかを決めるためにトラフィックを増やし 飽和点に影響を与える要素を決められるようなリクエストとレスポンスのサイズに基づいたテストを繰り返し実行します ロードバランサを作成するときには キャパシティのデフォルトのレベルが割り当てられ構成されます ELB のトラフィックにおける変化を見ると それはスケールアップしたりダウンしたりします ELB がスケールするために必要な時間は 1 分から 7 分程度であり トラフィックのプロファイルにおける変化に依存します ELB がスケールするときには IP アドレスの新しいリストで DNS レコードを更新します クライアントが増加したキャパシティを活用するために ELB は DNS レコードで TTL を 60 秒に設定しています テストの中に DNS レコードの変更を組み込むことは重要です 増加した負荷をシミュレートするために DNS の再解決と複数のテストクライアントの利用を確認しましょう そうしないと 実際に ELB がより多くの IP アドレスを割り当てたときに そのテストはずっと一つの IP アドレスに向かって負荷をかけ続けるかもしれません 実際のエンドユーザの場合は一つの IP アドレスを常に利用するわけでは無く 割り当てられた複数の IP アドレスのいずれかを利用するので このテストの動作はあまり参考にはならないでしょう スティッキーセッション ELB は cookies を使用した形でのスティッキーセッション ( セッションアフィニティとしても知られています ) をサポートする機能を持っています デフォルトではこれらの機能は無効になっており 簡単な変更で有効化できます 使用できるスティッキーセッションのポリシーは 2 種類ありますが その効果は同じではありません スティッキーセッションが有効化された ELB を使用すると ユーザがアプリケーションに継続してアクセスする

ようにバックエンドの同じインスタンスにトラフィックが送られます 負荷テストにスティッキーセッションを使うように設計するとき この特徴をどのようにテストで使用するかを決めることが重要です スティッキーセッションが負荷テストおよび実践的な場面世界の両方において どのように課題となりえるかを考えてみてください 例えば 通常サイトを提供するのに4つのインスタンスを使っているアプリケーションを考えてみます それぞれのユーザはそのインスタンスのうちの1つに 10 分継続してリクエストを送るような指示を ELB 用に含めた Cookie を受け取ります トラフィックにおける大きな変化が生じ サイトにやってくるユーザの数が 3 倍になったとき これらの新しいユーザの全ては4つのインスタンスのうちの1つにリクエストを向ける Cookie を取得します バックエンドにどれだけキャパシティを追加しても たくさんのユーザはその cookie が期限切れになるまで元々の4つのインスタンスにリクエストを送ります スティッキーセッションは強力な機能ではあるかもしれませんが 対象となるアーキテクチャにどのように合わせるか そしてアプリケーションのシナリオにより適したソリューションであるかどうかを考えることが重要です ヘルスチェック ELB はあなたが設定した構成を使って バックエンドのインスタンスにヘルスチェックを実行します ELB でインスタンスを登録したときに ヘルスチェックが特定回数無事完了するまでは インスタンスは健全であると見なされません また不成功に終わったヘルスチェックが特定回数に到達すると そのインスタンスへはトラフィックを送らないようになります ( ですが ELB には登録されてはいます )ELB に登録されている限りは ロードバランサはインスタンスにヘルスチェックし続けます ヘルスチェックの間隔を長く設定する もしくは 健全であると見なされるためのヘルスチェックの成功回数のしきい値を多く設定すると インスタンスが ELB からトラフィックを受け取り始めるまでにより時間がかかります これは バックエンドのアプリケーションインスタンスに必要なキャパシティを追加する ( オートスケーリングなどの ) 自動処理やシステムを使う場合は特に重要です アーキテクチャと負荷テストを計画するのと同様に どのようにヘルスチェックを管理するかを決めることは重要です Web サーバが反応しているかを頻繁にチェックする軽量のページをヘルスチェックで利用するか または頻繁にヘルスチェックはしないがアプリケーションすべてのパーツが適切に機能しているかをチェックする重たいページをヘルスチェックで利用するかどうかを考えてみましょう ELB からインスタンスに向けて行われるすべてのヘルスチェックリクエストは Amazon CloudWatch の監視結果には表示されませんが アプリケーションのログには ( ログが有効化されている場合 ) は書き込まれることになります あなたが構成したヘルスチェックに加えて ELB はインスタンスに対して接

続することのみのチェックを頻繁に実施しています このチェックはインスタンスの健康状態を決定するために使用されるわけではありませんが 登録したインスタンスが終了したときにサービスが検知することを保証するために使われています バックエンドの認証 SSL 暗号化がバックエンドのインスタンスとのコミュニケーションするときに使われる場合は バックエンドの認証を任意で有効にすることが出来ます この認証が構成されたときには 証明書の公開鍵が構成済みの公開鍵のホワイトリストに含まれている時のみバックエンドのインスタンスとコミュニケーションします この強力な機能はさらなるレベルの保護とセキュリティを提供しますが リクエストスループットはわずかに低くなることも意味します そのレスポンス時間によっては この特徴はあなたのアプリケーションにとって最適である場合もあれば そうではない場合もあるかもしれません テストフレームワークの選択テストのセットアップの詳細にかかわらず 負荷テストを実行するためにいくつかのソフトウェアやフレームワークを必要とするでしょう 負荷テストにおいては 時間をかけてリクエストの数を増やすことを考慮する必要があります そして複数のクライアントまたはエージェント間でリクエストを分散する必要があるかもしれません 多くの負荷テストツールは別々の負荷生成クライアントをサポートしているものもあれば テストの実装の調整を必要とする負荷テストツールもあるでしょう テストに使われる3つのシナリオは次のセクションで記述しています シングルクライアントテストシングルクライアントテストでは同じクライアントを使ってサーバへのリクエストを生成します ほとんどの場合においては テストが初期化された後は名前の再解決はされません この種類のテストの良い例は Apache Bench(ab) です もしこの種類のテストツールを使っているならば 2つのオプションがあります 1. ある特定のサンプルサイズとタイミングを持つ 個別に稼働することができるテストを書きます そしてこれらのテストを分けて起動します そうすればクライアントは名前の再解決 ( オペレーティングシステムや他の要素に依存する名前の再解決を強要することも可能でしょう ) を行うでしょう 2. 複数のクライアントインスタンスを起動しておよそ同じときに異なるインスタンス上でテストを初期化してください AWS CloudFormation を使って 負荷テストスクリプトを複数のクライアントで起動し SSH でリモートからコマンドを実行して テストを初期化することができます より多くの負荷生成クライアントをオ

ートスケーリングによって立ち上げることも出来ます ( 例えば他の負荷生成クライアントの高負荷になって 平均 CPU が特定の閾値に達したときに 負荷生成クライアントの数を増やすなど ) しかし 生成しようとしている負荷によりますが あなたのテストはクライアント側のリクエスト生成能力によって制約を受けるかもしれません この場合 分散テストを考える必要があります 組み込みのマルチクライアントテストいくつかのテストフレームワークはテストを実行するために複数のクライアントを生成します 一つの例は curl-loader というオープンソースソフトウェアのパフォーマンステストツールです それぞれのクライアントは独立したプロセス内で動作するため 自分で DNS 再解決します シングルクライアントテストのようにテストするための負荷がクライアントを使って生成できる負荷よりも大きいならば分散テストを考える必要があるかもしれません 分散テストたくさんのクライアントを使って ELB をテストするために Web サイトのテスト用の自動テストを実行することが可能なサービスプロバイダーがあります アプリケーションによっては この方法がアプリケーションの負荷テストをするのに最も簡単で効率的な方法かもしれません この種類のサービスが合わない場合は 分散テストに役立つツールを考慮する必要があるかもしれません 例えばテストを実行しその結果をテストコントローラへ返してくれるようなテストクライアント ( オープン疎ソースの Fabric フレームワークなど ) を Amazon EC2 環境に起動する方法があります 分散テストが必要となることは多くありますが 特にとても高い負荷の場合は 分散テストフレームワークを使って実際のトラフィックをシミュレートすることは最も効果的なアプローチかもしれません 推奨テストアプローチ ELB テストのプランの中にはいくつかの特別な検討事項や取り組み方あります その飽和点やブレーキングポイントのみならず 予測している 通常の トラフィックのプロファイルもまたテストすることは重要です もしサイトが通常のビジネス時間の間にトラフィックの一貫性のあるフローを受け取るような場合 トラフィックの低い場合と高い場合の落ち着いた状態をシミュレートすべきです また低い時から高くなる時 またはその逆も同様にトラフィックのプロファイルの移行があるような朝や夜の時間帯をシミュレートすべきです 短い時間でトラフィックが重大な変化を受け取ると予測するならば これをテストすべきです アプリケーションが内部のイントラネットのサイトのものであれば おそ

らくトラフィックは 1000 ユーザから 100,000 ユーザまで 5 分間で増加することは起こりえないでしょう ですが もし瞬間的なトラフィックを持つアプリケーションを構築しているのでしたら この環境でテストして ELB がどのように動作するかだけでなく アプリケーションとアプリケーション内部のコンポーネントがどのように動作するかを理解することが重要です テストの増強いったんテストツールを配置したら 負荷の増やし方を定義する必要があるでしょう 5 分おきに 50 パーセント未満のレートで負荷を増やすことが推奨されています 負荷生成のための段階的なパターンおよび線形的なパターンは ELB でうまく機能します もしランダムの負荷生成を利用するつもりならば 急激な負荷の上限を設定して ELB がスケールするまでの間 その上限を越えないようにすることが重要です ( 詳細は ELB の暖気運転の項目をご覧ください ) アプリケーションのアーキテクチャがロードバランサでのセッションアフィニティを含むならば 以下に挙げるようないくつかの追加構成ステップが必要です スティッキーセッションを伴う負荷テストあなたの構成がスティッキーセッションを活用しているならば 複数の負荷生成クライアントを使うことが重要です そうすれば ELB は実際の動きと同様に動作することが出来ます もしこれらの調整をしなければ ELB が負荷に対応するためにスケールする前に同じバックエンドのサーバに ELB はリクエストを送り続けて そのサーバのみの負荷を高めることになるでしょう このシナリオでテストするには 負荷を生成する複数のクライアントを使うテストソリューションを用いる必要があるでしょう 環境の監視 ELB のメリットの一つは Amazon CloudWatch によっていくつかのメトリクスが提供されていることです 負荷テストを実施している間で 監視すべき重要な3つのエリアがあります ロードバランサ 負荷生成クライアント そして ELB で登録されたアプリケーションインスタンスです ( アプリケーションが依存している EC2 インスタンスも同様です ) ELB の監視 ELB は Amazon CloudWatch によって次のようなメトリクスを提供します ( ドキュメントでは http://aws.amazon.com/jp/documentation/cloudwatch/ でこれらのメトリクスの詳細な情報を提供しています ) 遅延時間

リクエスト数健全なホスト数不健全なホスト数バックエンドからの 2xx-5xx のレスポンス数 ELB からの 4xx-5xx のレスポンス数 アプリケーションをテストするとき これらのメトリクスの全てを見ることは重要です 特に興味深い項目は ELB の 5xx レスポンス数 バックエンドの 5xx レスポンス数 そして遅延時間でしょう 負荷生成クライアントの監視また 負荷テスト中に負荷が正しく送信されて そのレスポンスが正しく受け取ることができていることが保証できるように複数の負荷生成クライアントを監視することは重要です もし Amazon EC2 の中でシングルテストクライアントを動作させているならば 負荷を処理するために十分スケールしていることを確認してください より高い負荷においては 複数のクライアントを使うことは重要です なぜなら そのクライアントがネットワークの帯域上の制限を受けている場合に テストの結果に影響を与えているかもしれないためです アプリケーションインスタンスの監視他のテストで監視するのとまさに同じ方法であなたのアプリケーションを監視することを推奨します 代表的なツールをご利用頂けます 例えば Linux の top コマンドや Windows 用のログパフォーマンス分析 (PAL) ですが インスタンス用に Amazon CloudWatch を使うことも出来ます (Amazon CloudWatch のドキュメントは http://aws.amazon.com/documentation/cloudwatch/ をご覧ください ) テスト中にインスタンスの動作をよく見ることが可能であることを保証するために 詳細な 1 分ごとのメトリクスをアプリケーションインスタンスのために有効にするのも良いでしょう ELB テスト時の一般的な落とし穴 ELB のキャパシティのリミットへの到達 ELB は真のキャパシティリミットに到達することは稀ですが メトリクスに基づいてスケールするまでの間に ロードバランサがこれ以上リクエストを処理することが出来ない時 HTTP 503 エラーを返す期間があり得ます ロードバランサはすべてのリクエストを待ち行列に入れようとはしません そのため ロードバランサがフル稼働である場合 追加のリクエストは失敗するでしょう もしトラフィックが時間をかけて大きくなれば この動作は正しく働きます 急激にトラフィックが増大する場合 または特殊な負荷テストシナリ

オの場合 ELB がその負荷に対応するためにスケールできるようになるよりも早い速度でトラフィックが送信されるかもしれません この状況に対処するには以下に記述した2つの選択肢があります ロードバランサの暖気運転 (Pre-Warming) リクエストに応じて ELB は予測されるトラフィックに基づいた最小スケールを持つように構成することが出来ます 瞬間的にトラフィックの増大が見込まれる場合 DDOS 攻撃がロードバランサ ( またはお客様のインスタンス ) に対して開始されるとき または負荷テストが徐々にトラフィックが増加するよう負荷テストを構成できないときにこちらは必要となります もしアプリケーションにとって典型的ではない極端な負荷での動作を評価するための負荷テストをするようでしたら AWS サポートに同意してもらい サポートにロードバランサの暖気運転をさせるよう依頼することを推奨します テストの開始日 終了日 さらに秒間で予測されるリクエストの速度とテストする典型的なリクエスト / レスポンスの合計サイズを提供する必要があります 負荷テストパラメータの管理 5 分間隔で 50% 以上のトラフィック増加をしないように負荷テストを設定することが推奨されます テストは段階的に もしくは緩やかなカーブでトラフィックを増大させる場合のどちらでもセットアップ可能です 大量の負荷にまで増加させる場合でさえも ELB は要求に応えるためにスケールするでしょう 名前の再解決クライアント側で少なくとも 1 分に 1 回名前の再解決がされない場合 ELB によって DNS に追加された新しいレコードがクライアント側で使われないことがあるでしょう これは ELB 全体では過負荷になってはいないものの クライアントが ELB で配置されているリソースの一部のみに負荷をかけ続けることを意味します これは実際のシナリオでは起こりうる問題ではありませんが 名前の再解決がされないテストツールのために クライアント側で頻繁に名前の再解決をしなければいけない問題になる可能性があります スティッキーセッションと一意的なクライアントスティッキーセッションが有効である場合 負荷テストフレームワークがテストの中でコネクションとクライアントを再利用しないことよりも むしろそれぞれのリクエストで一意のクライアントを作成することの方が重要です もしこれが実施されない場合 そのクライアントは利用可能なキャパシティのごく一部に負荷をかけしながら 同じ ELB リソースと同じバックエンドインスタンスにトラフィックを常に送るでしょう

初期のキャパシティ ELB には初期のキャパシティのスタートポイントがあり トラフィックに応じてスケールアップまたはダウンします いくつかのパターンにおいては ロードバランサに最初に届くトラフィックの量が ロードバランサの初期のキャパシティ構成で対応可能なトラフィックの量よりも大きいでしょう あるいは ロードバランサが作成されてしばらくの間使われていない場合 ( 一般的には数時間ですが 可能性としては早ければ 1 時間で ) トラフィックがロードバランサに到達する前にロードバランサがスケールダウンするかもしれません これは初期のキャパシティレベルに届くように ロードバランサをスケールアップさせなければいけないことを意味します コネクションタイムアウト ELB で登録されるインスタンスを構成するときには これらのインスタンスのアイドルタイムアウトを少なくとも 60 秒に設定することが重要です ELB は 60 秒後にアイドルコネクションをクローズします バックエンドのインスタンスが少なくとも 60 秒のタイムアウトを持つことを想定しています もしバックエンドのインスタンス側のタイムアウトを 60 秒以上に設定しなかった場合 ELB はそのインスタンスを間違って不健全なホストとして見なして そのインスタンスにトラフィックを送ることを止めてしまうかもしれません j 参考文献 ELB ページ http://aws.amazon.com/elasticloadbalancing http://aws.amazon.com/documentation/elasticloadbalancing Amazon CloudWatch ページ http://aws.amazon.com/cloudwatch http://aws.amazon.com/documentation/cloudwatch/ オートスケーリングページ http://aws.amazon.com/autoscaling http://aws.amazon.com/documentation/autoscaling 分散テストソリューション

分散負荷テストのための有望なソリューションは多くあります 以下はあなたのテストの必要性を満たすことができるかもしれないパートナーの一部のリストです さらにソリューションをお求めの場合は AWS サイトのソリューションプロバイダーセクションをご覧ください http://aws.amazon.com/solutions/solution-providers NeoTys: http://aws.amazon.com/solutions/solution-providers/neotys/ SOASTA: http://aws.amazon.com/solutions/solution-providers/soasta/ Apica: http://aws.amazon.com/solutions/solution-providers/apicasystems/ Eviware: http://aws.amazon.com/solutions/solution-providers/eviware/