見出し画像

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でワールドを起動(これ以降はセッションを立てると表現)したら、そこに他のユーザが接続して遊びに行く形式となっています。
しかしこの形式が故に下記のような課題があります。

😥課題1
セッションを立てているユーザのPCに負荷がかかる(ネットワークやPCリソース)
😥課題2
セッションを立てているユーザがログアウトなどでNeosVRを終了するとワールドが停止して遊びに来ていた他のユーザもワールドから出される

この問題を解決するために用意されているのがヘッドレスという仕組みです。

ヘッドレスの由来としてはヘッドマウントディスプレイがない状態でセッションを立てられる = 頭無し = ヘッドレスということのようです。

ヘッドレスは専用のクライアントアプリがありこちらを使って起動します。(これはNeosVRのpatreonという支援の特典として使えるようになります)
特徴としては下記のようなものがあります。

😃特徴1
ヘッドレスクライアントアプリで起動すると画面描画がない無いためセッションを立てているPCの負荷がすくない
😃特徴2
安定してセッションを立て続けることができる

これらの特徴から大人数が参加するイベントで安定性が求められる場合や常時起動しておきたいワールドのセッション(JPチュートリアルワールド等)で使われています。

以降はヘッドレスクライアントを起動してワールドをセッションを立てているPCをヘッドレスサーバと表現します。

ちょっと困ったことがあった

どうしよう。。

ヘッドレスサーバは基本的に安定して動いてはいますが、長時間起動しているとPCのメモリを大量に消費してしまうことがあります。

メモリを消費尽くすとどうなるでしょう。。そう、ヘッドレスクライアントが正常に動かなくなり起動しているセッションが落ちるなど悪影響が発生します。

せっかく安定してセッションを立て続けられるので落ちてしまってはいけないですよね。そこで次のようなことをしました。

どのようなことをしたのか

1) きよまるのヘッドレスサーバを監視するようにした

監視してアラートを飛ばしている様子

なにはともあれ、ヘッドレスサーバのリソース状況がわからなければ異常に気がつくことができませんよね。

そこでサーバ監視ソフト(Zabbix)を導入してヘッドレスサーバのリソースを監視、異常があるときにはチャットソフト(discord)に通知を飛ばす設定を行いました。

これにより早期に異常に気がつくことができるようになり対応速度があがりました。

2) 他のヘッドレスサーバも監視するようにした

複数ユーザのリソースを監視してる

NeosVRでは他にもヘッドレスサーバを立てているユーザがいます。

あるとき、雑談で自分のヘッドレスサーバに監視の仕組みをいれたんだよーって話をしたら、それ面白そうだね、うちのも監視に入れられませんか?とお話をいただきました。

そこでその方のヘッドレスサーバを監視に追加することにしました。

しかし、もともと個人の監視だけを想定していたので監視ソフト自体はきよまるの自宅にあるサーバで動いています。

接続の関係上、グローバルアドレスがほしい。。となりVPSと呼ばれるサーバをレンタルし監視ソフトをいれることにしました。

これにより複数のヘッドレスサーバを監視する統合監視システムができあがりました。

3) アクセス制限をしやすくするためにリバースプロキシサーバを作った

リププロではこちらを採用。楽しい。

監視ソフトで監視状況や設定を行うダッシュボードへのアクセスはセキュリティを考えてヘッドレスを運用しているユーザのみが見れるようにアクセス制限をしています。

一人二人なら大丈夫ですが人数が増えてくるとアクセス制限周りの管理が大変です。

今後、他にもサービスを作るかも。。と考えたためもう一台VPSと呼ばれるサーバをレンタルしました。

ここで借りたサーバをリバースプロキシ(代理でアクセス制限やダッシュボードへのアクセスを受けてくれるサーバ)として構築をしてアクセス制限をするようにしました。

今回は詳細は書きませんがJPチュートリアルワールドのログイン人数がわかるダッシュボードNeosVR内から監視情報を取得するためWebAPI(httpプロトコルを使ってアクセスすると値とか返してくれるやつ)のSSL証明書を代理で応答してくれたりと大活躍しております。

最終的にどんな構成になったのか

Neosの中で説明したときの資料を抜粋

ここは専門的な話になりますがこんな構成になりました。
今回の話は下記の動画で紹介していますので技術的な部分で興味をお持ちになられた方は是非ご覧ください。

何が楽しいのか、なぜやるのか

麻雀イベントの様子

ここまで色々と書いてきましたが、一体何が楽しくてヘッドレスサーバの運用をしているのかというと自分は次の理由で動いています。

👍自分の作った環境でユーザが安心してイベントを開催したり、良いこと悪いこと問わず反応をいただけるのが嬉しいから
👍NeosVRという素晴らしいプロダクトを楽しむ上で自分ができることで活動に貢献したいから
👍自分で考えて色んな人に相談して1から作り上げていくことが楽しいから

他にもたくさんあります。。たくさんありますがこれ以上書いてしまうとまとまりがつかなくなるので大きくは上の3つになります。

自分ひとりで始めた活動でしたが「Neos JP Infra Team(仮)」というdiscordのチャットグループもできて大きな動きになってきました。

皆様にはいつも感謝しています。ありがとう!

せんでん

1) JPチュートリアルワールドのログイン人数がリアルタイムわかるダッシュボード

メタバーストレーニングセンターと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の楽しみ方」です。
どんな記事になるのか楽しみにしています😃

この記事が気に入ったらサポートをしてみませんか?