fullbokにプルリクしてみました


※2016/6/6追記:下記で作成したテンプレートが正しく動かない状況になっています。現在、調査中です

第8回「じどうかの窓口。」セミナーでも触れましたが、開発における負荷試験に、クラスメソッドさんの作られた「fullbok」を使っています。CloudFormationのテンプレートとして提供されており、これを使えば、JMeterクラスタを簡単に構築して使うことができます。

先日も、いつものように、負荷試験の準備をしていたところ、JMeterクラスタを正しくプロビジョニングできない状況になっていました。

先週は動いていたのに。うーん、困った。

CloudFormationのダッシュボードで確認すると、slaveの準備完了を待ち続けています。slaveの初期化処理が途中でコケていることが想像できますね。

CloudFormationのテンプレートで指示される各サーバへの初期化処理実行結果は、この記事によると、/var/log/cfn-init.log、/var/log/cloud-init.logに残るようですので、slaveのマシンにsshしてログを漁ります。

ありました。unboundのインストールに失敗しています。yumで入れようとして、パッケージが見つからない様子。

テンプレートを読んでみると、unboundをepelから入れようとしているのが分かります。

で、epelを見に行ってみました。amazonlinuxはCentOS6ベースなので、CentOS6のx86_64の内容を確認します。ないな。

RHEL6とunboundについて調べてみると、extras入りしてるという文書を見つけました。リポジトリを確認すると入っています。実際にCentOSで試してみると、epelなしにインストールできるのが確認できます。どうやら、RHEL6系では、unboundの扱いが昇格していて、epelに置いておく必要がなくなったようで、パッケージが衝突したり面倒も出てくるので、epel上のunboundは削除されたのではないかと考えらえます。

それはさておき、どこからunboundを入れるかが問題です。負荷試験の際に一時的に作って使って捨てるものなので、あんまり頑張りたくありません。SNSで愚痴ってたら、学生時代の先輩から「CentOS6 Continuous Release Repository」というヒントをもらいました。私がubuntuばっか使ってる間に、CentOS界隈もいろいろあったようですね。どれどれ、おー、入ってる。

で、テンプレートファイルを修正して、負荷試験環境を復活させることができました。めでたしめでたし。

最後に、修正内容を本家にもお伝えするため、プルリクしてみました。

また、クラスメソッドさんでは、s3にテンプレートを置いて、すぐにfullbokを試せるようにしておられますので、今回作成したものも、同じようにしておきました。こちらからすぐに使って頂けます。良かったらお試しください。設定項目などに違いはないので、本家と同じ要領で使って頂けます。

因みに、弊社環境では、Jenkinsに、fullbokをデプロイするjobを作って使っているのですが、


aws cloudformation create-stack --stack-name kiq-fullbok \
--template-url https://s3-ap-northeast-1.amazonaws.com/s3.kiq.biz/fullbok.template \
--parameters \
ParameterKey=AvailabilityZone,ParameterValue=ap-northeast-1a \
ParameterKey=KeyName,ParameterValue=your-keypair \
ParameterKey=MasterInstanceAMI,ParameterValue=ami-ff435e91 \
ParameterKey=MasterInstanceType,ParameterValue=t2.medium \
ParameterKey=SlaveCapacity,ParameterValue=8 \
ParameterKey=SlaveInstanceType,ParameterValue=c3.large \
ParameterKey=SlaveSpotPrice,ParameterValue=0.5 \
ParameterKey=SSHFrom,ParameterValue=0.0.0.0/0 \
--capabilities CAPABILITY_IAM

aws cloudformation wait stack-create-complete –stack-name kiq-fullbok


といった感じでデプロイできます。削除するときは、


aws cloudformation delete-stack --stack-name kiq-fullbok

aws cloudformation wait stack-delete-complete –stack-name kiq-fullbok


という感じです。

では、みなさんも、素晴らしい負荷試験ライフを!(本番環境想定の結合試験をぶん回すと、めっちゃ金掛かるけどな!)