LoginSignup
11
2

More than 1 year has passed since last update.

AzureでMinecraftサーバー構築する。料金比較もしてみた。

Last updated at Posted at 2021-12-18

こんにちは。GxPの2年目の小林です。
この記事はグロースエクスパートナーズ Advent Calendar 2021の19日目の記事となります。
本日の記事はAzureでMinecraftサーバーを作成したことを記事にしました。
Azureの仮想マシン作成から設定、利用までの流れを理解するための参考になればと思います。

はじめに

社内で行っているAzure勉強会で学んだことを何かに使ってみたかったので、自分の好きなゲームであるMinecraftでサーバーを立ててみようと思いました。
また、クラウドの利点として必要な時に起動して使用した時間だけ料金が発生するので、使い方によってはvpsサーバを借りるよりも安くなるのではと思い、料金の比較もしてみました。

手順

AzureでLinuxサーバを作成

Azure Portalから仮想マシンの新規作成画面を開きます。
以下の様に内容をパラメータを設定しました。

項目 設定値
仮想マシン名 MinecraftServer
地域 (Asia Pacific) 東日本
可用性オプション 可用性ゾーン
可用性ゾーン 1
セキュリティの種類 Standard
イメージ CentOS-based 8.2 - Gen1
サイズ Standard_B2s - 2 vcpu、4GiBのメモリ
認証の種類 パスワード
ユーザ名 minecraft-user
パスワード (任意のパスワード)
受信ポート SSH (22)
OSディスクの種類 Standard HDD (ローカル冗長ストレージ)

Inkedimage_LI.jpg

image (1).png

ディスクはStandard HDDを選択しました。
私用なので壊れても問題なく、推奨要件もHDDとSSDで指定は無いので、料金の安いStandard HDDを選びました。
業務などで利用する場合はStandard SSDなどを選択した方が良いかもしれません。

Premium SSD Standard SSD Standard HDD
シナリオ 運用環境のワークロードやパフォーマンスに影響されやすいワークロード Web サーバー、あまり使用されていないエンタープライズ アプリケーション、および開発/テスト バックアップ、重要ではない、不定期に起こるアクセス
ディスクの種類 SSD SSD HDD
最大スループット 900MB/秒 750MB/秒 500MB/秒
最大 IOPS 20,000 6,000 2,000

image.png

確認及び作成ボタンを押下すると仮想マシンの作成が開始されます。

仮想マシンが作成されたらリソースへ移動します。
仮想マシン>ネットワークからSSHのネットワーク設定を開き、ソースをIP Addressに変更し、ソースIPアドレス/CIDR範囲に自分のグローバルIPを設定します。
image.png

仮想マシン>概要から開始ボタンを押して仮想マシンを起動します。
Inkedimage_LI.jpg

仮想マシン起動時に、パブリックIPアドレスが付与されるので、付与されたアドレスを使用してSSH接続します。
Inkedimage (1)_LI.jpg

OpenJDKのインストール

yumインストールやディレクトリ作成にルート権限が必要なためルート化します。

[minecraft-user@MinecraftServer]# sudo su -

記事作成時最新のMinecraftサーバー1.18.1に対応しているjava-17を以下のコマンドでインストールします。

[root@MinecraftServer]# yum install -y java-17-openjdk

Minecraft用にインストール先のディレクトリを作成して、作成したディレクトリに移動します。

[root@MinecraftServer]# mkdir /var/minecraft
[root@MinecraftServer]# cd /var/minecraft/

Minecraftサーバの最新版をダウンロード

以下から最新版を確認します。
https://www.minecraft.net/ja-jp/download/server

最新版のサーバーのリンクを右クリックしてコピーします。
スクリーンショット 2021-12-06 195916.png

今回の記事では1.18.1のバージョンを選択しました。
Minecraft1.18以下のバージョンでは、Log4jの脆弱性に対応できていないので注意が必要です。
https://forest.watch.impress.co.jp/docs/news/1373517.html

コピーしておいたリンクをwgetの引数として指定/実行し、server.jarファイルをダウンロードします。

[root@MinecraftServer minecraft]# wget https://launcher.mojang.com/v1/objects/125e5adf40c659fd3bce3e66e67a16bb49ecc1b9/server.jar

server.jarがダウンロード出来ていることを確認します。

[root@MinecraftServer minecraft]# ll
total 29532
-rw-r--r-- 1 root root 30202458 Jun 13 16:00 server.jar

今回はMincraftの起動をシェルから行いたいと思います。
「minecraft.sh」を作成し、その中に起動コマンドを記述します。

メモリの割り当てをJVM引数で設定します。
1024Mの値はMinecraftサーバーで使用するメモリの上限になります。
デフォルト値として1024Mを設定しましたが、推奨要件は最低4096Mとなっています。

[root@MinecraftServer minecraft]# vi minecraft.sh
#!/bin/sh
java -Xmx1024M -Xms1024M -jar server.jar nogui

作成したシェルスクリプトに実行権限を付与します。

[root@MinecraftServer minecraft]# chmod o+x minecraft.sh

権限を付与できたか確認します。minecraft.shの権限にx(実行権限)が追加されています。

[root@MinecraftServer minecraft]# ll
total 29536
-rw-r--r-x 1 root root       72 Jul 11 22:32 minecraft.sh
-rw-r--r-- 1 root root 30202458 Jun 13 16:00 server.jar

eula.txtファイルを生成するために一度minecraft.shを実行します。

[root@MinecraftServer minecraft]# ./minecraft.sh

EULAの使用許諾に同意します。
"eula.txt"というファイルが出来ているので、内容を一部書き換えます。
"eula=false"を"eula=true"に書き換えて内容を保存します。

[root@MinecraftServer minecraft]# vi eula.txt
\#By changing the setting below to TRUE you are indicating your agreement to our EULA (https://account.mojang.com/documents/minecraft_eula).
\#Tue Jul 11 13:34:47 GMT 2017
eula=false

再度minecraft.shを実行で正常にMinecraftが起動します。

[root@MinecraftServer minecraft]# ./minecraft.sh

Minecraftサーバーが起動したことを確認します。
コンソール上にDone (77.886s)! For help, type "help"が表示されれば問題なく起動しています。
本来はMinecraftでサーバーに接続できることを確認しますが、ここでは割愛させていただきます。

(省略)
[09:31:34] [Worker-Main-2/INFO]: Preparing spawn area: 10%
[09:31:36] [Worker-Main-2/INFO]: Preparing spawn area: 20%
[09:31:36] [Worker-Main-2/INFO]: Preparing spawn area: 20%
[09:31:36] [Worker-Main-2/INFO]: Preparing spawn area: 20%
[09:31:38] [Worker-Main-2/INFO]: Preparing spawn area: 47%
[09:31:38] [Worker-Main-2/INFO]: Preparing spawn area: 47%
[09:31:38] [Worker-Main-2/INFO]: Preparing spawn area: 47%
[09:31:38] [Worker-Main-2/INFO]: Preparing spawn area: 47%
[09:31:38] [Worker-Main-2/INFO]: Preparing spawn area: 54%
[09:31:39] [Worker-Main-2/INFO]: Preparing spawn area: 65%
[09:31:39] [Worker-Main-2/INFO]: Preparing spawn area: 68%
[09:31:40] [Worker-Main-2/INFO]: Preparing spawn area: 89%
[09:31:43] [Server thread/INFO]: Time elapsed: 70354 ms
[09:31:43] [Server thread/INFO]: Done (77.886s)! For help, type "help"

詰まりポイント

IP制限

IP制限の許可を行っておらず、Minecraftサーバーに入れませんでした。
仮想マシンのリソースを開いてネットワークの欄の「受信ポートの規則を追加する」ボタンを押して、受信セキュリティ規則の追加を開き自分のグローバルIPを割り当てる必要がありました。
スクリーンショット 2021-12-15 172548.png

メモリ割り当て

minecraft.shのファイルの記述のメモリ割り当てが小さすぎて、最初はサーバーに入っても動けませんでした。2GB割り当てでシングルプレイは可能でした。マルチプレイなら4GB必要です。

感想と料金比較

Linuxコマンドは業務で少し触っていたのですが、今までは手順書通りにしか動かしたことがありませんでした。今回のMinecraftサーバの作成でLinuxコマンドについても楽しく学ぶことが出来ました。業務で行っている作業が何をしているのか少しだけ分かるようになり良かったと思います。

1ヶ月あたりの料金について、同じメモリのvpsサーバーと比較してみました。
Azureサーバーは土曜日と日曜日だけ24時間つけっぱなしにして合計192時間の稼働でした。

Azureサーバー ServersMan さくらのVPS クラウドVPS
料金 1205円 2074円 3520円 2728円
メモリ 4GB 4GB 4GB 4GB
ディスク容量 8GB 200GB 200GB 100GB

土日だけ遊ぶならAzureサーバーの方が1205円と一番安くなることが分かりました。Azureサーバーの方がディスク容量が小さいのですが、Minecraftサーバーの推奨要件のディスク容量が250MBと記載されているので、問題ないと思います。

参考

11
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
11
2