[Minecraft] 複数サーバーを行き来できるようにしたかったけど、妥協したお話

Ver 1.18 になってから、洞窟とかいろいろアップされた
The Novice のサーバーは 1.16 から運用しているので、拠点近くでは反映がされておらず

それなら別サーバーを連結するかということで Bungeecord を試したが、
結局 コマンドブロックで未生成のところと行き来できるようにする方法で妥協した

何が問題だったか

そもそもBungeecord とは、複数のMinecraft server を中継するプロキシサーバー
Bungeecordを経由して、「/server (サーバー名)」コマンドを用いれば、異なるマイクラサーバーへ瞬時に移行できる

ホロライブさん運営のサーバー で、メンバーが言っている「資源鯖(サーバー)」や、
にじさんじさんで言う新鯖などは、こういったプロキシサーバーを用いて実現しているはず

で、このBungeecord を使えば、たしかに複数サーバーを行き来できるようになったのだが、
「インベントリは共有されない」のが通常の動作となる
つまり、本当に別のサーバーへログインしているだけ

共有するには SpigotMC 用のプラグインを用いるのが定石の様子
対し、うちのサーバーはバニラなので、したがってこの方法が使えない

という試行錯誤の結果、未生成の遠方の地を利用することにした

せっかくなので Bungeecord の実装メモ

ちなみにネットワーク、ハードウェアの知識は必要なので、何も知らない人が構築するのは難しい
挑戦して試行錯誤をして知識を蓄えるのはアリ、これを機会にネットワークを勉強してみても良い

0. 準備

サーバー設計を行う
必要なのは下記

BungeeCord を稼働させるサーバー / ポート番号
minecraft server を稼働させるサーバー1 / ポート番号
minecraft server を稼働させるサーバー2 / ポート番号

プレイヤーは BungeeCord へ接続する
したがって、ポート番号を省略した接続を行う場合、BungeeCordの待受ポートを 25565 にする

そうすると minecraft server 郡のポート番号と競合するため、
minecraft server 側のポート番号を 25565 以外にする必要がある

これらを1台のサーバーで稼働させる場合、
メモリ量の設計も必要となる
minecraft server 2台を3G、BungeeCordを512MB ぐらいで設計してみること

あとは持っているサーバーのスペックと相談

今回はすべて同一サーバで稼働させた例となる

1. ダウンロードしてくる

最新ビルド BungeeCord.jar
BungeeCord [Jenkins] (md-5.net)

導入時期によっては最新バージョンに対応していない可能性があるため、変更履歴は見ておくこと

2. 初回起動

初期ファイル群を生成する
Minecraft Server のように

java -jar BungeeCord.jar


Ctrl +C で止める

3. 生成されたファイルのconfig調整

config.yml を編集する

servers:
  lobby:
    motd: '&1Just another BungeeCord - Forced Host'
    address: localhost:25565
    restricted: false

デフォルトでテンプレートがこのように用意されているので、
プロキシ先のマイクラサーバーを設定する

restricted とは権限のこと、何らかのイベントを運用するときは用いるが、単純に増やすだけならfalseで良い

listeners:
- query_port: 25577
  motd: '&1Another Bungee server'
        :(中略)
  priorities:
  - lobby
        :(中略)
  host: 0.0.0.0:25577
  max_players: 1

query_port と host はポート番号を設計通りに変更する
※違いは何?

motd は サーバー一覧で出るやつ

priorities には 先の servers で増やしたものを入れていく
おそらくログイン時は上の方へ優先的に入らされるはず

max_players は プレイヤー数
サーバー運用方法次第だが、最初に入るサーバーをメインサーバーとする場合は数を増やす必要がある

4. 各Minecraft Server を調整

server,properties の query.port server_port を 設計通りに変更して起動
同一サーバーで稼働させる場合、screen の併用は必須

online-modeをfalse に設定
online モードとは、Mojang/Microsoft アカウントへのログインを必須とするか
Bungeecordを用いる場合、ログインは Bungeecord が行うので、各サーバーでのログイン処理を省略する

なお、このあたりを修正するのが Vanillacord というプログラム
今回使わないまま妥協したので、詳細は調べてほしい

5. 全サーバー起動

すべてを1台のサーバーで稼働させる場合、 screen が必要
screen の使い方は省略する

*. 既存サーバーを Bungeecord へ連携した場合

一部プレイヤーが装備なし/初期スポーンになることもある
その場合、新uuid を控え、旧uuid を usercache.json で調べ、world/playerdata のファイルを調整する

プレイヤー関係が関わるのは下記

/op (管理者権限): uuid が変わると外れる
whitelist.json : 再設定が必要、ファイルを直接調整するか、面倒なら管理者一人がログインできるようにはしておいて、whitelistをコマンドで再設定する
world/playerdata も変更が必要になる

トラブルシューティング

・Exception Connecting:QuietException : Unexpected packet received during server login process!
ip_forward が true で、各サーバーの online-mode が true になっている
二重でログイン処理を行おうとして、期待の結果が得られずエラーとなっている

*. コマンドブロックが使えない場合

config.properties でtrueにすること


buckit や SpygotMC とかは知っていたけど、そろそろそっちを標準で構築するようにしたほうが良さそうだなあ

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

Share via
Copy link