3.4K Views
May 29, 23
スライド概要
2020/09/23(水)
某オンラインゲーム会社説明会をAzure上で構築した話【ビヨンド勉強会#28】
日本・中国・カナダを拠点に、AWS や GCP・Azure などのマルチクラウドに対応した、クラウド / サーバーの構築・移行、24時間365日の運用保守 / 監視、負荷テスト、Webシステム開発、サーバーサイド / API 開発 など、クラウド / サーバーに特化したサービスをご提供いたします。 ● コーポレートサイト https://beyondjapan.com ● YouTube https://www.youtube.com/c/beyomaruch ● X https://x.com/beyondjapaninfo ● Instagram https://www.instagram.com/beyondjapan_24365
未経験エンジニアが マイクラサーバを構築した話 株式会社ビヨンド 稲畑 萌子
自己紹介 株式会社ビヨンド システムソリューション部 2020年1月入社 前職は化粧品販売 稲畑 萌子
普段の業務 サーバ運用、構築 趣味 音楽鑑賞・ライブ(バンド) GLAY L’Arc~en~Ciel ゲーム実況鑑賞 Youtuber: 狩野英孝
目次 マイクラサーバとは 構築することになった経緯 構成・Azureの仕組み(概要) Azureコンソール上での操作 コマンドライン操作 おまけ まとめ
目次 マイクラサーバとは 構築することになった経緯 構成・Azureの仕組み(概要) Azureコンソール上での操作 コマンドライン操作 おまけ まとめ
マイクラサーバとは マイクラは3タイプある サーバの用意方法 自分で構築 Java版 自宅PCサーバ 統合版 クラウドサーバ PS4版 テンプレートのある レンタルサーバを利用 マルチプレイをするには サーバを立てる必要がある Minecraft Realms Atemos 難しそう・・・ ConoHa VPS さくらのVPS
目次 マイクラサーバとは 構築することになった経緯 構成・Azureの仕組み(概要) Azureコンソール上での操作 コマンドライン操作 おまけ まとめ
構築することになった経緯 事前に必要なこと 「無謀かもしれんけど・・・ やってみない?」 MOJANGアカウント作成 Minecraft Client ダウンロード IT未経験で入社して1か月 資格 Java Edition ¥3,000 AWS Cloud Practitioner AWS Solution Architect Associate LPIC 101 マイクラ公式サイトから行えます サーバ構築経験 https://www.minecraft.net/ AWSコンソールポチポチ LAMP環境構築 当時の私
目次 マイクラサーバとは 構築することになった経緯 構成・Azureの仕組み(概要) Azureコンソール上での操作 コマンドライン操作 おまけ まとめ
構成・Azureの仕組み(概要) 課金請求、上限値、各種申請の単位 Administrator Vnet Subscription SSH (22) Public Subnet Minecraft (25565) VM (CentOS8.2+OpenJDK11.0.8) Resource Group Player Azure Active Directory 課金ユーザーID認証基盤 サブスクリプション作成 リソースグループ作成 仮想ネットワーク(Vnet)作成 仮想マシン(VM)作成 セキュリティグループ設定 リソースを整理する箱
Azureコンソールの操作:サブスクリプション作成 サブスクリプション(請求の単位)を作成
Azureコンソールの操作:サブスクリプション作成 新規作成はこちらから 今回は無料試用版を使用
Azureコンソールの操作:リソースグループ作成 リソースを整理しておく箱を作成していきます
Azureコンソールの操作:リソースグループ作成 新規作成
Azureコンソールの操作:リソースグループ作成 先程作成したサブスクリプションを選択 何処でもOK 今回タグは付けないので作成に進みます
Azureコンソールの操作:リソースグループ作成 リソースグループはこれで完成!
Azureコンソールの操作:仮想ネットワーク作成 プライベートネットワークを作成していきます
Azureコンソールの操作:仮想ネットワーク作成 新規作成
Azureコンソールの操作:仮想ネットワーク作成 作成済のものを選択 リソースグループに合わせる 基本の設定です
Azureコンソールの操作:仮想ネットワーク作成 VnetのIPアドレス範囲 IPアドレスの設定です サブネットのIPアドレス範囲
Azureコンソールの操作:仮想ネットワーク作成 今回はデフォルトで大丈夫です
Azureコンソールの操作:仮想ネットワーク作成 仮想ネットワークが完成!
Azureコンソールの操作:Virtual Machine作成 いよいよVirtual Machineです
Azureコンソールの操作:Virtual Machine作成 新規作成
Azureコンソールの操作:Virtual Machine作成 作成済のものを選択 基本設定です
Azureコンソールの操作:Virtual Machine作成 リソースグループ、Vnetに合わせる サイズ参考 普段:Standard B1ms (1 vCPU 2GB メモリ) 説明会・交流会時:Standard A4 v2 (4 vCPU 8GB メモリ) ※最多26人参加 適宜必要なイメージ・サイズに変更してください
Azureコンソールの操作:Virtual Machine作成 デフォルトはazureuser デフォルトはVM名_key SSH、HTTP、HTTPSから選択可能 受信ポートはフルオープンになってしまうため後で設定
Azureコンソールの操作:Virtual Machine作成 Standard HDD Standard SDD から選択 Premium SDD 適宜必要な種類を選択してください
Azureコンソールの操作:Virtual Machine作成 デフォルトでOK
Azureコンソールの操作:Virtual Machine作成 作成済のものを選択 新規作成から変更可 ネットワーク設定です
Azureコンソールの操作:Virtual Machine作成 基本設定同様、受信ポートは後で設定
Azureコンソールの操作:Virtual Machine作成 詳細・タグは今回は必要ないのでとばします
Azureコンソールの操作:Virtual Machine作成 仮想ネットワークが完成!
Azureコンソールの操作:セキュリティグループ設定 まず22番接続が出来るよう設定します
Azureコンソールの操作:セキュリティグループ設定 ご自身のIPを設定してください
Azureコンソールの操作:セキュリティグループ設定 Minecraft専用ポート(25565番)を今回はフルオープンします
目次 マイクラサーバとは 構築することになった経緯 構成・Azureの仕組み(概要) Azureコンソールの操作 コマンドライン操作 おまけ まとめ
コマンドライン操作:構築の流れ OpenJDKインストール Jarファイルのインストール サービス起動化 動作確認 OpenJDK (Java SE Development Kit) とは・・・ JavaVMやコンパイラなどJava SEに基づいたソフトウェアを開発するための ソースコードを含んだオープンソースパッケージ
コマンドライン操作:openJDKインストール Checking latest OpenJDK [root@minecraft-server ~]# yum search openjdk Last metadata expiration check: 0:06:58 ago on Sun 13 Sep 2020 10:25:13 AM UTC. ================Name & Summary Matched: openjdk =============== java-11-openjdk-demo.x86_64 : OpenJDK Demos 11 OpenJDKの最新バージョンを確認 (略) java-1.8.0-openjdk-javadoc-zip.noarch : OpenJDK 8 API documentation compressed in single archive ================Summary Matched: openjdk =============== [root@minecraft-server ~]# yum install java-11-openjdk Installing latest OpenJDK Checking Java version [root@minecraft-server ~]# java --version openjdk 11.0.8 2020-07-14 LTS OpenJDK Runtime Environment 18.9 (build 11.0.8+10-LTS) OpenJDK 64-Bit Server VM 18.9 (build 11.0.8+10-LTS, mixed mode, sharing)
コマンドライン操作:Jarファイルのインストール サーバへSCPする Minecraft公式サイトからサーバ起動用の最新ファイルをダウンロード出来ます https://www.minecraft.net/ja-jp/download/server
コマンドライン操作:Jarファイルのインストール Make Minecraft Directory [root@minecraft-server ~]# mkdir /var/minecraft このディレクトリにserver.jarを持ってくる [root@minecraft-server ~]# cp /home/adminuser/server.jar /var/minecraft/ Check jar file [root@minecraft-server ~]# cd /var/minecraft [root@minecraft-server minecraft]# ll total 37056 -rw-r--r--. 1 root root 37942337 Sep 13 11:40 server.jar server.jarがあることを確認 [root@minecraft-server minecraft]# mv server.jar minecraft_server.1.16.3.jar [root@minecraft-server minecraft]# ll Rename jar file total 37056 -rw-r--r--. 1 root root 37942337 Sep 13 11:40 minecraft_server.1.16.3.jar minecraft_server.1.16.3.jar にリネームされたことを確認
コマンドライン操作:Jarファイル起動 アプリケーション起動コマンド https://www.minecraft.net/ja-jp/download/server
コマンドライン操作:Jarファイル起動 [root@minecraft-server minecraft]# vi minecraft.sh #!/bin/sh java -Xmx1024M -Xms1024M -jar minecraft_server.1.16.3.jar nogui Starting script 起動コマンドをスクリプト化 [root@minecraft-server minecraft]# chmod o+x minecraft.sh total 37060 -rw-r--r--. 1 root root 37942337 Sep 13 11:40 minecraft_server.1.16.3.jar -rw-r--r-x. 1 root root 73 Sep 13 11:45 minecraft.sh Change permission 実行権を付与 [root@minecraft-server minecraft]# ./minecraft.sh Start script first time [12:10:40] [main/ERROR]: Failed to load properties from file: server.properties 初回は必ず失敗 [12:10:40] [main/WARN]: Failed to load eula.txt [12:10:40] [main/INFO]: You need to agree to the EULA in order to run the server. Go to eula.txt for more info. Edit eula.txt [root@minecraft-server minecraft]# ll /var/minecraft/ total 37068 -rw-r--r--. 1 root root 181 Sep 13 12:10 eula.txt -rw-r--r--. 1 root root 37942337 Sep 13 11:40 minecraft_server.1.16.3.jar -rw-r--r-x. 1 root root 74 Sep 13 12:08 minecraft.sh eula.txtが出現していることを確認 [root@minecraft-server minecraft]# vi eula.txt #By changing the setting below to TRUE you are indicating your agreement to our EULA. #Sun Sep 13 12:10:40 UTC 2020 true (同意) に変更 EULA =ソフトウェア利用許諾契約 eula=true
コマンドライン操作:Jarファイル起動
Start script second
[root@minecraft-server minecraft]# ./minecraft.sh
[12:12:21] [main/INFO]: Environment: authHost='https://authserver.mojang.com’,
accountsHost='https://api.mojang.com', sessionHost='https://sessionserver.mojang.com’,
name='PROD'
(略)
[12:13:28] [Server thread/INFO]: Done (58.046s)! For help, type "help"
/stop
この後サービス起動設定を行うため
[12:14:54] [Server thread/INFO]: Stopping the server
起動が完了しFor help, type “help”と出たら
[12:14:54] [Server thread/INFO]: Stopping server
/stopと打ち一旦アプリを終了させる
[12:14:54] [Server thread/INFO]: Saving players
[12:14:54] [Server thread/INFO]: Saving worlds
[12:14:54] [Server thread/INFO]: Saving chunks for level 'ServerLevel[world]'/minecraft:overworld
[12:15:02] [Server thread/INFO]: ThreadedAnvilChunkStorage (world): All chunks are saved
[12:15:02] [Server thread/INFO]: Saving chunks for level 'ServerLevel[world]'/minecraft:the_nether
[12:15:02] [Server thread/INFO]: ThreadedAnvilChunkStorage (DIM-1): All chunks are saved
[12:15:02] [Server thread/INFO]: Saving chunks for level 'ServerLevel[world]'/minecraft:the_end
[12:15:02] [Server thread/INFO]: ThreadedAnvilChunkStorage (DIM1): All chunks are saved
[12:15:02] [Server thread/INFO]: ThreadedAnvilChunkStorage (world): All chunks are saved
[12:15:02] [Server thread/INFO]: ThreadedAnvilChunkStorage (DIM-1): All chunks are saved
[12:15:02] [Server thread/INFO]: ThreadedAnvilChunkStorage (DIM1): All chunks are saved
コマンドライン操作:サービス起動化 Add system ユニット定義ファイルを作成 [root@minecraft-server minecraft]# vi /etc/systemd/system/minecraft_server.service [Unit]【ユニットタイプに依存しない設定】 Description=Minecraft Server After=network-online.target:このユニットより 先に起動すべきユニット [Service]【タイプ固有の設定】 ExecStart=/bin/bash /var/minecraft/minecraft.sh WorkingDirectory=/var/minecraft/ :プロセス停止時の再起動条件 Restart=always User=minecraft Group=minecraft [Install]【enable/disableコマンドの動作に影響する設定】 WantedBy=multi-user.target :enable時にどのユニットを前提とするか .wantsディレクトリにリンクを貼る Reflect system [root@minecraft-server minecraft]# systemctl daemon-reload systemdの設定を反映させる Auto start setting [root@minecraft-server system]# systemctl enable minecraft_server Check Setting [root@minecraft-server system]# systemctl is-enabled minecraft_server enabled
コマンドライン操作:サービス起動化 [root@minecraft-server system]# systemctl start minecraft_server Start Minecraft App Check status [root@minecraft-server system]# systemctl status minecraft_server ● minecraft_server.service - Minecraft Server Loaded: loaded (/etc/systemd/system/minecraft_server.service; enabled; vendor preset: disabled) Active: active (running) since Sun 2020-09-13 12:32:33 UTCx; 6s ago Main PID: 53205 (bash) Tasks: 14 (limit: 21612) Memory: 426.6M CGroup: /system.slice/minecraft_server.service tq53205 /bin/bash /var/minecraft/minecraft.sh mq53206 java -Xmx1024M -Xms1024M -jar minecraft_server.1.16.3.jar nogui Sep 13 12:32:33 minecraft-server systemd[1]: Started Minecraft Server. Check process [root@[root@minecraft-server system]# ps auxwwf | grep [m]inecraft minecra+ (略) /bin/bash /var/minecraft/minecraft.sh minecra+ (略) ¥_ java -Xmx1024M -Xms1024M -jar minecraft_server.1.16.3.jar nogui
コマンドライン操作:動作確認 マルチプレイへ進んでください
コマンドライン操作:動作確認 アンテナ立ったらOK! サーバーを追加からパブリックIPとサーバ名を登録し、サーバーに接続しましょう
コマンドライン操作:動作確認 そわそわ、、、
コマンドライン操作:動作確認 いけたーーーーーーーーーー!!!!!!!!!!
目次 マイクラサーバとは 構築することになった経緯 構成・Azureの仕組み(概要) Azureコンソールの操作 コマンドライン操作 おまけ まとめ
おまけ:ホワイトリスト設定 ホワイトリスト: 知らない人が勝手にサーバに入ってくることを防ぐ 勿論クラウドのファイアーウォールでIP制御してもOK 操作方法 (Minecraft Server /Minecraft Client) ※ Minecraft Clientの場合は whitelist on ワールドにログイン状態で whitelist off /をクリックすると whitelist add [ユーザー名] チャットが開く whitelist remove [ユーザー名] whitelist list whitelist reload whitelist.jsonでも確認出来る 左記コマンドを実行
目次 マイクラサーバとは 構築することになった経緯 構成・Azureの仕組み(概要) Azureコンソールの操作 コマンドライン操作 おまけ まとめ
まとめ 想像していたよりも遥かに簡単に出来た 自分の構築したサーバ上で遊べる経験から サーバ構築の楽しさを感じることが出来た ゲームが好きな人、マイクラに興味がある人 だけでなく Azureを触ったことの無い人 サーバ構築経験の無い人、浅い人
ご清聴ありがとうございました マイクラサーバとは 構築の経緯 構成・Azureの仕組み Azureコンソール操作 コマンドライン操作 豆知識 まとめ 株式会社ビヨンド 稲畑 萌子