NeosVR Advent Calendar 2021 「色んなNeosの楽しみ方!ヘッドレスサーバの運用について」
この記事は NeosVR Advent Calendar 2021 の5日目です。昨日はlillさんの「NeosVR Headless Server を GCP で建てる話」でした。
はじめに
こんにちは、NeosVRを始めて4ヶ月目のきよまるです。
今回の記事はNeosVRのヘッドレスサーバ運用の体験記になります。
技術的な話を書いても良かったのですが、多くの方に「へー、NeosVRってこんな楽しみ方もあるんだ」とものづくり以外の楽しみ方もあることを知っていただくために読み物としてお楽しみにいただければ幸いです。
ヘッドレスサーバってなに?
ヘッドレス・・頭無し?、よくわかりませんよね。
前置きとして、そもそもNeosVRではどのようにワールドが立てられてユーザが遊びに行くのかの仕組みを説明します。
NeosVRの通信方式はP2P方式というものを採用しています。
ワールドを起動するのは実は各ユーザのPCが行っており、例えばMMORPGのゲームサーバみたいなものはありません。
ユーザのPCでワールドを起動(これ以降はセッションを立てると表現)したら、そこに他のユーザが接続して遊びに行く形式となっています。
しかしこの形式が故に下記のような課題があります。
この問題を解決するために用意されているのがヘッドレスという仕組みです。
ヘッドレスの由来としてはヘッドマウントディスプレイがない状態でセッションを立てられる = 頭無し = ヘッドレスということのようです。
ヘッドレスは専用のクライアントアプリがありこちらを使って起動します。(これはNeosVRのpatreonという支援の特典として使えるようになります)
特徴としては下記のようなものがあります。
これらの特徴から大人数が参加するイベントで安定性が求められる場合や常時起動しておきたいワールドのセッション(JPチュートリアルワールド等)で使われています。
以降はヘッドレスクライアントを起動してワールドをセッションを立てているPCをヘッドレスサーバと表現します。
ちょっと困ったことがあった
ヘッドレスサーバは基本的に安定して動いてはいますが、長時間起動しているとPCのメモリを大量に消費してしまうことがあります。
メモリを消費尽くすとどうなるでしょう。。そう、ヘッドレスクライアントが正常に動かなくなり起動しているセッションが落ちるなど悪影響が発生します。
せっかく安定してセッションを立て続けられるので落ちてしまってはいけないですよね。そこで次のようなことをしました。
どのようなことをしたのか
1) きよまるのヘッドレスサーバを監視するようにした
なにはともあれ、ヘッドレスサーバのリソース状況がわからなければ異常に気がつくことができませんよね。
そこでサーバ監視ソフト(Zabbix)を導入してヘッドレスサーバのリソースを監視、異常があるときにはチャットソフト(discord)に通知を飛ばす設定を行いました。
これにより早期に異常に気がつくことができるようになり対応速度があがりました。
2) 他のヘッドレスサーバも監視するようにした
NeosVRでは他にもヘッドレスサーバを立てているユーザがいます。
あるとき、雑談で自分のヘッドレスサーバに監視の仕組みをいれたんだよーって話をしたら、それ面白そうだね、うちのも監視に入れられませんか?とお話をいただきました。
そこでその方のヘッドレスサーバを監視に追加することにしました。
しかし、もともと個人の監視だけを想定していたので監視ソフト自体はきよまるの自宅にあるサーバで動いています。
接続の関係上、グローバルアドレスがほしい。。となりVPSと呼ばれるサーバをレンタルし監視ソフトをいれることにしました。
これにより複数のヘッドレスサーバを監視する統合監視システムができあがりました。
3) アクセス制限をしやすくするためにリバースプロキシサーバを作った
監視ソフトで監視状況や設定を行うダッシュボードへのアクセスはセキュリティを考えてヘッドレスを運用しているユーザのみが見れるようにアクセス制限をしています。
一人二人なら大丈夫ですが人数が増えてくるとアクセス制限周りの管理が大変です。
今後、他にもサービスを作るかも。。と考えたためもう一台VPSと呼ばれるサーバをレンタルしました。
ここで借りたサーバをリバースプロキシ(代理でアクセス制限やダッシュボードへのアクセスを受けてくれるサーバ)として構築をしてアクセス制限をするようにしました。
今回は詳細は書きませんがJPチュートリアルワールドのログイン人数がわかるダッシュボードやNeosVR内から監視情報を取得するためWebAPI(httpプロトコルを使ってアクセスすると値とか返してくれるやつ)のSSL証明書を代理で応答してくれたりと大活躍しております。
最終的にどんな構成になったのか
ここは専門的な話になりますがこんな構成になりました。
今回の話は下記の動画で紹介していますので技術的な部分で興味をお持ちになられた方は是非ご覧ください。
何が楽しいのか、なぜやるのか
ここまで色々と書いてきましたが、一体何が楽しくてヘッドレスサーバの運用をしているのかというと自分は次の理由で動いています。
他にもたくさんあります。。たくさんありますがこれ以上書いてしまうとまとまりがつかなくなるので大きくは上の3つになります。
自分ひとりで始めた活動でしたが「Neos JP Infra Team(仮)」というdiscordのチャットグループもできて大きな動きになってきました。
皆様にはいつも感謝しています。ありがとう!
せんでん
1) JPチュートリアルワールドのログイン人数がリアルタイムわかるダッシュボード
Neosっていつ人がいるかよくわからん。。って話を色んなところで聞いたのでよく人が集まるJPチュートリアルワールドの人数をリアルタイムに表示するダッシュボードを作りました。
特に始めたばかりの方で人に聞きたいけどどこにいつ行けばいいのかわからないって方におすすめです。
URL:https://neos.kiyomaru.me/d/k5ObWdKnz/neosvr
2) NeosVRのイベントなどの情報がわかるTwitterBot
NeosVRでは様々なイベントやユーザ活動が行われています。
しかし情報がまとまっていなく、とりあえずここ見ればいいよ!ってのがなかったため情報発信をするTwitterBotを作りました。
NeosVRの今が見れますので是非ご利用ください。
URL:https://twitter.com/neos_jp_info
3) Neos JP Infra Team(仮)の活動
活動をざっくりと動画にまとめました!
是非ご覧ください。
discordのサーバはこちら
4) Kiyomaru Channelのご紹介
こんなきよまるですがYouTubeやニコニコ動画のチャンネルがあります。
主にNeosVRを始めとしてVRゲーム関連の配信を行っていますので興味がある方、是非チャンネル登録をお願いいたします!
さいごに
ここまでご覧いただきありがとうございました。
NeosVRは可能性しかない素晴らしいプロダクトです。
まだまだアクティブユーザも少なくこれから発展していくところですので、この記事で少しでも興味を持たれましたら始めてみてください。
未来はここにあります。
明日のアドベントカレンダーはtanossyの「私的Neosの楽しみ方」です。
どんな記事になるのか楽しみにしています😃