Amazon EC2でMinecraftサーバーを立てる
Amazon EC2 とは?
Amazon EC2: Amazon Elastic Compute Cloud
「AWS: Amazon Web Service」の一つで、クラウド内に仮想サーバーを立てられるサービスです。
似たものに「Amazon Lightsail」があり、こちらも仮想サーバーのサービス。
EC2とLightsailの大きな違いは「従量課金か、定額か」という点です。
今回Minecraft Serverを使うにあたり、使用頻度が高い時期と低い時期との差が激しく、また使用頻度が低い時期が長期間続く場合もあるため、従量課金のEC2を選択しました。
またEC2の特徴として、「インスタンス」として仮想サーバーを作成しますが、メモリやストレージ容量を変更したインスタンスを作成すれば、一時的なサーバーのスペックアップや移行も可能なようだったのが、ちょっと面白いなと思ったのもあります。
24時間常時、長期間に渡って起動し続けるならば、定額制のレンタルサーバーが適していますが、
「週末しか使わない」「来月になったらやらないかもしれない」という状況ならばEC2が適しています。
インスタンスを起動している間だけ時間単位で課金され、停止していれば課金も止まるため、実際に使ってみると思ったよりも気軽に使える印象でした。
■準備
先に以下を済ませておく。
・SSH クライアント(今回はTera Termを使用)のインストール
■EC2 ダッシュボードの表示
AWSにサインイン
AWS マネジメントコンソールの「すべてのサービス」を展開し、「EC2」をクリック
■キーペアの作成
[EC2 ダッシュボード > ネットワーク & セキュリティ > キーペア] をクリック
「キーペアを作成」をクリック
キーペアの名前を「minecraft」とし、ファイル形式は「pem」を選択し、「キーペアを作成」をクリック
ブラウザが「minecraft.pem」をダウンロードするため、ローカルに保存する。
■インスタンスの作成
[EC2 ダッシュボード > インスタンス > インスタンス] をクリック
「インスタンスの作成」をクリック
Amazon マシンイメージ(AMI)にはAmazon Linux AMI(64 ビット)、
インスタンスタイプにはt2.smallを選択
「次のステップ:インスタンスの詳細の設定」をクリック
「自動割り当てパブリック IP」に「有効」を選択
「次のステップ:ストレージの追加」をクリック
特に変更無く、「次のステップ:タグの追加」をクリック
「タグの追加」をクリックし、キーに「Name」、値に「minecraft」を入力
「次のステップ:セキュリティグループの設定」をクリック
「ルールの追加」をクリックし、追加されたルールを以下のように設定
・タイプ:カスタム TCP(初期状態)
・ポート範囲:25565
・ソース:カスタム(初期状態) / 0.0.0.0/0
・説明:空欄(初期状態)
「確認と作成」をクリックする。
「インスタンス作成の確認」が表示される。「起動」をクリック。
キーペアの選択画面が出る。
「既存のキーペアの選択」を選択、キーペアに先ほど作成した「minecraft」を選択する。
「選択したプライベートキーファイルへのアクセス権があり……」にチェックを入れて「インスタンスの作成」をクリックする。
「インスタンスの表示」をクリックする。
■Elastic IPの設定
[EC2 ダッシュボード > ネットワーク & セキュリティ > Elastic IP] をクリック
「Elastic IP アドレスの割り当て」をクリック
「Amazon の IPv4 アドレスプール」を選択して「割り当て」をクリック
作成したパブリック IPv4 アドレスを選択し、[Actions > Elastic IP アドレスの関連付け] を選択
「インスタンス」のボックスをクリックして、作成した既存のインスタンスを選択する。
「プライベート IP アドレス」のボックスをクリックして、表示されるIPアドレスを選択する。
「関連付ける」をクリックする。
■SSH クライアント(Tera Term)でサーバーへログインする
Tera Termを起動する。
「TCP/IP」を選択し、ホストにElastic IP アドレス(「パブリック IPv4 アドレス」に表示されているアドレス)を入力し、「OK」をクリックする。
セキュリティ警告が表示されたら「続行」をクリックする。
SSH認証が表示されたら、「ユーザー名」に「ec2-user」、「認証方式」に「RSA/DSA/ECDSA/ED25519鍵を使う」を選択し、秘密鍵は先ほどローカルに保存した「minecraft.pem」を選択し、「OK」をクリックする。
コンソールが起動する。
■インストール
root権限でコマンドを実行できる状態にしてからJavaをインストール
$ sudo su
「Is this ok」のメッセージが最後に表示されるので
y
Javaのバージョンを確認する
# java -version
「java version "1.7.0_231"」と表示されたので、バージョンを1.8.0に変更する。
# alternatives --config java
「Enter to keep the current selection[+], or type selection number:」と表示されるので、「1.8.0」のバージョン番号が含まれる番号を入力する。
# java -version
でバージョンを再確認しておく。
screenをインストールする。
# sudo yum -y install screen
今回はscreenの最新バージョンが既にインストールされていた。
Minecraftのディレクトリをホームディレクトリに作成する
# mkdir ~/minecraft
作成したディレクトリに移動する
# cd minecraft
または
# cd ~
# cd minecraft
Minecraft_serverをインストール
※minecraft_serverのダウンロードリンクはMojangのサイトのダウンロードリンクのURLを調べて直接入力した
ファイル名は「server.jar」になっている。ほんとは変えたいけど面倒なのでそのままにする。
一度Minecraftを起動する
# java -Xms1024M -Xmx1024M -jar server.jar nogui
eula.txtが作成されるので、内容を編集する
# vi eula.txt
viが起動したら、「eula=false」を「eula=true」に変更する。
※viは起動時コマンドモードになっているため、[a] で入力開始、「false」の文字列をBackspaceで削除し、「true」を入力後、[esc] で入力終了、[wq] を入力して保存・終了する。
その後Minecraft_serverを再度起動する。
# java -Xms1024M -Xmx1024M -jar server.jar nogui
Minecraftが起動し、ワールドを生成した後「Done! For help, type "help"」が表示されたら、Minecraftでサーバーを追加してアクセスしてみる。
サーバー追加時のIPアドレスはElastic IPの「パブリック IPv4 アドレス」の数字を指定する。
■運用と料金について
料金はインスタンスのCPU、メモリのスペックによって変わってくる。
友人グループでのプレイなら「t2.micro」か「t2.small」の二択になると思われる。
microはメモリが1GB、smallは2GBだが、microでの動作はかなりラグが目立ち、Minecraftがクラッシュする確率も高そうだった(感覚的には1日1~3回くらいはクラッシュしそう)。
あまりにも不安定なのでsmallを試してみたら、シングルプレイに比べたら多少のラグは気になるものの、動作は一気に安定したし、
以前使ったことのあるレンタルサーバー「さくらVPS」で、ほぼ同スペックでCentOSを使って稼働していたときに比べるといくらか快適。
よって、最大接続人数5,6人程度、夜間・週末の利用頻度が高い、という感じの使い方ならば「t2.small」が
「t2.small」の場合0.0304USD/時間、つまり1時間あたり約3.3円程度(2020/2/29時点)。24時間稼働で80円、30日稼働で2,370円程度。
もし金曜日夜22:00~日曜日夜24:00までの50時間を毎週使うと仮定すると、月660円。
プラス、平日5日のうち1日ずつ増えるごとに320円ずつ増え、980、1,300、1,620、1940、2,260円。
・利用が週末に限定される場合、金曜夜から日曜夜中まで稼働しっぱなしでも全然許容範囲。
・平日も利用するとなると、昼間など利用しない時間帯の料金が無駄になる。稼働する曜日を決められるならその方が良いが、決められないのであれば、面倒でも開始・停止をきちんと切り替えた方が良い。
─────−- - - 2020/3/13 追記 - - -−─────
■しばらく使ってみての感想
EC2で立てたMinecraftサーバーでしばらくプレイしてみたけど、
とにかくラグい。Mobはカクカク動くし、スイッチ系の動作は遅いし、木の伐採や採掘はブロックのゴーストが表示されてとにかくやりづらかった。
後で分かったことだけど、EC2はコアやRAMの面で明らかにスペックが低かった。
その後、以前使ったことのあるさくらVPSに移行したところ、非常に安定した動作。
結論から言って、EC2でのMinecraftサーバー運用は難があった。
快適さで言えば、たとえ一時的といえども一晩も我慢できない。