Goad2.0.3を使ってAWS Lambdaで負荷テスト
Global load testing with Go = Goad ! だそうです。GoadでAWS Lambdaを使って負荷テスト!
決済の画面遷移途中で動かなくなる!などの「連続テスト」も、同時接続数や応答時間などの「限界テスト」も該当します。
Goad負荷テスト、悪用厳禁!
絶対に悪用しない様に!IPアドレスなど足跡を辿られますよ!Miraiとか組み合わせて、悪用もしてはいけません!絶対に悪用しない人だけ、以下、読んでくださいね!
IAMの運用ユーザーを作る
IAM運用ユーザーを事前に作っておいてください。IAMユーザーのアクセスキーIDとシークレットアクセスキーが必要になります。取扱には注意してください。
Goad用のインスタンス/仮想マシンを立てる
今回、テスト対象はAzureに構築したテスト環境の仮想マシンのWordPress、負荷ツールのGoadについてはAmazon Linux AMI 2017.09.1.20180115 x86_64 HVMをt2.microで建てました。Azureは負荷テストの事前申請不要との事です。以下でご確認ください。
t2.microのAMIを1台立ち上げ、SSH接続、適当なディレクトリで以下のコマンドを実行し、goad2.0.3をダウンロード。
wget https://github.com/goadapp/goad/releases/download/2.0.3/goad-linux-x86-64.zip
解凍します。
unzip goad-linux-x86-64.zip
これでgoadを使える状態となりました。
goad2.0.3を使っています
SQSのFIFOキューが、まだ、東京リージョンに対応していなとのことで、2018年2月13日の時点では、最新の goad 2.0.4ではなく、goad 2.0.3をダウンロードしました。東京よりも先進的なリージョンを使えばいいのかも。
Goad2.0.3と2.0.4では、コマンドのフラッグ(オプション)がかなり異なるので 2.0.4を使う際は、goad –helpでしっかりオプションを確認しないと、きちんとコマンドが走らないと思います。
goadのgithub
https://github.com/goadapp/goad/releases
解凍したディレクトリにて以下コマンドにてhelpを見られれば成功。
./goad --help
AWSでIAMユーザーのアクセスキーIDとシークレットアクセスキーを取得
取得したら、exportコマンドでt2.microで作ったgoad入りのEC2インスタンスに環境変数(アクセスキーID と シークレットアクセスキー)を登録します。以下、コマンドを参考にしてください。
アクセスキーIDを登録
export AWS_ACCESS_KEY_ID="hogehoge"
アクセスキーIDを確認
printenv AWS_ACCESS_KEY_ID
アクセスキーIDを登録削除
export -n AWS_ACCESS_KEY_ID
シークレットアクセスキー登録
export AWS_SECRET_ACCESS_KEY="hugahuga"
シークレットアクセスキー確認
printenv AWS_SECRET_ACCESS_KEY
シークレットアクセスキーを登録削除
export -n AWS_SECRET_ACCESS_KEY
goad実行
./goad -c 10 -n 10000 -r us-east-1,eu-west-1,ap-northeast-1 -m GET -u https://example.com
しかし、怒られます。
goad: error: unknown short flag '-r', try --help
goad: error: unknown short flag '-u', try --help
そんなフラッグ(オプション)は無いとのこと。なんと、2.0.4ではある。が、2.0.3では無い。この差はデカい。
-r はRegion(リージョン)で、-u は URL。2.0.3では両方ともに不要です。
以下で実行できます。Apache Benchのコマンドを知っている方であれば、スグに使えると思います。秒間requestが10万を越える!などのテストにお勧めです。
./goad -c 10 -n 10000 -m GET http://example.com
t2.microのgoad入りインスタンスは以下の様な画面になります。
Azureのメトリクスは次の通り。既に2回、Goad負荷テストを行っています。
AWS Lambda , CloudWatch Logs , SQS も自動で構成される。
便利で~す!!! ひゃっほー!!!AWS無料利用枠でおさまるのも素晴らしい。
作業途中、手元のホストマシンのIPアドレスが代わり、EC2インスタンスのセキュリティグループでSSHのマイIPを再設定しました。固定IPを引いてない方は要注意!
さぁ、シナリオ作ってガツガツ検証と開発していきましょう!!USEメソッド等を分析してAWS EC2インスタンスやAzure 仮想マシン研ぎ澄ましていきましょう。