private-isuをEC2で立ち上げ、ベンチマークを動かすまでの手順です。
詰まった箇所が何箇所かあったので書いておきます!
EC2インスタンスの起動
まずは、アプリケーションとベンチマーカーの実行環境の用意です。
private-isuのREADMEに書いてあるAMIを使うことで、簡単にEC2インスタンスを起動できます。
インスタンスは、以下の2つを起動します。
- 競技者用インスタンス
- ベンチマーカー用インスタンス
競技者用インスタンスの起動
READMEに書いてある、以下のAMIを使います。
自分は x86_64 用のものを使いました。
AMI ID
のリンクをクリックすると、AWSコンソールが開きます。
リージョンが東京
になっていることを確認し、AMIからインスタンスを起動
します。
Launch an instance
の画面が開き、インスタンスの設定を行えます。
- 名前とタグ
- 自由に設定できる、インスタンス名の設定です
- 自分は
private-isu
にしました
- アプリケーションおよび OS イメージ (Amazon マシンイメージ)
- すでに、AMIが設定されているはずです。変更不要です
- インスタンスタイプ
- マシンスペックを選べます
- デフォルトでは、無料枠のt2.microが選ばれています
- 有料になってしまいますが、READMEでは
c7a.large
が推奨されています - 自分は、参考書籍1で使用されていた、
c6i.large
にしました
- キーペア (ログイン)
- ログインするための鍵の設定です
- 自分は新しくキーペアを作成しました
- rsa形式で、pemファイルを選びました
- キー名は自由ですが、そのままファイル名になるので、スペースや特殊文字は入れないことをおすすめします
- 作成時にダウンロードされたpemファイルは、
~/.ssh/
に置くのがおすすめです
- ネットワーク設定
- 右上の
編集
を押すと、詳細まで編集できるようになります! - VPC、サブネット、パブリック IP の自動割り当て
- デフォルトのままでOKです
- ファイアウォール (セキュリティグループ)
- 今回は新規作成することにしました
- セキュリティグループ名
- 自由に設定できます
- 自分はとりあえず、
private-isu
にしました
- インバウンドセキュリティグループのルール
- ssh(ポート22)
- 念の為、
ソースタイプ
から自分のIP
を選んで、外部からのアクセスを防いでおきます
- 念の為、
- HTTP(ポート80)
- デフォルトでは設定がないので、
セキュリティグループルールの追加
から追加してください -
タイプ
でHTTP
を選択 - READMEに書いてあるとおり競技者用インスタンスは公開する必要があるので、
ソースタイプ
は任意の場所
にしてください
- デフォルトでは設定がないので、
- ssh(ポート22)
- 右上の
- ストレージを設定
- デフォルトのままでOKです
以上で設定は終わりです!
右のメニューから、インスタンスを起動
しましょう!!
ベンチマーカー用インスタンスの起動
READMEに書いてある、以下のAMIを使います。
自分は、競技者用インスタンスと合わせて、x86_64 用のものを使いました。
AMI ID
のリンクを踏むと、AWSコンソールが開きます。
こちらも、リージョンが東京
になっていることを確認し、AMIからインスタンスを起動
します。
Launch an instance
の画面が開き、インスタンスの設定を行えます。
- 名前とタグ
- 自由に設定できる、インスタンス名の設定です
- 自分は
private-isu-benchmarker
にしました
- アプリケーションおよび OS イメージ (Amazon マシンイメージ)
- すでに、AMIが設定されているはずです。変更不要です
- インスタンスタイプ
- マシンスペックを選べます
- デフォルトでは、無料枠のt2.microが選ばれています
- 有料になってしまいますが、READMEでは
c7a.xlarge
が推奨されています - 自分は、参考書籍1で使用されていた、
c6i.xlarge
にしました
- キーペア (ログイン)
- ログインするための鍵の設定です
- 自分は、競技者用インスタンスで使ったキーペアを選びました
- ネットワーク設定
- 右上の
編集
を押すと、詳細まで編集できるようになります! - VPC、サブネット、パブリック IP の自動割り当て
- デフォルトのままでOKです
- ファイアウォール (セキュリティグループ)
- 今回は新規作成することにしました
- セキュリティグループ名
- 自由に設定できます
- 自分はとりあえず、
private-isu-benchmarker
にしました
- インバウンドセキュリティグループのルール
- ssh(ポート22)
- 念の為、
ソースタイプ
から自分のIP
を選んで、外部からのアクセスを防いでおきます
- 念の為、
- ベンチマーカー用インスタンスでは、HTTP(ポート80)の設定は不要です
- ssh(ポート22)
- 右上の
- ストレージを設定
- デフォルトのままでOKです
以上で設定は終わりです!
右のメニューから、インスタンスを起動
しましょう!!
起動の確認
EC2のインスタンス一覧から、実行中のインスタンスを確認できます。
起動に数分時間がかかることもありますが、少し待てば、競技者用インスタンスとベンチマーカー用インスタンスが起動したことを確認できると思います!
サービスの確認
立ち上がったwebサービスをブラウザで見てみましょう。
IPアドレスの確認
EC2のインスタンス一覧から、競技用インスタンスのインスタンス ID
をクリックすると、インスタンスの詳細が開けます。
詳細画面にあるパブリック IPv4 アドレス
をコピーしてください。
(アドレスの左にあるアイコンをクリックすれば、クリップボードにコピーされます)
ブラウザでのサービス確認
確認したパブリックIPアドレスに、ブラウザでアクセスしてみましょう
http://<コピーしたパブリックIPv4アドレス>/
SSH接続
立ち上がったEC2インスタンスに、SSHで入ってみましょう。
.pemファイルを使ったSSH接続
ターミナルを開いて、SSH接続してみましょう!
コマンドは、以下のとおりです
ssh -i <.pemファイルのファイルパス> ubuntu@<競技用インスタンスのパブリックIPv4アドレス>
途中でfingerprintの確認でAre you sure you want to continue connecting
と聞かれたら、yes
と答えましょう。
自分の場合、以下のエラーでsshに失敗してしまいました。
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: UNPROTECTED PRIVATE KEY FILE! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions 0644 for '/Users/<ユーザー名>/.ssh/<キーペア名>.pem' are too open.
It is required that your private key files are NOT accessible by others.
This private key will be ignored.
Load key "/Users/<ユーザー名>/.ssh/<キーペア名>.pem": bad permissions
このときは、以下のコマンドで.pemファイルのアクセス権を抑えておくとよいでしょう。
chmod 600 ~/.ssh/<キーペア名>.pem
これで、sshで入れたかと思います!
同じ手順で、ベンチマーカー用インスタンスにもsshできることを確認しておきましょう。
ベンチマーカーを実行する
READMEに書いている手順で、ベンチマーカーを走らせてみましょう
sudo su - isucon
/home/isucon/private_isu.git/benchmarker/bin/benchmarker -u /home/isucon/private_isu.git/benchmarker/userdata -t http://<競技用インスタンスのパブリックIPv4アドレス>
表示の更新はないですが、実行が終わるまでしばらく待ちましょう。
自分はこの時点で、このような結果になりました。
$ /home/isucon/private_isu.git/benchmarker/bin/benchmarker -u /home/isucon/private_isu.git/benchmarker/userdata -t http://<競技用インスタンスのパブリックIPv4アドレス>
{"pass":true,"score":625,"success":567,"fail":2,"messages":["リクエストがタイムアウトしました (POST /login)"]}
初期時点でのスコアは625
でした。
567のHTTPリクエストが成功し、2つのリクエストが失敗したようですね。
失敗の原因は、タイムアウトのようです。
以上で、ベンチマーカー実行まで行うことができました!
以降は、競技者用インスタンスで計測・改善を行うフェイズとなります!
参考文献
private-isu リポジトリ
起動の方法などが詳しくREADMEにかかれています。
また、sshログインの方法はmanual.mdに説明があります。
達人が教えるWebパフォーマンスチューニング 〜ISUCONから学ぶ高速化の実践
起動方法の説明だけでなく、その後の計測・チューニングなどのテクニックが豊富に紹介されています。
-
達人が教えるWebパフォーマンスチューニング 〜ISUCONから学ぶ高速化の実践 付録A章 private-isuの攻略実践 A-1 用意した競技環境 ↩ ↩2