Upgrade to Pro — share decks privately, control downloads, hide ads and more …

リアルタイム通信基盤とKubernetes/ColoplTech-03-02

 リアルタイム通信基盤とKubernetes/ColoplTech-03-02

※資料内の参照リンクを選択し閲覧する場合は、ダウンロードをお願いいたします

\積極的に技術発信を行なっております/
▽ Twitter/COLOPL_Tech
https://twitter.com/colopl_tech

▽ connpassページ
http://colopl.connpass.com

▽ COLOPL Tech Blog
http://blog.colopl.dev

E704514df1d69d511c4c74771a40c8f5?s=128

COLOPL Inc.

March 17, 2022
Tweet

More Decks by COLOPL Inc.

Other Decks in Technology

Transcript

  1. COLOPL, Inc. All Rights Reserved 1 リアルタイム通信基盤と
 Kubernetes
 杉浦 綜介

  2. COLOPL, Inc. All Rights Reserved 2 • 杉浦 綜介
 •

    株式会社コロプラ 2017年新卒入社
 • インフラグループ
 ◦ Kubernetes のゲームインフラ
 自己紹介

  3. COLOPL, Inc. All Rights Reserved 3 ゲームにおけるリアルタイム通信


  4. COLOPL, Inc. All Rights Reserved 4 • プレイ中、クライアントが割当先のサーバに常時接続されている
 • ステートフル


    ◦ サーバの使用状況
 • ライフサイクルが短い
 ◦ データベースやキーバリューストアに比べ
 • 急激な負荷
 ◦ イベント開始時など
 ゲームのリアルタイム通信

  5. COLOPL, Inc. All Rights Reserved 5 • O などでメンテナンスされている
 •

    オートスケール
 • 接続サーバの IP/Port 管理の自動化
 コロプラでの要件

  6. COLOPL, Inc. All Rights Reserved 6 Agones

  7. COLOPL, Inc. All Rights Reserved 7 • Kubernetes 上で、専用ゲームサーバを動かすプラットフォーム
 •

    O 
 • Kubernetes の標準リソース(Pod や Deployment など)に近いカスタムリソース 群
 • リアルタイム通信で必要な最低限の機能
 ◦ ゲームサーバの作成、オートスケール
 ◦ マッチメイキングの仕組みは無い
 Agones

  8. COLOPL, Inc. All Rights Reserved 8 • Kubernetes
 ◦ すでに

    Kubernetes を採用しており、Kubernetes 上で動作するのは都合が良 かった 
 • O でメンテナンスされている
 ◦ 内製ソフトウェアのメンテナンス負担の軽減
 • 必要最小限の機能
 ◦ オートスケールと IP/port の管理が必要条件だった
 • シンプルなコンポーネント
 ◦ 学習、導入コストが低い
 Agones 採用理由

  9. COLOPL, Inc. All Rights Reserved 9 • Game erver
 ◦

    Pod(に近い)
 • Fleet
 ◦ Deployment(に近い)
 • Fleet Autoscaler
 ◦ Horizontal Pod Autoscaler(に近い)
 • Game erver Allocation
 ◦ フロントエンドAPIを提供
 Agones 主要コンポーネント

  10. COLOPL, Inc. All Rights Reserved 10 • Game erver
 ◦

    クライアントが接続するサーバ
 ◦ Pod(に近い)
 ◦ ステートを持つ
 ▪ Creating (立ち上げ中)
 ▪ eady (準備完了)
 ▪ Allocated (割当済み)
 ◦ 1Gameserver = 1 oom
 ◦ 使い終わったら、廃棄
 Agones コンポーネント

  11. COLOPL, Inc. All Rights Reserved 11 • Fleet
 ◦ Deployment(に近い)


    ◦ 複数の Game erver を管理
 • Fleet Autoscaler
 ◦ Horizontal Pod Autoscale(に近い)
 ◦ eady な Game erver を一定数に保つように調整
 ▪ ype: Bufferの時
 Agones コンポーネント 
 Ready が不足しているので、 gameserverを増やす
  12. COLOPL, Inc. All Rights Reserved 12 • Game erverAllocation
 ◦

    API Aggregation で機能実装されている
 ◦ Game erver を割り当てるリソース
 ◦ このAPIを使い、Allocator を実装することが多い
 Agones コンポーネント

  13. COLOPL, Inc. All Rights Reserved 13 • 1Gameserver(Pod) = 1

    oom の制限
 ◦ 物理演算を利用しない軽量なリアルタイム通信がほとんど
 ◦ Gameserver(Pod) の数が多くなる
 • Node あたりの Pod の上限がある
 ◦ CID 範囲 によって上限が変わる (/24 で 110 pod)
 • 小さい Node を複数
 ◦ Daemonset により Gameserver に割り当てられる領域の減少
 カスタム Allocator 

  14. COLOPL, Inc. All Rights Reserved 14 • コロプラで Allocator を独自実装


    • 1Gameserver に複数の oom を割り当て • Allocator が Gameserver を確保して、使い回す
 ◦ oom 割当設定数になるまで、同じ接続先を利用する 
 カスタム Allocator

  15. COLOPL, Inc. All Rights Reserved 15 • Buffer機能
 ◦ 事前に準備された

    Gameserver があるため、突然の負荷にも耐えられる
 • オートスケール機能
 ◦ Gameserver の Buffer が減っても、一定数に保つ機能があるため、細かい台数調 整が不要
 • 機能拡張が容易
 ◦ 拡張性が高く、不足している機能の追加が可能
 ここが良かったよ Agones

  16. COLOPL, Inc. All Rights Reserved 16 • マルチクラスター構成が可能
 ◦ 複数クラスターの

    Allocator の前段に Load Balancer を置く
 ▪ Load Balancer は自前で用意する
 ここが良かったよ Agones

  17. COLOPL, Inc. All Rights Reserved 17 • ルームが解散しない限り、Gameserver が残り続ける
 ◦

    複数ルームが前提のリソース割当に無駄が生じる
 ◦ Allocator の台数を減らした時に確保していた Gameserver が無駄になる
 • Fleet Autoscaler によるスケールが間に合わない
 ◦ プレイヤーの流入速度が早いと、 Buffer が枯渇する可能性がある
 ◦ Node が枯渇すると、 Node が増えるまで時間がかかる
 ◦ Buffer のアクセス数の急上昇と平常時のアクセス数の兼ね合い
 ◦ (対策) リトライや複数クラスター構成
 課題

  18. COLOPL, Inc. All Rights Reserved 18 • コロプラはリアルタイム通信基盤に Agones を採用


    ◦ 最低限ながらも必要な機能
 ◦ シンプルなコンポーネント
 • Agones のカスタマイズ
 ◦ 1Gameserver に複数 oom 割当機能を実装
 • Buffer やオートスケールは便利
 ◦ Gameserver の台数を手動で操作しなくなり、オペレーションが減った
 • 課題もある
 ◦ Gameserver が残る問題、 Buffer の台数調整
 まとめ