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

  • 4
    いいね
  • 0
    コメント

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

初めてQiitaに記事書きました。noriko@dropsystem と申します。
モフモフしたもの、特に猫が好きです。赤いリボンした白猫なんかもうかわいくて仕方ないですね。

それは置いといて。

時々仕事で負荷試験っぽいものをしたりするんですが、いちいち環境作ってやるのはめんどくさいしなーとか思ってたら、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円でした。公開テンプレートはどうなるんだろう(あとで調べる)

この投稿は IDCF Cloud Advent Calendar 201621日目の記事です。