👣
M1 Macでcloud-initi&MultipassでISUCON12の環境構築を行う
こんにちは、株式会社Voicyでバックエンドエンジニアをしている、勝山です。
今回は11月に開催されるISUCONに向けて練習がてら過去問をしようと思いました。
昨年出場したISUCON12が公開されていたので、そちらを環境構築した手順をまとめていこうと思います。
Multipassという仮想化ツールを使って環境構築をしました。
Multipassとは
ローカルでUbuntuの軽量な仮想マシンを作成・管理するためのツール。
VirtualBoxやVMWareといった仮想ツールよりもシンプルなインターフェースを持っている。コマンドラインから簡単に操作でき、新しい仮想マシンの作成や既存マシンへのSSH接続、マシンの破棄などが可能。
環境構築手順
multipassのインストール
brewでmultipassをインストールします。
brew install multipass
先ほどのレポジトリをgit clone
こちらのレポジトリです。
git clone https://github.com/matsuu/cloud-init-isucon.git
cd cloud-init-isucon
cloud-initを使って起動
今回はisucon12の予選の環境を構築したかったので、isucon12qとしています。
multipass launch --name isucon12q --cpus 2 --disk 20G --memory 4G --timeout 86400 --cloud-init isucon12q/isucon12q.cfg 22.04
オプション名 | 説明 |
---|---|
name | インスタンス名 |
cpus | インスタンスに割り当てるcpuの数 |
disk | インスタンスのディスクサイズ |
memory | インスタンスのメモリサイズ |
22.04 | Ubuntuのバージョン |
起動には30分ほどかかりました。
途中で以下のようなエラーが出ますが、バックグラウンドで起動は進んでいるため、焦らずログをみましょう。
launch failed: The following errors occurred:
timed out waiting for initialization to complete
こちらのコマンドでログを見ることができます。
multipass exec isucon12q -- tail -f /var/log/cloud-init-output.log
こちらのログでdoneが出ていたら起動完了です。
1 added, 0 removed; done.
Running hooks in /etc/ca-certificates/update.d...
done.
Ubuntuの中に入る、ユーザー変更
以下のコマンドで立ち上げたインスタンスの中にいることができます。
multipass shell isucon12q
ISUCONのマニュアルにもある通り、ユーザーをisuconに変えましょう。
sudo -i -u isucon
ベンチマーク実行
ISUCONの当日マニュアルにもある通り、以下のコマンドでベンチを回すことができます。
cd /home/isucon/bench
./bench # 127.0.0.1:443 に対して実行
./bench -target-addr 203.0.113.1:443 # IPアドレスを指定し別のホストに対して実行
alpの導入
Nginxのログ解析のため、alpを導入しました。
こちらよりダウンロードしたいバージョンを選択します。
wget https://github.com/tkuchiki/alp/releases/download/v1.0.12/alp_linux_arm64.tar.gz
tar -zxvf alp_linux_arm64.tar.gz
実際にalpをインストールします
sudo install alp /usr/local/bin/alp
これでとりあえずベンチを回すことができました。
ここからパフォーマンス改善などに着手していきたいと思います。
Discussion