Minecraft統合版サーバをAWSのサーバレス環境に移行(概要編)

2023/10/11

AWS Minecraft OracleCloud

t f B! P L

マインクラフト、たまーに遊ぶと面白いっす。

最近まではOracleCloudの無料Armインスタンス(4OCPU/24GBメモリ)で、

半ば強引に統合版サーバを動かしていた。

その時の記事が↓


これはこれでDockerで動かしていたのでアップデートは簡単な運用ができていたんだけど、

やはりMobというか村人がたくさんいるような環境だとカクカクしていた。

メモリ24GBで動かしていたけど、Armプロセッサでx86をエミュレートしているのか、

すごくもっさりしていたのよね。


特にOCIでサーバを使い続けることで不満はないんだけど、

AWSでサーバレスに実装できる仕組みもあるということで、

AWSの環境構築がてら、マイクラの環境も移行できたっていうお話。

詳細はGitHubを参照。


OCI上にサーバ環境を作る時点で、この仕組みがあることは知っていたのだけど、

当時はAWSのことが今よりも理解できていなかったので、

ECS??ナニソレ???状態だったw

AWS資格をたくさん取った今ではECSもそれなりに理解できているので、

せっかくなので自分でAWS環境を作ってみよう、と思った次第でもある。


アーキテクチャ構成図、動作仕様

出来上がったアーキテクチャはこんな感じ。


リージョンは大阪を選んだ。

特に理由はないw


利用時の動作は以下の通り。

①Minecraftのサーバ(FQDN名指定)にアクセスしようとするがエラーになる

②DNSクエリをトリガーにしてFargateタスクの統合版サーバおよび監視サーバを起動させる

③監視サーバがFargateのパブリックIPを取得して、Route53上のDNSレコードを更新

④続けてサーバ起動完了をSNSで通知

⑤マイクラで遊ぶ(・∀・)


この①〜⑤までの流れが1分程度なので全然許容範囲内である。

ゲーム終了後はFargateタスクを停止するLambdaを実行するか、

最後のプレイヤーが切断して20分後に自動で停止される。


これらの実際の動きをゲーム画面を交えて記載する。

まず①として、Minecraftを起動してサーバにアクセスしようとする。

この「mine」というのがAWSで実装した統合版サーバ。


が、当然ながら統合版サーバは起動していないので繋がらない。


しばらくすると、以下のようなメッセージがSMSで通知される。これが④。


もう一度、統合版サーバに繋ぐと無事に接続できた(・∀・)


スペックは1vCPU/6GBメモリにしてみたけど、まさに快適。

OCIの時よりサクサクだったw

少人数でやる分には十分すぎるぐらい。

もう少し低めでもいいかな?


あとは気持ち程度でEFSをバックアップするためにAWS Backupを利用。

元々OCIで遊んでいたサーバのデータをS3にアップロードしていたので、

DataSyncを用いてS3→EFSによるデータ移行を実施。


サーバ起動・停止は手動でも実行できるように

サーバへのDNSクエリを起動するトリガーとしているが、

実際はLambdaを実行しているだけに過ぎないので、

直接Lambdaを実行してFargateを起動・停止させるようにした。


最近のLambdaは関数URLを設定することで、API Gatewayを利用することなく

APIチックにLambdaを実行させることができるので、

そのURLに対してcurlを実行するようにiOSのショートカットに実装。


サーバで遊ぶ時にはショートカットでサーバを起動、

遊び終わったらショートカットでサーバを停止、という運用でも問題ないかな?


どれぐらいコストかかったか?

まずは見積

最低限発生するコストとしては、

  • Route 53のホストゾーン費用($0.50)
  • ECS費用($1.67)※1vCPU/6GBを20時間/月動かした場合

EFSおよびBackupは5GBまでなら無料利用枠の範囲。

BackupはS3と同じ扱いだと思ってるけど、無料利用枠の範囲外ならスミマセン。


ECSはFartageをスポット利用すれば、さらにコストが下げられる。

EFSも1ゾーンIAにすれば同様にコストが下がる。


で、実際に発生したコストは以下の通り。


10/7:$2.04

10/8:$0.92

と、初期構築を行った10/7だけコストがそれなりにかかっているが、

10/8には2時間だけプレイしてこの値段。

ECSだけで見たら$0.05しか掛かっていないので、

毎週末にがっつり遊んだとしても月に$10前後じゃないかな。

ちなみに俺の環境はAWSクレジットをいくらかチャージしているので、

多少費用が発生しても0円にできているw


世の中にはマインクラフト専用のレンタルサーバも提供されており、

相応のスペックを用意すると月1,000円以上はかかるので、

ちょこっとだけサーバで遊びたい場合とかはAWSに立てた方がリーズナブルな気がする。

というよりも、そもそもEC2で統合サーバを立てた方がもっと楽に実装できると思うwwww

EC2だとAWSエンジニアとしてはつまらんので、どうしてもコンテナとして動かしてみたかった。


記事が長くなったので、概要編としてここまで。

次回は実際にAWS上に環境を構築する内容を書こうと思う。


---------------------------

続き書きました。→https://www.kodaruma.com/2023/11/minecraftaws.htm

検索

Blog Archive

Popular Posts

About Me

自分の写真
性別:男
年齢:ついに40over
趣味:Snowboard、パソコン、iPhone、子育て

仕事:ユー子の社内SEとしてサーバ、NW等のインフラ全般をやってます

日々生活していく中で思ったことなどをつらつらと書いていきます。

どうぞよろしく!

ブログランキング

ブログランキング・にほんブログ村へ

QooQ