0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

AWS初心者が友達とゲームがしたいからEC2でサーバーを立ててみた

0
Posted at

はじめに

友人とValheimをやるために、AWSでマルチプレイ用のサーバーを立てた。
ローカルでポート開放し、立ててもよかったけど、この記事をみて、AWSに挑戦してみました!
とても簡潔に書いてあるし、料金についても考えているし背中を押してくれた記事です!

立てるのは意外と楽だ

今回ふれたアプリはこの二つだけ!

コンソールの画面をそのまま貼り付ける情弱でもできました。

image.png

EC2の設定だけで建てられる

最終的な構成はとてもシンプルで、使ったサービスはEC2(仮想サーバー)ひとつだけだった。

項目 選択
リージョン 東京(ap-northeast-1)
インスタンスタイプ t3.medium(2vCPU / 4GB)
OS Ubuntu 24.04 LTS
ディスク gp3 20GB
通信の許可 UDP 2456-2457(全体)、SSH 22(自分のIPのみ)

やることは、EC2の作成画面でOSとスペックとディスクを選び、通信を許可する設定(セキュリティグループ)を作るだけ。

(マジで怖い言葉 Auto Scaling は使用していません!!)

構成はAIと相談したよ

最初に相談したのは構成そのものだ。「6人くらいで遊ぶ」「月2,000円前後」という条件を伝えたところ、選択肢が整理されて返ってきた。

要点は、4GBメモリのサーバーを24時間動かすと月8,000円前後になり、予算に収まらないということだった。

そこで提示されたのが、遊ぶときだけ起動して、終わったら停止するという運用だ。EC2は起動している時間だけ課金されるので、月60時間なら1,000円弱で済む。

AIの提案で月額固定のLightsailという選択肢も出たが、よくわからなかったのでパスした。

建て方も聞いてみたよ

構成が決まった後は、手順をすべて出してもらった。
GUIですべて設定し、画面のスクリーンショットを貼って「ここはどう設定すればいい?」と聞けるので、初心者にはかなり楽だった。

EC2のインスタンスを起動した後の作業は、実質3ステップだった。

  1. SteamCMDというツールを入れる
  2. ヴァルヘイムのサーバー本体をダウンロードする
  3. systemdに登録して、サーバー起動時に自動で立ち上がるようにする

最終的にAIと行った作業、サーバーを確認するコマンド、サーバーの起動、停止の仕方を確認してドキュメントにまとめて終わり!

怖いのは料金だよね

正直、技術的な部分より怖かったのはこちらだ。「気づいたら数万円」という話はよく聞く。

料金はどれくらいなのかを計算しよう

まず、何にいくらかかるのかを正確に把握した。ここが一番大事だったと思う。

項目 起動中 停止中
インスタンス(t3.medium) 約$0.054/時間 無料
パブリックIP $0.005/時間 無料
ディスク(gp3 20GB) 約$1.9/月 約$1.9/月

ポイントは、停止してもディスク代だけは消えないことだ。月に一度も遊ばなくても330円ほどかかる。これはワールドデータの保管料と考えるしかない。

この前提で計算すると、こうなる。

  • 月60時間遊ぶ:約970円
  • 予算2,000円の上限:月150時間くらいまで
  • 24時間つけっぱなし:約8,000円

つまり、停止し忘れがすべてということが分かった。そこさえ守れば予算内に収まる。

↓AI曰く
固定IP(Elastic IP)は使っていなくても月約$3.6かかる、NATゲートウェイは月数千円かかるので作ってはいけない、といった話だ。知らずに固定IPを取っていたら、気づかないまま課金され続けるらしい。

料金を監視しよう

計算しただけでは安心できないので、監視も入れた。

1. 予算アラート(Budgets)
インスタンスを作る前に設定した。予算を$12にして、50%・80%・100%、それと月末予測が100%を超えた時点でメールが飛ぶようにしている。
これは2つまで無料(3つ目以降は1日$0.02)なので、今回のように1つ作るだけなら費用はかからない。メール通知も無料だ。

2. Cost Explorer
日別・サービス別で料金の推移が見られる。遊んだ日だけ料金が上がっているかを確認できる。画面で見るだけなら無料だ。

注意点として、料金の反映は最大で1日ほど遅れる。今日遊んだ分は翌日に確認することになる。

↓ 記事を書いているときに下記のことを提案された
CloudWatchによる自動停止(任意)
CPU使用率が一定を下回る状態が1時間続いたら自動停止する、という設定もできる。アラームは10個まで無料。停止し忘れの保険として入れておくと安心できる。

プラスアルファ:ここは深く聞いた

作業中に疑問に思ったこと、詰まったことをまとめておく。

AMI(OSの種類)はなぜUbuntuなのか

デフォルトはAmazon Linuxだったので理由を聞いた。
簡単に言うとSteamCMDの入れやすさだった。よく分かっていないがSteamのゲームサーバーが立てやすいって話らしい
Ubuntuなら apt install steamcmd で終わるが、Amazon Linuxには公式パッケージがなく、手動で用意する必要がある。
加えて、ゲームサーバー関連の記事はほぼUbuntu前提なので、詰まったときに検索で解決しやすい。OS自体はどちらも無料なので、料金は変わらない。

停止するとデータは消えるのか

消えない。ワールドも設定もディスクに残る。
消えるのはEC2のインスタンスのステータスで「終了(terminate)」を押したときだけだ。名前が似ていて紛らわしいが、terminateは削除を意味する。

操作 データ IPアドレス
停止 残る 変わる
再起動 残る 変わらない
終了 消える なくなる

「Valheimを止める」と「EC2を止める」は別物

ここは最初、混同していた。
systemctl stop valheim はヴァルヘイムのプログラムを止めるだけで、EC2は動いたままなので課金は続く。料金を止めたいなら、止めるのはEC2インスタンスのほうだ。
気をつけろ!

パブリックIPが毎回変わる

停止して起動するたびにIPアドレスが変わるので、遊ぶたびに友人へ共有する必要がある。
固定する方法(Elastic IP)もあるが、月約$3.6かかるうえ、使っていないときも課金される。数十円のIP課金を避けるために月500円払うのは本末転倒なので、毎回共有する運用にした。

記事を書いているときにこの仕様を知りましたw

つまずいたエラー2つ

WARNING: UNPROTECTED PRIVATE KEY FILE!
鍵ファイルの権限が広すぎるとSSHが接続を拒否する。鍵をOneDriveのフォルダに置いていたのが原因だった。icacls コマンドで権限を絞ったら解決した。

Job for valheim.service failed because a timeout was exceeded
サーバー起動前のアップデート確認に90秒以上かかり、systemdのデフォルトのタイムアウトに引っかかっていた。TimeoutStartSec=600 を追加して解決。失敗しているように見えるが、インストール済みのものは壊れていないので焦らなくていい。

構成図

業務で構成図はよく見るよね、あれってかっこいいよね
だからAIに構成図を出してもらいました。構成図にするとやっている感あっていいね
だけどめちゃシンプルだね。(AWSのアプリのマークとあの書き方できるようになりたいね)

image.png

まとめ

  • 構築は半日かからない。 使うサービスはEC2だけ
  • 怖いのは技術ではなく料金。 先に計算して、先に監視を入れる
  • 停止し忘れがすべて。 予算アラートと自動停止を保険にする
  • 月60時間で約1,000円。 つけっぱなしなら約8,000円

よくわからないから怖かったけど
一回立ててみたらAWSを触る怖さは少しだけなくなったかも
1週間は怖いから監視します!w

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?