Closed6
ISUCON11予選の素振りをvultrで建てる

何故Vultrか?
多分安い。AWSは高い。
deployインスタンスの性能
app server
- CPU optimized
- CPU 2core
- Memory 4GB
- OS Ubuntu 22.04
- その他は適当
benchmarker
- CPU optimized
- CPU 4core
- Memory 8GB
- OS Ubuntu 22.04
- その他は適当

注意点
- 最初はrootログイン&パスワード認証
- ufwでport 22しか開いていない
portは22と443のみ開くのが想定だが、論理ネットワークを作るのが面倒だったので色々開いている
- 22
- 80
- 443
- 5000(JIA API)

setup
go実装で挑戦するので、他の言語実装を削除したansibleファイルにする
sudo apt update
sudo apt install -y ansible git
git clone https://github.com/AkkyOrz/ansible-isucon.git
cd ansible-isucon/isucon11-qualifier
git switch feature/install-for-golang
ansible-playbook -i standalone.hosts --connection=local site.yml
- feature/install-for-golangの変更点
-
sites.yml
-
langs.go
以外の環境を削除
-
-
roles/contestant/tasks/isucondition.yml
-
isucondition-go.yml
以外を削除
-
-
roles/contestant/tasks/mariadb.yml
-
mariadb-server-10.3
がないので、maria-db-server-10.6
に変更
-
gitに入っていない最初に必要なデータは自分で用意してあげる必要がある
benchmarkの回し方 (for local)
$ sudo -i -u isucon
$ cd bench
$ ./bench -all-addresses 127.0.0.11 -target 127.0.0.11:443 -tls -jia-service-url http://127.0.0.1:4999

benchmarkとアプリケーションサーバを分離したい場合は、色々工夫する必要がある
自分の場合はDNSにAレコードを登録し、Let's Encryptで証明書を発行し、それをnginxで利用した
$ sudo apt install snapd
$ sudo snap install core; sudo snap refresh core
$ sudo snap install --classic certbot
$ sudo ln -s /snap/bin/certbot /usr/bin/certbot
$ sudo certbot --nginx
email: <mail>
Domain Name: <my-URL>
# $ sudo certbot renew --dry-run
/etc/nginx/sites-enabled/isucondition.conf
- ssl_certificate /etc/nginx/certificates/tls-cert.pem;
- ssl_certificate_key /etc/nginx/certificates/tls-key.pem;
+ ssl_certificate /etc/letsencrypt/live/<my-url>/fullchain.pem;
+ ssl_certificate_key /etc/letsencrypt/live/<my-url>/privkey.pem;
sudo systemctl restart nxinx
~/bench/main.go
var (
allowedTargetFQDN = []string{
- "isucondition-1.t.isucon.dev",
- "isucondition-2.t.isucon.dev",
- "isucondition-3.t.isucon.dev",
+ "<my-url1>",
+ "<my-url2>",
+ "<my-url3>",
}
)
~/env.sh
- # POST_ISUCONDITION_TARGET_BASE_URL="https://isucondition-1.t.isucon.dev"
+ POST_ISUCONDITION_TARGET_BASE_URL="<my-base-url>"
$ sudo systemctl restart isucondition.go.service

これで一応ベンチマークは回せる

certbotでそれぞれの証明書を発行する代わりにワイルドカード証明書を発行する
$ sudo apt install snapd
$ sudo snap install core; sudo snap refresh core
$ sudo snap install --classic certbot
$ sudo certbot certonly --manual \
--preferred-challenges dns-01 \
--server https://acme-v02.api.letsencrypt.org/directory \
-m mail@example.com \
-d *.isucon.example.com
3ヶ月はもつらしい
このスクラップは2022/07/01にクローズされました