実はBlog用にAWSのLightsailを契約しているのですが、ついでに友達と遊ぶためのminecraftサーバーを運用してみようというお話、AWSだとCPU使用量に限りがあり、契約プランごとに持続可能ゾーンが存在する。今回は持続可能ゾーンを意識しながらどうやって運用するかというお話です。
Dockerを使ってサーバーを準備
Dockerとdocker-composeが使える環境で以下のdocker-compose.ymlファイルより起動したら準備完了です。
version: "2" services: minecraft: image: itzg/minecraft-server ports: - "25565:25565" volumes: - ./mc:/data environment: EULA: "TRUE" TZ: "Asia/Tokyo" ENABLE_AUTOPAUSE: "TRUE" AUTOPAUSE_TIMEOUT_EST: "600" MEMORY: "768M" restart: always
ポイントは2箇所
運用するためのコンフィグのポイントは2箇所で AUTOPAUSEという設定と、MEMORYという設定になります。AUTOPAUSEは全てのクライアントが抜けたあとに、プロセスをPAUSEしてくれる機能 この機能がないと常にCPUを10%程度使用し続けます。今回は600秒ということで、全員が抜けてから10分経つとPAUSE状態になるように設定しています。
次のポイントはMEMORYです。itzg/minecraft-server は何も設定しないと初期設定は1GBのメモリとなっています。今回は1GBメモリのサーバーで動かすために、768MBを上限と設定しました。
なお待受ポートは25565なので、接続時にアドレスと合わせて指定してください。
PAUSE状態でアクセスするとどうなるのか?
minecraftのアプリケーションでマルチプレイで遊ぶを選ぶと登録しているサーバーの一覧が表示されると思います。ここに該当のサーバーを登録しておくと、状況確認の通信が走るようで、サーバーがPAUSE状態から抜け出します。即アクセスすると接続に失敗することもありますが、少し待てば問題なくアクセスができました。
コストをかけずに待ち受けるのに最適
サーバーなんで上げっぱなしにしておきたい。でもそのためのコストは限りなくかけたくないというときに最適です。是非お試しください。