300人クラフトを支えるサーバーの秘密
Part2はひで@kunlabさんの発表の感想になります。
システム構成
300人マイクラのための負荷対策システム構成はこんな感じだそうです。DNSラウンドロビンで複数台のbungeecordサーバー(プロキシ)にユーザーのアクセスを割り振る構成。
可用性を考えれば以下のようなロードバランサでアクセスをbungeecordサーバーに割り振るほうが正しいようにも見えます。こちらならいずれかのbungeecordサーバーが落ちても自動的に別鯖が割り当てられます。
そうしない理由としては
- ロードバランサの許容セッション数を超えてしまう
- より上位プランのロードバランサならいけるかもしれないが、それだけで高額になる
- bungeecordが落ちて何人か切断されても再度つなぎ直してもらえればさほど問題ない
ということでした。こういう大胆な割り切り好きです。(なお現在はproxy挟む構成にすることもある?らしい)
サーバー代はテスト環境なども存在するため数十万単位にはなるそうですが、それでもかなりのコスト削減重視の構成でした。
そういえば224vCPU, 224GBメモリのマシンでゴリ押しすればプロキシサーバー分散などの複雑な構成にしなくてもなんとかなるのか聞くのも忘れてました。
bungeecordについて
bungeecordはspigot系サーバー(後述)用のプロキシらしい。こういったものが存在することは知りませんでした。
初見のことばかりで、なぜこれを挟むことで負荷対策になるのか理解できてないまま聞いてしまっていたのですが、
- Apache前にNginxを置くみたいな感じでセッション数を減らせる?
- 認証周りをbungeecordがやってくれるのでマイクラサーバー本体の負荷が減る
という感じだと理解しています。
その他bungeecordにはいろんな機能があるようなので調べてみると面白いです。
マイクラサーバーのスペック
数百人規模のサーバーとなるとCPU数百コアにメモリはTBとかなのかな?と思っていたら、32vCPUにメモリ64GBとかなり常識的な(?)スペックでした(それでもメモリ64GBの鯖なんてほとんど使ったことありませんが・・・)。
豚3000匹いけるそうです。
ただ、通常のVPSではCPUが共用である都合上リソースが厳しいこともたまにあり、CPU専有VMにするなど工夫は必要だったとのこと。
以下私の考察
CPUとメモリどっちが重要ですか?と質問するのを忘れていたのですが、メモリ不足についての言及はまったくなかったので、上記のスペックではCPU不足気味・メモリは余裕のようです。
もしさくらのクラウド, AWS, GCPなどで大規模なマイクラサーバーを立てる場合、ハイCPUやコンピューティング最適化インスタンスのほうが良さそうですね。
大規模サーバーの負荷の目安とか情報がないのでありがたいです。
DDoS対策
昔のKUNさん動画でマイクラサーバーについて攻撃対策が云々という話がありました。当時はDDoSとかの対策なんてそこまで力入れなくてよくね?と思ってました。
しかし、こういった大人数配信になるとどこからともなくサーバーのIPが流出して攻撃を受けることがよくあったそうです。
これについての対策はシンプルで、VPSやクラウドサービスのアンチDDoSサービスに頼ったとのことでした。
攻撃パケットはスクラビングセンターに引き込まれておしまいなので、そもそもサーバーで観測すらできず、これだけで完璧に対策で来てしまったとのことです。
サーバーソフトはなにを使うか
(サーバーソフトの名前はどれも初めて聞いたので、聞き間違えなど多いかもしれません)
さて、マインクラフトのマルチサーバーについては公式サーバー以外にもSpigotなど様々なものが存在しますが、kunlabでは負荷対策のため高速なPaperをよく使っているそうです。
超高速なcuberiteも使ってみて、たしかにtickが4倍ほど高速化することもあったものの、バグが多すぎてイベントでは使えなかった、とのことでした。
その他質疑応答など
- KUNさんの配信で一般参加者のコメントは禁止となっていますが、あれはパフォーマンス的な問題ですか
- いいえ。イベント進行の都合でそうなっているだけで、コメント負荷は微々たるものです。
- ビューディスタンスどういう設定にしてますか
- 普段は12、多人数でのイベントの際は6
- 1000人来ても大丈夫ですか
- 多分いけると思います
またDockerを使ってるそうですが、せっかく借りている高性能サーバーの有効活用が理由で、負荷対策とは関係ないとのことでした。それでもやっぱり時代はDockerなのか。
その他感想
こういうイベント参加はほぼ初めてでした。まとめてみるとその場では思いつかなかった質問してほうが良かったことがたくさんありますね・・・。
コメント