MY MU8IC with Hatena

誰かが必要としてそうな、自分に必要だったことを記録するためのブログ

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が適しています。

インスタンスを起動している間だけ時間単位で課金され、停止していれば課金も止まるため、実際に使ってみると思ったよりも気軽に使える印象でした。

 

 

■準備

先に以下を済ませておく。

Amazon AWS アカウントの作成

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(初期状態)

プロトコルTCP(初期状態)

・ポート範囲:25565

・ソース:カスタム(初期状態) / 0.0.0.0/0

・説明:空欄(初期状態)

「確認と作成」をクリックする。

インスタンス作成の確認」が表示される。「起動」をクリック。

キーペアの選択画面が出る。

「既存のキーペアの選択」を選択、キーペアに先ほど作成した「minecraft」を選択する。

「選択したプライベートキーファイルへのアクセス権があり……」にチェックを入れて「インスタンスの作成」をクリックする。

インスタンスの表示」をクリックする。

 

■Elastic IPの設定

[EC2 ダッシュボード > ネットワーク & セキュリティ > Elastic IP] をクリック

「Elastic IP アドレスの割り当て」をクリック

AmazonIPv4 アドレスプール」を選択して「割り当て」をクリック

作成したパブリック 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

# yum install java-1.8.0-openjdk

「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をインストール

# wgetminecraft_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サーバー運用は難があった。

快適さで言えば、たとえ一時的といえども一晩も我慢できない。