2021/07/30
まずは過去問の講評に書いてあることを出来るようにならねばということで別インスタンスのDBが動作するよう変更してみる。去年挑んだのと同じ問題だが力になれなかった悔しさを胸に。。
今回の目標はISUCON10予選の講評に書かれているこいつができるようになること。
estate と chair で DB を別サーバに分ける
前回同様 m3.medium のインスタンスを起動。同一VPC内に起動しているようなので繋がるはず。 MySQLのクライアントが接続できるように、ポート3306を公開。
前回 でやった手順で同様に、initial-data は別のインスタンスで用意する必要があった。同じように make
で初期データをDBに登録する。本番は初期データも入っている状態だと思うのでこの手順は不要だと思われる。
調べた結果、EC2インスタンスにpingを通したければICMPをセキュリティグループに設定する必要があるらしい。
https://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/security-group-rules-reference.html#sg-rules-ping
DBインスタンス
Appインスタンス
WebAppをブラウザから確認。API動いてない。。。benchも失敗する。。。
参考にした。
https://qiita.com/2019Shun/items/34d44d63b00d086db51a
/etc/mysql/mysql.conf.d/mysqld.cnf を編集
bind-address = 0.0.0.0
一緒にISUCON参加予定のメンバーから教えてもらった。これでISUCONユーザがlocalhost以外からでも接続できるようになる。
GRANT ALL PRIVILEGES ON *.* TO 'isucon'@'%' WITH GRANT OPTION; select user, host from mysql.user;
これで再起動して動くようになった。
{"pass":true,"score":191,"messages":[],"reason":"OK","language":"nodejs"}
↓
{"pass":true,"score":232,"messages":[],"reason":"OK","language":"nodejs"}
とりあえず App と DB のインスタンスを分離できた。chair, estateを分離するまではできなかったが、同様の手順でやって、App に複数 MySQL を接続できるように変更すればできるだろう。