Edited at

IDCFクラウドを使ってさくっと負荷試験

More than 1 year has passed since last update.

本記事は IDCF Cloud Advent Calendar 2016 に参加しています。

初めてQiitaに記事書きました。noriko3 と申します。

モフモフしたもの、特に猫が好きです。赤いリボンした白猫なんかもうかわいくて仕方ないですね。

それは置いといて。

時々仕事で負荷試験っぽいものをしたりするんですが、いちいち環境作ってやるのはめんどくさいしなーとか思ってたら、ec2-bench というものがあるということを知ったのですが、abした結果も欲しいしなぁ、もっと大量にアクセスしたいんじゃあああ!となり、ec2-ab-bench というものを作ったんですが、

これって別にどこのクラウドでもよくない?っていうか、AWSはネットワーク料金怖いからIDCFクラウドでやったらちょっと安心出来ないかしら?というわけで、idcf-ab-bench というものを作ってみました。

cloudstack-api を叩いて、ssh で ab コマンドを投げるだけといういたってシンプルなものです。

とりあえず使い方なんぞを解説したいと思います。


まず、cloudstack-api を使えるようにする。

参考: http://docs.idcf.jp/cloud/introduction/

python3系だとエラーが出て色々面倒そうだたったので結局2系使いました。

ここで結構時間とられました。pythonとか随分触ってないので追う気力が(

このスクリプトのために、テンプレートを公開していますので、リージョンは東日本リージョン2を使って下さい。


idcf-ab-bench.conf を設定する


サービスオファーリング(service_offering_id)

cloudstack-api listServiceOfferings -t id,name,displaytext

好きなのを選んでください。


テンプレートID(template_id)

dc91e704-c03d-45c2-8353-4247846de388

公開テンプレートをご利用ください。

デフォルトのは ab 入ってないし ulimit -n が 1024 だったのでその辺ちょっと手を入れた程度ですが。

# というか他の人もちゃんと使える・・・よね?!


ゾーンID(zone_id)

e8ebfccb-eb38-43ed-8abf-80b5f37c3aa9

waber 有効にしてください


SSHのキー(keypair)

ここに記載されたキー名でSSHします。

ない場合はポータルから作成してください。

秘密鍵は $HOME/.ssh/${keypair} という名前にして 600 で置いてください。


IPアドレスのID(ipaddress_id)

cloudstack-api listPublicIpAddresses -t id,ipaddress


IPアドレス(ipaddress)

↑で取得したものを記載


VM作成数(count)

作成するVM数を指定します


ab -n ココ(request_number) -c ココ(client_number)

はじめは少なめで

10000とか指定したい場合は、スペック高めのタイプにするといいかも

これで多分準備は完了です。


やってみる

norikos-MacBook-Air-3:idcf-ab-bench noriko$ sh idcf-ab-bench.sh http://example.com/asdf

work_dir: /Users/noriko/tmp/idcf-ab/1220-2325

destroy command:
cloudstack-api destroyVirtualMachine --id a88543fc-0e14-4f61-b03a-7636c24beff4
cloudstack-api destroyVirtualMachine --id d1b7fcc4-2be5-4f7a-8a53-89b8fd609910
norikos-MacBook-Air-3:idcf-ab-bench noriko$

削除コマンドを表示していますので、不要でしたらコマンド実行して削除してください。

work_dir の中に ab-数字.log というファイルが作成されていて、そこに ab の実行結果が入っています。

よしなに調理してください。


いろいろ仕組みとかなんとか


ssh するポート

1つのIPを使いまわしたかったので(新しいIP取るとお金かかるし)、適当なポートを開けて ssh するようにしてあります。コマンド実行時に UNIXTIME の下4桁とって、VM作成毎に ++ していってるだけなんで、時々かぶるかもしれません。

こまめにVMを完全削除すれば多分大丈夫です。


VM名

idcf-ab-bench-月日-時分-n

という感じです。1回やるのに1分はかかるんで、被らない想定。

同名で作成出来たらよかったんだけど、これはこれでいいのかな?


VM1つでだいたい1分使ってる

VM作成して、作成したかどうかのチェックをしないで sleep してます(

ポートフォーワードの設定も同じです。20秒だと時々足らなかったので30秒にしました。

この辺はどうにかしたいというか、VM作成時にネットワークの設定も一緒に出来るといいんですが。


感想

結構たくさん作っちゃいました。

Screen Shot 2016-12-20 at 11.38.15 PM.png

3時間くらいでスクリプト〜記事まで書いたので結構雑です。ご利用は個人の責任でお願いします。

またなんか思いついたら記事書きたいと思います。それではまたーノ


追記

Screen Shot 2016-12-21 at 7.33.20 PM.png

スクリプト書いてあれこれしてかかったお値段は5円でした。公開テンプレートはどうなるんだろう(あとで調べる)