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

ロリポップ! for Gamersを支えるインフラ/lolipop for gamers in...

Takuma Kume
September 09, 2024

ロリポップ! for Gamersを支えるインフラ/lolipop for gamers infrastructure

Takuma Kume

September 09, 2024
Tweet

More Decks by Takuma Kume

Other Decks in Technology

Transcript

  1. 2 自己紹介 ホスティング事業部 エンジニアリングリード 久米拓馬 @takumakume • 福岡在住 • ペパボでの職歴 ◦

    インフラ: 3年 ◦ バックエンド: 2年 ◦ SRE: 2年 ◦ エンジニアリングリード: 5月〜 • 釣り・珈琲豆焙煎・ウイスキー買い漁り
  2. 9 ロリポップ! for Gamersのインフラ 全体像 Frontend Backend (Go) コントロールパネル オンプレミスデータセンター

    Baremetal #1 (Ubuntu/LXD) Baremetal #n (Ubuntu/LXD) LXD Cluster VM #1 VM #2 VM #n ゲームサーバ Ceph Cluster
  3. 11 • canonical/lxd を採用 • VM、コンテナのオーケストレーター • サーバの効率的な運用のためにオーケストレーションツールは必須 • なぜ

    LXD か? • コントロールプレーンの導入が比較的楽である • VMとコンテナの両方を標準でサポートしている ロリポップ! for Gamersのインフラ
  4. 15 主な機能の実装 サーバのプロビジョニングやサーバ内の設定変更は LXD APIで実装 Backend API LXD Cluster API

    LXD Agent ファイル、プロセス コントロールパネル VM ゲームサーバ ゲストOS内の操作は LXD Agent経由
  5. 21 イメージ管理 なぜ Ansible ? • 社内的にAnsibleを活用していた • イメージ作成だけでなく、提供済みのユーザ向けのインスタンスへプロビジョニングをし たかった

    • 例えば、セキュリティアップデートやゲームのバージョンの追加 • distrobuilderはイメージを作るためのものであり、既存のインスタンスをプロビジョニングする ツールではない • Ansibleであればユーザ向けのインスタンスにプロビジョニングできる
  6. 23 複数LXDクラスタの管理 • なぜ複数のLXDクラスタが必要になったか • 内部的な話として、ネットワークやベアメタルサーバの構成の都合 • どのような課題があるか • 前提としてLXDクラスタ同士でいい感じに連携してくれることはない

    • コントロールパネルのバックエンドアプリケーションがどの LXDクラスタにどのサーバが入ってい るかを判断する必要が出てきた • どこに新しくゲームサーバを作ればいいか判断する必要がある • LXDクラスタの増減をバックエンドアプリケーションが意識しなければならない • ホスト、認証情報等
  7. 33 Frontend Backend (Go) コントロールパネル オンプレミスデータセンター Baremetal #1 (Ubuntu/LXD) Baremetal

    #n (Ubuntu/LXD) LXD Cluster VM #1 VM #2 VM #n ゲームサーバ Ceph Cluster VPSベースのサービスとして始めたため VMで提供している
  8. 37 コンテナ化について lxd 3301024 11.5 0.2 18760708 1170160 ? Sl

    16:14 7:16 /snap/lxd/28373/bin/qemu-system-x86_64 -S -name ubuntu-jammy-vm -uuid 63868117-4c51-46c5-be46-a438ffebe40e -daemonize -cpu host -nographic -serial chardev:console -nodefaults -no-user-config -sandbox on,obsolete=deny,elevateprivileges=allow,spawn=allow,resourcecontrol=deny -readconfig /var/snap/lxd/common/lxd/logs/ubuntu-jammy-vm/qemu.conf -spice unix=on,disable-ticketing=on,addr=/var/snap/lxd/common/lxd/logs/ubuntu-jammy-vm/qemu.spice -pidfile /var/snap/lxd/common/lxd/logs/ubuntu-jammy-vm/qemu.pid -D /var/snap/lxd/common/lxd/logs/ubuntu-jammy-vm/qemu.log -smbios type=2,manufacturer=Canonical Ltd.,product=LXD -runas lxd RSSは約1.1GB quemでVMのプロセスが作られている 素のUbuntuのVMを起動したときのメモリ消費量
  9. 38 root 1010234 0.0 0.0 1655816 15772 ... [lxc monitor]

    /var/snap/lxd/common/lxd/containers ubuntu-jammy-container 1065536 1010244 0.0 0.0 101688 12392 ... \_ /sbin/init 1065536 1010359 0.0 0.0 31344 13752 ... \_ /lib/systemd/systemd-journald 1065536 1010406 0.0 0.0 11100 5760 ... \_ /lib/systemd/systemd-udevd : : : : 1065536 1010562 0.0 0.0 110104 21200 ... \_ /usr/bin/python3 /usr/share/unattended-upgrades/unattended-upgrade-shutdown --wait-for-signal 1065536 1010568 0.0 0.0 15432 8868 ... \_ sshd: /usr/sbin/sshd -D [listener] 0 of 10-100 startups 1065636 1011555 0.0 0.0 16128 6540 ... \_ /lib/systemd/systemd-networkd 素のUbuntuのシステムコンテナを起動したときのメモリ消費量 コンテナを構成するプロセス全体 RSSを合計すると約113MB コンテナ化について