AWS EC2を使ってMinecraftのマルチサーバを立てる その2

どうも。社員Cです。

社内のゲーム会で使用するために、AWSを使ってMinecraftのマルチサーバを立てたので、その備忘録を残しておきます。

今回はその第二回となっております。

第一回はこちら。

AWS EC2を使ってMinecraftのマルチサーバを立てる その1

 xp-cloud.jp

今回は主に、IPアドレスの固定化、ドメイン登録、インスタンス起動の自動化についてとなります。

使用サービス

・Elastic IP

・Route53

・EventBridge

概要

AWSのEC2サーバは再起動のためにIPアドレスが変わってしまいます。

IPアドレスが再起動のたびに変更されてしまうということは、サーバにログインするユーザに、再起動のたびに新しいアクセス先を通知することになり、非常に大変です。

では、AWSではどのようにしてIPアドレスを固定化、ドメイン登録を行うのでしょうか。

AWS上でIPアドレスを固定化するには、Elastic IPを用いて固定化していく必要があるというわけです。

 

ElasticIPRoute53

①~⑤のそれぞれの場合について、ユースケースを考えてみましょう。

①:一度もEC2を再起動せず、IPアドレスで接続してもらってもかまわないケース。

②:EC2は再起動するが、IPアドレスで接続してもらってもかまわないケース。

③:一度もEC2を再起動せず、ドメインで接続してもらいたいケース。

④:EC2を再起動する上、ドメインで接続してもらいたいケース。

⑤:外部ドメインをお持ちの場合のケース。

 

それぞれの場合で設定する方法を説明すると冗長になってしまうため、今回は、Elastic IP、Route53についての備忘録になります。

Elastic IP

Elastic IP

 

まずはElastic IPから、『Elastic IPを割り当てる』を押下。

Elastic IPアドレス割り当て

 

タグを追加する場合はタグを追加してください。

 

Elastic IP

 

Elastic IPが割り当てられたら、割り当てられたIPをクリックし、さらに『Elastic IPアドレスの関連付け』を押下。

 

Elastic IPアドレスの関連付け

 

すると任意のインスタンスに関連付けすることができるので、その1で作成した、サーバのインスタンスに関連づけしてください。

関連付けが終了したら、一度インスタンスを再起動してみてください。

再起動したあとも、IPアドレスが変更されていなければ、設定完了です。

当然ですが、こちらのIPアドレスでサーバにログインできるようになっているはずです。

あとはこのIPアドレスをRoute53に紐づけるなり、外部ドメインに紐づけるなり、煮るなり焼くなりしてください。

Route53

Route53

 

購入したいドメインは検索すれば利用できるかわかります。便利ですね。

独自ドメインでの候補も表示してくれます。

気に入ったドメインがあれば、カートに入れます。

 

Route53

 

個人情報などを入力してドメインを購入してください。

 

ポリシー名

 

ドメインを購入したら、トラフィックポリシーを作成します。

適当な名前をつけてください。

 

トラフィックポリシー

 

そうしたら、MinecraftIPv4での接続になるので、DNSタイプは「IPv4」、

エンドポイントを設定し、IPの値はElastic IPで設定した値にします。

トラフィックポリシーの作成後はトラフィックポリシーレコードを追加します。

 

トラフィックポリシー

 

正常にRoute53でドメインが購入できていれば、ホストゾーンとポリシーレコードに値が表示されているはずです。

任意で入力してポリシーレコードを作成します。

 

ゲーム画面

 

あとは、EC2が起動していること、EC2の中でサーバが起動していることを確認。

クライアントから、ポリシーレコードで入力したDNS名を入力してアクセスすれば、ログインできるはずです。

 

EventBridge

EventBridgeは、EC2インスタンスの起動・停止などを自動で行うことができます。

できることが多いので、今回はとりあえず定刻の間だけEC2インスタンスを起動する設定を作成してみましょう。

 

EventBridge

 

Amazon EventBridgeから新しいルールを作成します。

 

EventBridge

 

今回はスケジュールに基づいて起動・停止を行うので、スケジュールを選択。

 

EventBridge

 

cron式で指定します。

 

cron式で指定

 

cron式がわからなくても、入力すれば下にスケジュール実行される時間の一覧が表示されます。

GMT±0の時間と、ローカルタイムゾーンでの時間両方を表示できます。

 

設定 設定

 

ターゲットをSystem Manager オートメーションを選択。

起動時のルールにはAWS-StartEC2Instanceを、停止時のルールにはAWS-StopEC2Instanceを選んでください。

起動・停止させたいEC2インスタンスインスタンスIDをインスタンスID欄に入力。

ロールは新規作成することで問題なく動作します。

入力が終わったらタグを設定、設定内容を最後にレビューしたら、ロールを作成を押下して作成完了です。

 

指定された時間にEC2インスタンスが稼働、停止していることを確認してください。

 

Minecraftサーバ起動の自動化

PCの起動時に合わせてサーバを自動起動する設定です。

その1で作ったWindowsサーバであれば、スタートアップフォルダに、サーバ起動用のバッチファイルのショートカットを入れてあげるだけで自動起動します。

ファイル名を指定して実行から、shell:startupを入力することでスタートアップフォルダを表示できます。

 

また、Minecraftサーバが落ちてしまったときに自動で再起動するスクリプトも置いておきます。

 

@echo off

:restart
java -Xms8192M -Xmx8192M -jar server.jar nogui

TIMEOUT /T 15
GOTO restart

pause

java -Xms8192M -jar server.jar noguiの行はもともと使っていたバッチファイルの同じ行を写してください。

TIMEOUT /T 15の15は秒数です。好きな値を入力ください。

 

これでIPアドレスの設定やサーバ起動の自動化はできているはずです。

次回以降は、サーバリソースの自動化などを解説していきたいと思います。

それでは。