統合版マイクラのサーバをスポットインスタンスを使って建てたときのメモです。
「マイクラ スポットインスタンス」で検索すると、色んなサイトに記載はあるのですが、一元的に書いているのがなかったので、記事にまとめました。
AWSを利用する前提です。
仕様検討
スポットインスタンスを利用する上で一番大事なのは、インスタンスがterminateされた際に、データをどこに退避しておくかです。軽くググったところ、以下の3案がありそうです。
- EBSをアタッチする
- 懸念点:複数AZにまたいだ使用ができない
- EFSを利用する
- 懸念点:EBSより速度が遅い(特に使用容量少ない場合)、料金がお高め
- EBSのデータをS3にバックアップし、EC2起動時にS3から復元
- 懸念点:バックアップが間に合わない可能性
今回は、速度面を妥協し、EFSを利用する方針としました。
実施作業
- UbuntuサーバをEC2で起動
- SSH用のポートと、19132/udpを開放
- EFSをマウント
sudo apt-get update
sudo apt install stunnel4
git clone https://github.com/aws/efs-utils
cd efs-utils
./build-deb.sh
sudo apt install ./build/amazon-efs-utils*deb -y
sudo mkdir /efs
sudo mount -t efs fs-xxxxxxxxxx /efs/
- Minecraftのインストール
cd # home directory
sudo apt install unzip
mkdir minecraft
cd minecraft
wget https://minecraft.azureedge.net/bin-linux/bedrock-server-1.19.51.01.zip
unzip bedrock-server-1.19.51.01.zip
-
起動確認
LD_LIBRARY_PATH=. ./bedrock_server
-
fstabに以下を書き込む
<DNS名>:/ /efs efs defaults,_netdev 0
参考:UbuntuでEFSをマウントする -
worldデータをEFSに移動し、シンボリックリンクを貼る
mkdir /efs/minecraft
mv -r worlds /efs/minecraft/worlds
ln -s /efs/minecraft/worlds ./worlds
- サーバ起動時にサービスを自動起動するように設定
参考:Ubuntu Serverでマイクラサーバー(統合版)のインストールから自動起動までの手順 - AMIを作成
- 指定したAMIでAuto Scaling Groupを設定
参考:1台のサーバですら Auto Scaling でケチる - EC2の起動時に、Lambdaを起動しRoute53を更新
参考:EC2インスタンス起動時にIPアドレスを自動でRoute53に登録する
注意点
- 統合版のマイクラのバイナリはx64で動作するので、arm64のインスタンスタイプを選択しない
感想
しっかりとは確認していませんが、ちゃんとデータも残っているようです。ここまで構築した後に、やっぱりJava版のマイクラにしたいという欲求にかられたので、改善点はありますがこの記事はここで締めます。
改善点
- サーバをLINEから起動できるように設定
- サーバシャットダウン時に、内部サービスをちゃんと落とすようにする
参考にしたサイト