Slide 1

Slide 1 text

AWS Ambassador が本気で Minecraft サーバを運用してみた JAWS-UG 山梨 第 1 回 AWS 勉強会

Slide 2

Slide 2 text

Who am I ? Issei Hamada • AWS セキュリティが得意です • 2023 年より Japan AWS Ambassador として活動中 • JAWS-UG 山梨 運営メンバー • 最近ハマっているAWSサービスは AWS Amplify です Sonybiz Networks Corporation

Slide 3

Slide 3 text

本日のテーマ 3 引用元: https://minecraft.fandom.com/ja/wiki/Minecraft?file=Minecraft_horizontal_key_art.png

Slide 4

Slide 4 text

本日のテーマ ⚫Minecraft とは? 4 引用元: https://minecraft.fandom.com/ja/wiki/Minecraft?file=Minecraft_horizontal_key_art.png • スウェーデン発の 3D サンドボックスゲーム • 1m 大のブロックで構成されたワールドを冒険し、様々な 「モノ」を作成できる • ソロプレイはもちろん、友達とのマルチプレイも可能

Slide 5

Slide 5 text

本日のテーマ 皆さんは Minecraft サーバを立ててみたいと思った事はありませんか? 私はあります。 5

Slide 6

Slide 6 text

本日のテーマ ⚫Minecraft でマルチプレイする方法 • 公式サーバに接続する • 公式サービス「realms」を使う • 自分でサーバを立てる

Slide 7

Slide 7 text

本日のテーマ ⚫Minecraft でマルチプレイする方法 • 公式サーバに接続する • 公式サービス「realms」を使う • 自分でサーバを立てる 本日の テーマ

Slide 8

Slide 8 text

本日のテーマ ⚫Minecraft でマルチプレイする方法 • 公式サーバに接続する • 公式サービス「realms」を使う • 自分でサーバを立てる 本日の テーマ 初心者にはかなりハードルが高い……

Slide 9

Slide 9 text

本日のテーマ ⚫ハードルの数々 一般的な Web サイト まずはモデムの設定でポート開放して下さい 次に PC のファイアウォールを開けて下さい PC にサーバをインストールして下さい 友達に IP アドレスを教えてあげて下さい

Slide 10

Slide 10 text

本日のテーマ ⚫大学生の頃の私

Slide 11

Slide 11 text

本日のテーマ 月日は流れ、当時の少年は AWS Ambassador へと成長した…… 11

Slide 12

Slide 12 text

本日のテーマ 満を持して、Minecraft をやりました 12

Slide 13

Slide 13 text

本日のテーマ ⚫本日話す事 • Minecraft の例を通して、AWS 上での一般的なサーバ運用のイメージを作ります • Minecraft サーバ構築・運用・監視に利用した AWS サービスについて解説します

Slide 14

Slide 14 text

本日のテーマ ⚫本日話さない事 • AWS アカウント発行と day 1 対応 • Minecraft サーバ構築の詳細手順 - Qiita にアップロードしてあります https://qiita.com/drummers-high/items/a403bf350faac393a9a6

Slide 15

Slide 15 text

Agenda AWS Ambassador が Minecraft サーバを本気で運用してみた ⚫構築 ⚫運用 ⚫監視 ⚫まとめ

Slide 16

Slide 16 text

Agenda AWS Ambassador が Minecraft サーバを本気で運用してみた ⚫構築 ⚫運用 ⚫監視 ⚫まとめ

Slide 17

Slide 17 text

構築 ⚫一般的なサーバ構築作業概要 • ネットワーク設定 • サーバ立ち上げ • サーバ接続設定 • サーバ構築

Slide 18

Slide 18 text

構築 ⚫ネットワーク設定 AWS Cloud Virtual private cloud (VPC) Private subnet Public subnet Private subnet Public subnet Private subnet Public subnet Public Route Private Route Internet gateway • 基本的な構成の VPC を作成 - AWS コンソールの VPC 作成ウィザードを利用すると、必要な 関連リソースを全て作ってくれる • Public Subnet のIPv4 アドレスの自動割り当てを 有効化しておく - この後のサーバ構築が楽になる為

Slide 19

Slide 19 text

構築 ⚫サーバ立ち上げ AWS Cloud Virtual private cloud (VPC) Private subnet Public subnet Private subnet Public subnet Private subnet Public Route Private Route Internet gateway • EC2: t3.small - 4 人程度で遊ぶのに十分と言われている • OS: Ubuntu 24.04 - 外部サイトでも使われている事が多く、ナレッジが豊富 • セキュリティグループ: In 0.0.0.0/0: 25565 - Minecraft のデフォルトポート - 界隈で俗に「ポート開放」と呼ばれているものがこの設定 Public subnet

Slide 20

Slide 20 text

構築 ⚫サーバ接続設定 Public subnet Public Route Internet gateway 1. Client の IP アドレスを調べる 2. Security Group で Client の IP からのみ ポート 22 への接続を許可する 3. ルートテーブルで、Client の IP に対して戻りの ルートを記述する Security group Client Internet 一般的に必要な設定例

Slide 21

Slide 21 text

構築 ⚫サーバ接続設定 Public subnet Public Route Internet gateway 1. Client の IP アドレスを調べる 2. Security Group で Client の IP からのみ ポート 22 への接続を許可する 3. ルートテーブルで、Client の IP に対して戻りの ルートを記述する Security group Client Internet 一般的に必要な設定例 一般家庭の IP アドレスは定期的に変わる為、 その都度設定変更が必要 正直、めんどくさい……

Slide 22

Slide 22 text

構築 ⚫サーバ接続設定 AWS Cloud Virtual private cloud (VPC) Private subnet Public subnet Private subnet Public subnet Private subnet Public subnet Public Route Private Route Internet gateway • EC2 Instance Connect Endpoint を作成 • AWS コンソールからサーバに対して、ブラウザ経由で SSH 接続可能になる EC2 Instance Connect Endpoint

Slide 23

Slide 23 text

① EC2 コンソールから「接続」を押下 ② 「EC2 Instance Connect エンドポイントを使用して 接続する」を選択し、「接続」を押下 ③ AWS コンソールから SSH 接続成功 構築 ⚫サーバ接続設定

Slide 24

Slide 24 text

EC2 Instance Connect Endpoint を使った SSH 接続イメージ 構築 ⚫サーバ接続設定 Public subnet Public Route 1. ブラウザから「接続」を押下すると、AWS が管理する 踏み台サーバが、エンドポイント経由でサーバへ接続 2. ユーザは踏み台サーバを画面転送経由で操作する 3. Security Group は VPC内からの通信を許可する だけでよく、高セキュア ※ あくまで発表者のイメージです Security group Client Public subnet EC2 Instance Connect Endpoint AWS Cloud 踏み台サーバ 画面転送 SSH

Slide 25

Slide 25 text

EC2 Instance Connect 構築 ⚫(参考) AWS 上のサーバへのリモート接続サービス AWS Systems Manager Session Manager Endpoints AWS Systems Manager • 接続に必要な設定は、通常の SSH 接続準拠 • 接続先インスタンスに対して、IAM Role の付与が必要

Slide 26

Slide 26 text

EC2 Instance Connect 構築 ⚫(参考) AWS 上のサーバへのリモート接続サービス Endpoints • 接続に必要な設定は、通常の SSH 接続準拠 • セキュリティ要件的にはどちらもほとんど同じ • Session Manager の場合、IAM Role を付与して から接続可能になるまで10分程度時間がかかる場合 がある • 接続可能になるまでの時間が短い為、こちらを選定

Slide 27

Slide 27 text

サーバ構築時、一般的にやらなければならない作業 構築 ⚫サーバ構築 依存関係のインストール アプリケーションインストール 自動起動設定 • アプリケーションに必要な機能を予めインストールしておく事 • アプリケーション自体をインストールする事 • サーバ起動時アプリケーションが自動起動するようにする事

Slide 28

Slide 28 text

サーバ構築時、一般的にやらなければならない作業 構築 ⚫サーバ構築 # パッケージアップデート > apt update # 依存関係インストール > apt install openjdk-21-jdk-headless screen –y 依存関係のインストール アプリケーションインストール 自動起動設定

Slide 29

Slide 29 text

サーバ構築時、一般的にやらなければならない作業 構築 ⚫サーバ構築 ※ 以降、しばらく Minecraft 独自仕様 # ユーザ作成 > useradd -m -s /bin/bash mcuser > echo “mcuser:P@ssw0rd” | chpasswd • 外部利用のあるアプリケーションを攻撃された際、root で 実行していると被害が大きくなる危険がある • 必ず権限を絞ったユーザで、アプリケーションを実行する 依存関係のインストール アプリケーションインストール 自動起動設定

Slide 30

Slide 30 text

サーバ構築時、一般的にやらなければならない作業 構築 ⚫サーバ構築 # ディレクトリ作成 > cd /home/mcuser > mkdir minecraft > cd minecraft # アプリケーションをダウンロード > wget https://piston- data.mojang.com/v1/objects/xxxxx/server.jar • 「xxxxx」はバージョンによって可変 依存関係のインストール アプリケーションインストール 自動起動設定

Slide 31

Slide 31 text

サーバ構築時、一般的にやらなければならない作業 構築 ⚫サーバ構築 # 初回起動と eula 書き換え > java -Xmx1024M -Xms1024M -jar server.jar nogui > echo "eula=true" > eula.txt • 初回起動時、eula がない為、必ず強制終了する仕様に なっている • eula を書き換えれば、一応いつでも遊べる状態になる 依存関係のインストール アプリケーションインストール 自動起動設定

Slide 32

Slide 32 text

サーバ構築時、一般的にやらなければならない作業 構築 ⚫サーバ構築 # アプリケーション実行 > screen -S minecraft -U -d -m java -Xmx1024M - Xms1024M -jar server.jar --nogui • Linux の仕様として、ターミナルを切断すると起動したプロセス も一緒に終了する • バックグラウンドで実行できるよう、screen コマンドを使って起 動する 依存関係のインストール アプリケーションインストール 自動起動設定

Slide 33

Slide 33 text

サーバ構築時、一般的にやらなければならない作業 構築 ⚫サーバ構築 # アプリケーション実行 > screen -p 0 -S minecraft -X eval 'stuff "stop¥015“’ • Minecraft の仕様として、アプリケーション停止時に「stop」と 入力する必要がある • サーバ停止前に、Screen コマンド経由で「stop」を入力する ※ Minecraft 独自仕様ここまで 依存関係のインストール アプリケーションインストール 自動起動設定

Slide 34

Slide 34 text

サーバ構築時、一般的にやらなければならない作業 構築 ⚫サーバ構築 • このままだと、Minecraft で遊ぼうとサーバを立ち上げる度に java のコマンドを入力する事になる • Minecraft のアプリケーションを daemon 化して、自動 起動・停止するよう設定する 依存関係のインストール アプリケーションインストール 自動起動設定

Slide 35

Slide 35 text

サーバ構築時、一般的にやらなければならない作業 構築 ⚫サーバ構築 # 起動コマンドを shellscript 化 > cat < start.sh #!/bin/bash screen -S minecraft -U -d -m java -Xmx1024M - Xms1024M -jar server.jar --nogui EOF • 起動時に複数行の処理を実行したい場合に便利 依存関係のインストール アプリケーションインストール 自動起動設定

Slide 36

Slide 36 text

サーバ構築時、一般的にやらなければならない作業 構築 ⚫サーバ構築 # 停止コマンドを shellscript 化 > cat < stop.sh #!/bin/bash screen -p 0 -S minecraft -X eval 'stuff "stop¥015"' EOF • 起動時に複数行の処理を実行したい場合に便利 依存関係のインストール アプリケーションインストール 自動起動設定

Slide 37

Slide 37 text

サーバ構築時、一般的にやらなければならない作業 構築 ⚫サーバ構築 # shellscript 実行権限付与 > chmod 755 start.sh > chmod 755 stop.sh > chown -R mcuser:mcuser ../minecraft/ 依存関係のインストール アプリケーションインストール 自動起動設定

Slide 38

Slide 38 text

構築 ⚫サーバ構築 sudo cat < /etc/systemd/system/minecraft.service [Unit] Description=Minecraft Server After=network.target [Service] ExecStart=/home/mcuser/minecraft/start.sh ExecStop=/home/mcuser/minecraft/stop.sh Restart=always Type=forking WorkingDirectory=/home/mcuser/minecraft/ User=mcuser Group=mcuser [Install] WantedBy=multi-user.target EOF # daemo 化 • サーバ起動時に実行するコマンド • サーバ停止時に実行するコマンド • コマンド実行時のディレクトリ • コマンドを実行するユーザ・グループ

Slide 39

Slide 39 text

サーバ構築時、一般的にやらなければならない作業 構築 ⚫サーバ構築 # daemon 再読み込み > sudo systemctl daemon-reload # 自動起動設定 > sudo systemctl enable minecraft.service # 起動 > sudo systemctl start minecraft.service • ここまでで、Minecraft の自動起動設定は完了 依存関係のインストール アプリケーションインストール 自動起動設定

Slide 40

Slide 40 text

サーバ構築時、一般的にやらなければならない作業 構築 ⚫サーバ構築 依存関係のインストール アプリケーションインストール 自動起動設定 • アプリケーションに必要な機能を予めインストールしておく事 • アプリケーション自体をインストールする事 • サーバ起動時アプリケーションが自動起動するようにする事

Slide 41

Slide 41 text

サーバ構築時、一般的にやらなければならない作業 構築 ⚫サーバ構築 依存関係のインストール アプリケーションインストール 自動起動設定 • アプリケーションに必要な機能を予めインストールしておく事 • アプリケーション自体をインストールする事 • サーバ起動時アプリケーションが自動起動するようにする事 手順が多い……

Slide 42

Slide 42 text

EC2 のユーザデータ機能 構築 ⚫サーバ構築 • EC2 インスタンス起動時、Shellscript や Powershell を実行してくれる機能 • サーバセットアップ手順を shellscript として記述する 事で、構築作業を自動化出来る

Slide 43

Slide 43 text

構築 ⚫サーバ構築

Slide 44

Slide 44 text

構築 ⚫サーバ構築 コピー & ペーストで構築完了 ※ ユーザデータ全文は qiita にて

Slide 45

Slide 45 text

構築 ⚫(再掲) 一般的なサーバ構築作業概要 • ネットワーク設定 • サーバ立ち上げ • サーバ接続設定 • サーバ構築

Slide 46

Slide 46 text

Agenda AWS Ambassador が Minecraft サーバを本気で運用してみた ⚫構築 ⚫運用 ⚫監視 ⚫まとめ

Slide 47

Slide 47 text

運用 ⚫一般的なサーバ運用で挙がる懸念事項 データ破損 ランニングコスト • バグによってゲームがクラッシュし、データが消える • サーバの利用料は従量課金 • 使っていない時間は停止したい

Slide 48

Slide 48 text

運用 ⚫今回の Minecraft サーバ運用では、以下機能を実装 データバックアップ インスタンス起動・停止スケジューリング

Slide 49

Slide 49 text

運用 ⚫今回の Minecraft サーバ運用では、以下機能を実装 データバックアップ インスタンス起動・停止スケジューリング

Slide 50

Slide 50 text

運用 ⚫データバックアップ EBS スナップショット • AWS においてメジャーな「EBS スナップショット」にて実装 - EC2 のディスクのバックアップを取得しておく - 障害発生時はバックアップからディスクを復元し、丸々交換する • バックアップデータの保存先は S3 となっており、データが消える 事はほぼ無い (99.999999999% の耐久性) • データ書き込みが無い状態でスナップショットを取得する事を 推奨 EC2 instance contents Elastic network interface Volume Compute AMI Amazon S3 Snapshot ここだけ取得

Slide 51

Slide 51 text

運用 ⚫データバックアップ • Minecraft サーバにおけるデータバックアップフロー Minecraft アプリケーション 停止 Minecraft アプリケーション 再開 定期実行 Snapshot スナップショット取得

Slide 52

Slide 52 text

運用 ⚫データバックアップ Amazon Data Lifecycle Manager を採用 • スケジュールに従ってスナップショットを取得し、世代管理してくれる AWS サービス • スナップショット取得前後に、スクリプトによる処理を実行出来る

Slide 53

Slide 53 text

運用 ⚫データバックアップ • Data Lifecycle Manager 処理フロー (公式ドキュメントより抜粋) https://docs.aws.amazon.com/ebs/latest/userguide/script-flow.html

Slide 54

Slide 54 text

運用 ⚫データバックアップ • DLM 用 SSM Document の書き方 • execute_pre_script() {} 内に、前処理を記述 > sudo systemctl stop minecraft.service • execute_post_script() {} 内に、後処理を記述 > sudo systemctl start minecraft.service • 他は全部修正不要 https://docs.aws.amazon.com/ebs/latest/userguide/script-other-use-cases.html

Slide 55

Slide 55 text

運用 ⚫今回の Minecraft サーバ運用では、以下機能を実装 データバックアップ インスタンス起動・停止スケジューリング

Slide 56

Slide 56 text

運用 ⚫濱田くんの1日 睡眠 朝食・移動 仕事 食事・英会話・風呂 自由時間

Slide 57

Slide 57 text

運用 ⚫濱田くんの1日 睡眠 朝食・移動 仕事 食事・英会話・風呂 自由時間 1日4時間も使わない

Slide 58

Slide 58 text

運用 ⚫濱田くんの1日 睡眠 朝食・移動 仕事 食事・英会話・風呂 マインクラフト 1日4時間も使わない インスタンスの従量課金を減らす余地がある

Slide 59

Slide 59 text

運用 ⚫濱田くんの1日 睡眠 朝食・移動 仕事 食事・英会話・風呂 自由時間 友達の予定も考えて、 9時間で検討

Slide 60

Slide 60 text

運用 ⚫インスタンス起動・停止スケジューリング Amazon EventBridge Scheduler • スケジュールベースでの API 実行に特化した EventBridge の 1機能 • EventBridge 自体にもスケーリング機能はあるが、以下の点で 大幅に強化されている - サービス連携ではなく、API を直接実行できる - 特定の日付を指定して、単発で API を実行できる - スケジュール実行時、タイムゾーンやサマータイムを考慮してくれる

Slide 61

Slide 61 text

運用 ⚫インスタンス起動・停止スケジューリング インスタンス起動 Amazon EventBridge AWS API Minecraft Server cron(0 18 * * ? *) ec2:runInstances インスタンス停止 Amazon EventBridge AWS API Minecraft Server cron(0 3 * * ? *) ec2:stopInstances systemctl によって start.sh 実行 systemctl によって stop.sh 実行

Slide 62

Slide 62 text

運用 ⚫(参考) 本構成と各種 VPS サービスの料金比較 AWS ⚫ t3.small: USD 0.0272 - $1 = ¥145 として計算 - 24時間 30日動かした場合: 約 ¥2,840 - 9時間 30日動かした場合: 約 ¥1,065 EC2 instance xserver VPS for Games ⚫ 2 GB プラン - 12か月分一括の支払い: ¥855/月 - 1か月毎の支払い: ¥1,150 ConoHa for GAME ⚫ 2 GB プラン - 時間課金での1か月分料金: ¥2,033 - 1か月分の一括支払い: ¥721 ※ 他 AWS リソースの従量を除く

Slide 63

Slide 63 text

運用 ⚫(参考) 本構成と各種 VPS サービスの料金比較 AWS ⚫ t3.small: USD 0.0272 - $1 = ¥145 として計算 - 24時間 30日動かした場合: 約 ¥2,840 - 9時間 30日動かした場合: 約 ¥1,065 EC2 instance xserver VPS for Games ⚫ 2 GB プラン - 12か月分一括の支払い: ¥855/月 - 1か月毎の支払い: ¥1,150 ConoHa for GAME ⚫ 2 GB プラン - 時間課金での1か月分料金: ¥2,033 - 1か月分の一括支払い: ¥721 運用の柔軟性を検討すると、十分アリ ※ 他 AWS リソースの従量を除く

Slide 64

Slide 64 text

運用 ⚫(再掲) 今回の Minecraft サーバ運用では、以下機能を実装 データバックアップ インスタンス起動・停止スケジューリング

Slide 65

Slide 65 text

Agenda AWS Ambassador が Minecraft サーバを本気で運用してみた ⚫構築 ⚫運用 ⚫監視 ⚫まとめ

Slide 66

Slide 66 text

監視 ⚫監視要件 • Minecraft が動いているかどうかを把握したい - 自分がいない状態でも、友達がプレイできるようにしたい • 障害対応時、何が起きているかを迅速に把握したい - 原因を特定し、障害復旧に役立てたい

Slide 67

Slide 67 text

監視 ⚫監視要件 • Minecraft が動いているかどうかを把握したい - 自分がいない状態でも、友達がプレイできるようにしたい • 障害対応時、何が起きているかを迅速に把握したい - 原因を特定し、障害復旧に役立てたい プロセス監視 ログ + その他メトリクス

Slide 68

Slide 68 text

監視 ⚫CloudWatch Agent を用いた監視を実装する Amazon CloudWatch • Amazon CloudWatch とは、様々な AWS サービスの、様々 なメトリクスやログを収集、ダッシュボードの作成、アラームの設定が 行える監視サービス • 今回取得したいプロセスのメトリクスはデフォルトの収集項目に含ま れていないので、CloudWatch Agent のプラグインを利用する Alarm Logs …… etc

Slide 69

Slide 69 text

監視 ⚫CloudWatch Agent を用いた監視を実装する CloudWatch Agent 設定 • 設定ウィザードを使うか、Json 形式で指定 • agent: agent 自体の設定 • logs: 取得するログファイルに関する設定 - file_paht: ログファイルのパス Minecraft の例: /home/mcuser/minecraft/logs/latest.log - Log_group_name: ログの送信先 - Log_stream_name: ログストリームの命名規則

Slide 70

Slide 70 text

監視 ⚫CloudWatch Agent を用いた監視を実装する CloudWatch Agent 設定 • metrics: メトリクスの収集に関する設定 • procstat: プロセス情報を収集する為の項目 - exe: 対象のプロセスを記述 例: /usr/lib/jvm/java-21-openjdk-amd64/bin/java • netstat: TCP コネクションに関する情報を収集する為の項目 - 全てのポートの合計値のみ取得可能 - 今回は tcp_established, tcp_close_wait を収集

Slide 71

Slide 71 text

監視 ⚫CloudWatch Agent を用いた監視を実装する CloudWatch Agent 設定 • Disk: ディスクの情報を収集する為の項目 - マウントポイント毎の使用率を取得可能 - 今回は “/” の使用率を取得 • mem: メモリの情報を収集する為の項目 - CloudWatch のデフォルト設定では、メモリ使用率を見れない

Slide 72

Slide 72 text

監視 ⚫CloudWatch Agent を用いた監視を実装する • 想定通りのメトリクスが取得出来ている!!

Slide 73

Slide 73 text

監視 ⚫CloudWatch Agent を用いた監視を実装する • 想定通りのログが取得出来ている!!

Slide 74

Slide 74 text

監視 ⚫CloudWatch Agent を用いた監視を実装する • CloudWatch Alarm の設定 • 取得したメトリクスに対して閾値を設定する事で、特定のアクション を実行できる - SNS アクション: 主にメール通知を行う - AWS Lambda アクション: 作成したスクリプトを実行する - Auto Scaling アクション: Auto Scaling に関する処理を行う - EC2 アクション: サーバ再起動・停止・終了を行う - Systems Manager アクション: Systems manager と連携する

Slide 75

Slide 75 text

監視 ⚫CloudWatch Agent を用いた監視を実装する • CloudWatch Alarm の設定 • 取得したメトリクスに対して閾値を設定する事で、特定のアクション を実行できる - SNS アクション: 主にメール通知を行う - AWS Lambda アクション: 作成したスクリプトを実行する - Auto Scaling アクション: Auto Scaling に関する処理を行う - EC2 アクション: サーバ再起動・停止・終了を行う - Systems Manager アクション: Systems manager と連携する 今回はコレ

Slide 76

Slide 76 text

監視 ⚫CloudWatch Agent を用いた監視を実装する • 起動・停止をスケジューリングしている為、監視設定の自動静観機能が必要 監視有効化 Amazon EventBridge AWS API cron(15 18 * * ? *) cloudwatch:enableAlarmActions 監視無効化 Amazon EventBridge AWS API cron(45 2 * * ? *) cloudwatch:disableAlarmActions CloudWatch Alarm CloudWatch Alarm

Slide 77

Slide 77 text

監視 ⚫CloudWatch Agent を用いた監視を実装する • 各種メトリクスを集約して、カスタムダッシュボードを作成

Slide 78

Slide 78 text

監視 ⚫CloudWatch Agent を用いた監視を実装する • 各種メトリクスを集約して、カスタムダッシュボードを作成 CPU 使用率とクレジット消費量 から、適切なインスタンスサイズ を分析 Minecraft プロセスの 稼働状況を確認 アプリログの 「joined the game」 「left the game」 をカウントし、差分を表示 = 接続中のプレイヤー数 プレイヤー数とサーバリソースの相関 関係を分析

Slide 79

Slide 79 text

監視 ⚫(参考)Minecraft サーバでよく見かけるアプリログから考えられる運用 ⚫ xxx is joined the game. ⚫ xxx is left the game. ⚫ Can't keep up! Is the server overloaded. ⚫ xxx has moved wrongly! • プレーヤーがゲームにログイン・ログアウトした際のログ • サーバに高負荷がかかっている事を示すログ - 例: カウントしておいて、一定時間内に特定回数検出したらアラート 発報、サーバ増強対応を行う • プレイヤーのチートと思われる動き方を検知したログ - 例: ログからプレイヤーを特定してコマンドを生成、Run Command で自動的に ban する

Slide 80

Slide 80 text

監視 ⚫(再掲) 監視要件 • Minecraft が動いているかどうかを把握したい - 自分がいない状態でも、友達がプレイできるようにしたい • 障害対応時、何が起きているかを迅速に把握したい - 原因を特定し、障害復旧に役立てたい

Slide 81

Slide 81 text

監視 ⚫(再掲) 監視要件 • Minecraft が動いているかどうかを把握したい - 自分がいない状態でも、友達がプレイできるようにしたい • 障害対応時、何が起きているかを迅速に把握したい - 原因を特定し、障害復旧に役立てたい これだけやれば、満たせたでしょう!!

Slide 82

Slide 82 text

監視 ⚫Next Actions: セキュリティの強化 Amazon GuardDuty Amazon Inspector Amazon Macie Amazon Route 53 AWS CloudTrail AWS Config Amazon Detective ポート変更とドメイン登録 AWS API ロギング 構成管理 脅威対策 インシデントレスポンス強化 AMI 更新 Amazon EC2 Image Builder データ保護 脆弱性対策 Network Load Balancer DoS攻撃対策 ・・・・・・

Slide 83

Slide 83 text

監視 ⚫Next Actions: セキュリティの強化 Amazon GuardDuty Amazon Inspector Amazon Macie Amazon Route 53 AWS CloudTrail AWS Config Amazon Detective ポート変更とドメイン登録 AWS API ロギング 構成管理 脅威対策 インシデントレスポンス強化 AMI 更新 Amazon EC2 Image Builder データ保護 脆弱性対策 Network Load Balancer DoS攻撃対策 ・・・・・・ To be continued……

Slide 84

Slide 84 text

Agenda AWS Ambassador が Minecraft サーバを本気で運用してみた ⚫構築 ⚫運用 ⚫監視 ⚫まとめ

Slide 85

Slide 85 text

Agenda AWS Ambassador が Minecraft サーバを本気で運用してみた ⚫構築 ⚫運用 ⚫監視 ⚫まとめ の、前に……

Slide 86

Slide 86 text

まとめ、の前に…… ⚫今回 Minecraft で遊ぶ為に実装したもの 構築 運用 監視 • ネットワーク設定 • サーバ立ち上げ • サーバ接続設定 • サーバ構築 • バックアップ取得設定 • サーバ起動・設定スケジューリング • CloudWatch Agent 設定 • CloudWatch Alarm 設定 • CloudWatch Dashboard 作成

Slide 87

Slide 87 text

まとめ、の前に…… ⚫今回 Minecraft で遊ぶ為にやった事 構築 運用 監視 • ネットワーク設定 • サーバ立ち上げ • サーバ接続設定 • サーバ構築 • バックアップ取得設定 • サーバ起動・設定スケーリング • CloudWatch Agent 設定 • CloudWatch Alarm 設定 • CloudWatch Dashboard 作成 全部作るの、大変すぎない?

Slide 88

Slide 88 text

まとめ、の前に…… ⚫AWS CloudFormation で構築を自動化する • 予め定義したテンプレートに従って AWS リソースを作成するサービス • テンプレートとして AWS 環境を定義できるので、構成管理や、作業 ミス防止に効果的 • 楽しい AWS CloudFormation

Slide 89

Slide 89 text

まとめ、の前に…… ⚫AWS CloudFormation で構築を自動化する • 今回紹介した構成を一撃で構築するテンプレートを作成しました https://github.com/issei-hamada/hmddev-minecraft- server-tools.git

Slide 90

Slide 90 text

まとめ、の前に…… ⚫AWS CloudFormation で構築を自動化する • 今回紹介した構成を一撃で構築するテンプレートを作成しました https://github.com/issei-hamada/hmddev-minecraft- server-tools.git AWS の自由度の高さを体感せよ!!

Slide 91

Slide 91 text

Agenda AWS Ambassador が Minecraft サーバを本気で運用してみた ⚫構築 ⚫運用 ⚫監視 ⚫まとめ

Slide 92

Slide 92 text

まとめ ⚫Minecraft サーバの構築から監視まで、全て実装してみました 構築 運用 監視 • 論理ネットワークの設定 - セキュアな接続に使えるサービスを 紹介 • サーバ構築 - 自動起動設定まで全て紹介 - ユーザデータでの設定自動化 • バックアップ取得設定 - アプリケーションの特性を踏まえて、 バックアップ取得設定を自動化 • サーバ起動・設定スケーリング - コスト削減の為に、起動・停止を 自動化 • 稼働状況の可視化の為、様々な 監視設定を投入

Slide 93

Slide 93 text

まとめ ⚫Minecraft サーバの構築から監視まで、全て実装してみました 構築 運用 監視 • 論理ネットワークの設定 - セキュアな接続に使えるサービスを 紹介 • サーバ構築 - 自動起動設定まで全て紹介 - ユーザデータでの設定自動化 • バックアップ取得設定 - アプリケーションの特性を踏まえて、 バックアップ取得設定を自動化 • サーバ起動・設定スケーリング - コスト削減の為に、起動・停止を 自動化 • 稼働状況の可視化の為、様々な 監視設定を投入 これらの構築を AWS CloudFormation で 全て自動化

Slide 94

Slide 94 text

まとめ ⚫Minecraft サーバを構築・運用する為のサービスはたくさんあるが、 自分で柔軟に運用設計出来るのが AWS を選ぶ理由 ⚫今回はたまたま Minecraft ベースで話をしたが、他のサービスに 置き換えてもやる事は同じ ⚫Minecraft は 楽しい

Slide 95

Slide 95 text

まとめ LT 登壇して下さる方、待ってます!!

Slide 96

Slide 96 text

まとめ Now, Go build!!

Slide 97

Slide 97 text

No content