1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Hee-SanAdvent Calendar 2024

Day 1

private-isuを動かす

Posted at

private-isuをEC2で立ち上げ、ベンチマークを動かすまでの手順です。
詰まった箇所が何箇所かあったので書いておきます!

EC2インスタンスの起動

まずは、アプリケーションとベンチマーカーの実行環境の用意です。
private-isuのREADMEに書いてあるAMIを使うことで、簡単にEC2インスタンスを起動できます。

インスタンスは、以下の2つを起動します。

  1. 競技者用インスタンス
  2. ベンチマーカー用インスタンス

競技者用インスタンスの起動

READMEに書いてある、以下のAMIを使います。
競技者用インスタンスのAMI
自分は x86_64 用のものを使いました。

AMI IDのリンクをクリックすると、AWSコンソールが開きます。
リージョンが東京になっていることを確認し、AMIからインスタンスを起動します。
リージョンの確認と、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に書いてあるとおり競技者用インスタンスは公開する必要があるので、ソースタイプ任意の場所にしてください
  • ストレージを設定
    • デフォルトのままでOKです

以上で設定は終わりです!
右のメニューから、インスタンスを起動しましょう!!
インスタンスを起動ボタン

ベンチマーカー用インスタンスの起動

READMEに書いてある、以下のAMIを使います。
ベンチマーカー用インスタンスのAMI
自分は、競技者用インスタンスと合わせて、x86_64 用のものを使いました。

AMI IDのリンクを踏むと、AWSコンソールが開きます。
こちらも、リージョンが東京になっていることを確認し、AMIからインスタンスを起動します。
リージョンの確認と、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)の設定は不要です
  • ストレージを設定
    • デフォルトのままでOKです

以上で設定は終わりです!
右のメニューから、インスタンスを起動しましょう!!
インスタンスを起動ボタン

起動の確認

EC2のインスタンス一覧から、実行中のインスタンスを確認できます。
起動に数分時間がかかることもありますが、少し待てば、競技者用インスタンスとベンチマーカー用インスタンスが起動したことを確認できると思います!

インスタンス一覧

サービスの確認

立ち上がったwebサービスをブラウザで見てみましょう。

IPアドレスの確認

EC2のインスタンス一覧から、競技用インスタンスのインスタンス IDをクリックすると、インスタンスの詳細が開けます。
詳細画面にあるパブリック IPv4 アドレスをコピーしてください。
(アドレスの左にあるアイコンをクリックすれば、クリップボードにコピーされます)

ブラウザでのサービス確認

確認したパブリックIPアドレスに、ブラウザでアクセスしてみましょう

http://<コピーしたパブリックIPv4アドレス>/

Iscogramと表示されたページが見られれば成功です!
Iscogram

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から学ぶ高速化の実践

起動方法の説明だけでなく、その後の計測・チューニングなどのテクニックが豊富に紹介されています。

  1. 達人が教えるWebパフォーマンスチューニング 〜ISUCONから学ぶ高速化の実践 付録A章 private-isuの攻略実践 A-1 用意した競技環境 2

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?