はじめに
private-isuを解くのに競技用インスタンスとベンチマークインスタンスを立ち上げて透過設定してとやることが色々あり、若干つまづいたので備忘録として残す。
競技用インスタンス
EC2を作成していく。
READMEにある競技者用インスタンスのx86_64版のAMIを検索。
コミュニティAMIの欄にある(1)ので選択(2)。
本にある通り、インスタンスタイプは C6i.large
を選択。
新しいキーペアを選択。
こんな感じでキーペアを作成。
ネットワーク設定でSGを作成する。
こんな感じで設定(他はデフォルトのまま)。
インスタンスを起動。
少し時間が経ってからパブリック IPv4 アドレスに httpで アクセス。
こんな感じのが表示されれば勝ち。
ベンチマークインスタンス
競技用インスタンスと同じようにEC2を作成。
AMIはREADMEのベンチーマーカーのx86_64を選択。
インスタンスタイプはこれまた本にある通りC6i.xlarge
。
キーペアはさっきつくったやつ使い回す。
SGもさっき作ったやつ使い回す。
これでインスタンスを作成。
SGの透過
ベンチマークインスタンスから競技用インスタンスにリクエストを投げるので、競技用インスタンスにベンチマークインスタンスからのリクエストを透過する設定を入れなければならない。
セキュリティグループを選択
さっきつくったSGのインバウンドルールを編集。
サブネットマスク32の ベンチマークインスタンスの IPをソースにしたHTTPを追加。
ベンチマークを走らせる
SSHが叩ける前提で記載。
作ったpemファイルに権限を付与。
chmod 400 /path/to/my-private-isu-key.pem
ベンチマークの方にSSH接続
ec2-xxx-xxx-xxx-xxx.ap-northeast-1.compute.amazonaws.com
はベンチマークインスタンスのパブリック IPv4 DNSを入れる。
ssh -i /path/to/my-private-isu-key.pem ubuntu@ec2-xxx-xxx-xxx-xxx.ap-northeast-1.compute.amazonaws.com
入れたらREADMEにある通り、下記の通りに叩く。
$ sudo su - isucon
$ /home/isucon/private_isu.git/benchmarker/bin/benchmarker -u /home/isucon/private_isu.git/benchmarker/userdata -t http://<競技用インスタンスのIP>
こんなのが出たら勝ち。
{
"pass":true,
"score":664,
"success":609,
"fail":2,
"messages":[
"リクエストがタイムアウトしました (POST /login)",
"リクエストがタイムアウトしました (POST /register)"
]
}
後片付け
依存関係があるので順番に消す。
- EC2
インスタンスの状態を「インスタンスを終了」にする- 競技用インスタンス
- ベンチマーク用インスタンス
- SG
- キーペア
終わりに
画像が黒塗りだらけでSCPみたいになってる。