どうも。社員Cです。
社内のゲーム会で使用するために、AWSを使ってMinecraftのマルチサーバを立てたので、その備忘録を残しておきます。
今回はその第二回となっております。
第一回はこちら。
AWS EC2を使ってMinecraftのマルチサーバを立てる その1
今回は主に、IPアドレスの固定化、ドメイン登録、インスタンス起動の自動化についてとなります。
使用サービス
・Elastic IP
・Route53
・EventBridge
概要
AWSのEC2サーバは再起動のためにIPアドレスが変わってしまいます。
IPアドレスが再起動のたびに変更されてしまうということは、サーバにログインするユーザに、再起動のたびに新しいアクセス先を通知することになり、非常に大変です。
では、AWSではどのようにしてIPアドレスを固定化、ドメイン登録を行うのでしょうか。
AWS上でIPアドレスを固定化するには、Elastic IPを用いて固定化していく必要があるというわけです。
①~⑤のそれぞれの場合について、ユースケースを考えてみましょう。
①:一度もEC2を再起動せず、IPアドレスで接続してもらってもかまわないケース。
②:EC2は再起動するが、IPアドレスで接続してもらってもかまわないケース。
③:一度もEC2を再起動せず、ドメインで接続してもらいたいケース。
④:EC2を再起動する上、ドメインで接続してもらいたいケース。
⑤:外部ドメインをお持ちの場合のケース。
それぞれの場合で設定する方法を説明すると冗長になってしまうため、今回は、Elastic IP、Route53についての備忘録になります。
Elastic IP
まずはElastic IPから、『Elastic IPを割り当てる』を押下。
タグを追加する場合はタグを追加してください。
Elastic IPが割り当てられたら、割り当てられたIPをクリックし、さらに『Elastic IPアドレスの関連付け』を押下。
すると任意のインスタンスに関連付けすることができるので、その1で作成した、サーバのインスタンスに関連づけしてください。
関連付けが終了したら、一度インスタンスを再起動してみてください。
再起動したあとも、IPアドレスが変更されていなければ、設定完了です。
当然ですが、こちらのIPアドレスでサーバにログインできるようになっているはずです。
あとはこのIPアドレスをRoute53に紐づけるなり、外部ドメインに紐づけるなり、煮るなり焼くなりしてください。
Route53
購入したいドメインは検索すれば利用できるかわかります。便利ですね。
独自ドメインでの候補も表示してくれます。
気に入ったドメインがあれば、カートに入れます。
個人情報などを入力してドメインを購入してください。
適当な名前をつけてください。
そうしたら、MinecraftはIPv4での接続になるので、DNSタイプは「IPv4」、
エンドポイントを設定し、IPの値はElastic IPで設定した値にします。
トラフィックポリシーの作成後はトラフィックポリシーレコードを追加します。
正常にRoute53でドメインが購入できていれば、ホストゾーンとポリシーレコードに値が表示されているはずです。
任意で入力してポリシーレコードを作成します。
あとは、EC2が起動していること、EC2の中でサーバが起動していることを確認。
クライアントから、ポリシーレコードで入力したDNS名を入力してアクセスすれば、ログインできるはずです。
EventBridge
EventBridgeは、EC2インスタンスの起動・停止などを自動で行うことができます。
できることが多いので、今回はとりあえず定刻の間だけEC2インスタンスを起動する設定を作成してみましょう。
Amazon EventBridgeから新しいルールを作成します。
今回はスケジュールに基づいて起動・停止を行うので、スケジュールを選択。
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アドレスの設定やサーバ起動の自動化はできているはずです。
次回以降は、サーバリソースの自動化などを解説していきたいと思います。
それでは。