Closed4

isucon11-qualifyをAWS環境に建ててみる

dyoshikawadyoshikawa

環境

  • macOS Big Sur
  • M1 Mac端末

AWSでパブリックAMIからEC2インスタンスを起動

セキュリティグループを作成

インバウンド、アウトバウンド共にすべてのトラフィックを許可するセキュリティグループを作成しておく(あくまで検証用の設定。実務ではちゃんと絞りましょう)。VPCやサブネットはデフォルトのものを使う。

AMIからEC2インスタンス起動

AWSマネジメントコンソールでEC2を開く。メニューからAMIを選択しパブリックイメージ→ ami-0796be4f4814fc3d5aws-isucon一覧にあるisucon11-qualify AMIの識別子)を入力し検索。

すると目当てのAMIが1件ヒットするのでそこからEC2インスタンスを起動する。

  • 今回はインスタンスタイプ t2.micro を選択
  • ネットワーク周りはセキュリティグループ以外はデフォルトの値のままにする
    • セキュリティグループは先ほど作成した全許可のものをセットする
  • isucon11-qualify という名前(何でも良い)でKey pairを作成しpemファイルをダウンロードしておく

上記設定で起動ボタンを押下。

EC2インスタンスに割り振られたIPアドレスを控えておく。

sshする

ダウンロードしたpemファイルを ~/.ssh に置く。pemの権限を適切に設定しておく。

mv ~/Downloads/isucon11-qualify.pem ~/.ssh/
chmod 600 ~/.ssh/isucon11-qualify.pem

参考: https://qiita.com/mountcedar/items/43157ff1225c56500655

先ほど控えたIPアドレスにubuntuユーザでsshする。

ssh ubuntu@**.***.***.** -i ~/.ssh/isucon11-qualify.pem

ブラウザでアプリを見る

http://**.***.***.**:3000 にChromeでアクセスするとアプリが開けた。

Sign Upするには http://**.***.***.**:5000 を見れば良さそう?

dyoshikawadyoshikawa

benchコマンド叩いてみる

https://github.com/matsuu/aws-isucon/tree/main/isucon11-qualify#bench

ここを見ながら。

sshした状態でisuconユーザに切り替える。

sudo -i -u isucon

そしてbenchディレクトリに移動しコマンドを叩く。

./bench -all-addresses 127.0.0.11 -target 127.0.0.11:3000 -jia-service-url http://127.0.0.1:4999

結果:

14:27:24.588455 ISUCON11 benchmarker 
14:27:24.588837 ===> PREPARE
14:27:24.588925 start: load initial data
14:27:24.592116 finish: load initial data
(...省略...)
14:28:30.233766 score: 955(1000 - 45) : pass
14:28:30.235853 deduction: 2 / timeout: 435
14:28:30.235931 <=== sendResult finish

初期状態でscore 955でした。

dyoshikawadyoshikawa

ローカル環境を作ってみる

  • Dockerfile
  • docker-compose.yml
  • Makefile

が用意されているのでこれらを利用してローカル環境を立ち上げてみる。

git clone https://github.com/isucon/isucon11-qualify
cd isucon11-qualify/development
make up-ruby # Rubyを言語に選択

すると以下のようなエラーが出る。

 => ERROR [internal] load metadata for public.ecr.aws/ubuntu/ubuntu:20.04                                 2.1s

ECRにログインすることでも回避できそうだが、今回はDockerHubのイメージを使うようにDockerfileを修正する。

# vim: ft=dockerfile
-FROM public.ecr.aws/ubuntu/ubuntu:20.04
+FROM ubuntu:20.04

この状態で make up-ruby を再度叩き、Dockerイメージのビルドとコンテナ起動に成功した。

このスクラップは2022/06/04にクローズされました