ホスティングされたカスタムDiscordボットの稼働時間は、その裏にあるインフラにすべて左右されます。Noxyrのカスタムボットでは、ホスティングノードの集まりがボットのホストを自動で選び、数秒ごとに状態を確認し、あなたがサーバーに一切触れることなくホストを移動させます。必要なのはトークンを貼り付けることだけです。プロビジョニング、パッチ適用、再起動などは一切必要ありません。

A user's bot token runs on a Noxyr node and comes online as their own branded bot. Your token Noxyr node MyBot Online

サーバーを管理するのはNoxyrのノードです

各ノードは1つのプロセスで、割り当てられたすべてのカスタムボットをホストしています。短いサイクルでチェックインし、起動すべきボットを開始し、停止すべきボットを止め、ウェブサイトが読み取るハートビートを記録します。これは、本来ならVPSで自分が行わなければならないインフラの仕事すべてです。プロセスを稼働させ続け、落ちたら気づき、自分のせいではない理由でDiscordが切断したときには再度ログインし直します。

セットアップ時にホストが選ばれる仕組み

自動がデフォルトであり、ほとんどの方はこのまま選択しておくべきです。自動では、現在空きがあるノードが常に選ばれます。ノードは決まった順番で埋まり、1つのノードが満杯になってから次のノードが新しいボットを受け付けます。負荷を均等に分散させて、どのノードも半分ずつ埋まった状態にするわけではありません。特定のホストを手動で選んだ場合も、裏では実際に稼働しているノードに振り分けられます。選んだノードがちょうどオフラインだったり満杯だったりしても、セットアップが失敗するのではなく、その時点で利用可能な最善のノードが使われます。

ノードが「満杯」と判定される条件

判定は1つではなく、2つのチェックで行われます。1つ目は、ノード自身のボット数の上限に達したときで、そのノードは新しいボットを受け付けなくなります。2つ目は、もう1つボットを追加すると、測定されたメモリ使用量が上限近くに達してしまう場合です。2つ目のチェックが必要なのは、ボット数だけでは判断できないからです。混雑したサーバーは、静かなサーバーよりもボット1つあたりのメモリを多く使います。ボット数の上では空きがあるように見えるノードでも、メモリが不足しかけていて、新しいボットを安全に受け入れられない場合があります。どちらの上限に先に達しても、新しいセットアップは自動的に次のノードに振り分けられます。

ボットを別のホストに移す

カスタムボットのページにある「Change Node」で、すでに稼働中のボットを別のノードに移せます。移動のたびに新しいDiscordログインが発生し、Discordは1つのボットがそれを行う頻度を制限しているため、移動の間には5分のクールダウンがあります。実際の移動では、新しいノードで再接続する間にボットが一時的に再起動します。ただし、設定、チケット、カタログなどのデータはすべてそのまま残ります。それらは共有データベースに保存されており、プロセスが稼働しているノードには保存されていないからです。

ノードに問題が起きた場合

ボットのハートビートが古くなった場合、つまりノードからの応答が途絶えた場合は、Noxyrのメインボットが自動的に戻ってそのサーバーを再びカバーします。そのため、メンバーが完全にボットからの応答を受けられない状態になることはありません。ノードやログインが復旧すると、次のチェックインでカスタムボットがそのサーバーを自動的に引き継ぎます。通常のケースでは、サポートチケットは必要ありません。最初にボットをセットアップしたときにボットを起動させたのと同じ、自己修復のループが働くだけです。

ノードが分散せず、決まった順番で埋まる理由

負荷がすべてのノードに均等に分散されていると考えるのは自然かもしれません。少しこちら、少しあちら、という具合に。しかしNoxyrは、意図的に逆の方式を取っています。1つのノードが完全に満杯になるまで、次のノードは新しいボットを1つも受け付けません。こうすることで、現在の負荷に対して同時に稼働するノードの数を最小限に保てます。複数のノードを少しずつ稼働させるよりも、基盤となるインフラを効率的に使えるからです。どちらの方式でも、ボットの動作には影響しません。同期ループとハートビートは、どのノードで動いていても同じように機能します。

ダッシュボードの数値が実際に意味するもの

ホストに表示されるPingは推測ではなく実測値です。各ノードは定期的にDiscordのゲートウェイエンドポイントへのリクエストにかかる時間を計測し、その平均を報告します。ノードのオンライン/オフラインの状態は、最後にチェックインしてからどれくらい経過したかに基づいています。しばらく応答がないノードは、まだ大丈夫だと見なされるのではなく、利用不可として扱われます。これは、カスタムボットの応答が途絶えたサーバーを、Noxyrのメインボットが引き継ぐきっかけにもなります。

稼働時間と有料VPSの比較

自分でVPSを運用すると、マシンを完全に管理できますが、停止したことに気づく責任も完全に自分にあります。ホスティングされたカスタムボットは、その管理権限と引き換えに、まず異常に気づく役割を他者に任せることになります。どちらが常に優れているとは言えません。2つのどちらにするか迷っている場合は、カスタムボットとVPSでの自己ホスティングの比較で詳しく解説しています。

よくある質問

ボットが今オンラインかどうかはどう確認できますか?ダッシュボードのカスタムボットページには、単にスイッチがオンかどうかだけでなく、リアルタイムの状態が表示されます。

ボットが別のノードに移ると設定が消えますか?いいえ、消えません。設定は共有データベースに保存されており、ボットを実行しているノードのプロセスとは独立しています。

「自動」ではなく特定のノードを選べますか?選べます。ただし、選んだノードがその時点で満杯やオフラインでも、必ず実際に稼働しているホストに振り分けられます。

ダッシュボードの状態はどのくらいの頻度で更新されますか?数秒ごとです。ボットからの応答が途絶えたノードは、長い遅延の後ではなく、すぐに検知されます。

停止時間に料金が発生したり、何らかのペナルティがあったりしますか?いいえ。そもそも支払いは一切関係ありません。稼働時間の問題で発生するのは、再接続の間ボットが一時的に利用できなくなることだけで、それ以外の費用はかかりません。

セットアップの要件はカスタムボットのドキュメントに、ノードの選択とChange Nodeの詳しい仕組みはカスタムボットホスティングのドキュメントにあります。