ゲームインフラとGoogle Cloud Platformと酒!

Preview:

Citation preview

GCE事例とgrasysの仕組み紹介

会社紹介社名 株式会社grasys

設立 2014年11月13日

代表 長谷川祐介

事業内容 MSPシステム設計・構築・運用保守

2015年1月になりました!

自己紹介氏名 長谷川 祐介

経歴

GMO, Yahoo Japan, Squere Enix etc… 2010年にgms(gloopsの前身)へ入社インフラ面のすべての設計

開発部部長として開発部組織化、エンジニアの採用執行役員、プリンシパルインフラストラクチャーアーキテクト

職種 いわゆるインフラエンジニアGCP歴 GCE初期の頃からその他 azure, awsも触っています。

publish

Fusion-IOを2011年に本番導入しFusion-IO社に取り上げられるSoftwareDesign2012.03記事

2012年DellのCM出演(テレビ東京 ワールドビジネスサテライト)Icinga(nagiosのfork)のユーザーコミュニティに掲載

facebook: yusuke.exzm

GCE事例紹介

Application WebSocket

HTTP Load Balancer

Cloud Storage

BigQueryPercona XtraDB ClusterRedisUserData Shard

RedisWebSocket HealthyList

MonitorOperation

Static IP Static IP Static IP

CNAME asset.xxx.com

Cloud Storage

backup

KPI Data

Cloud MonitoringCloud Logging

2014年前半頃に構成したものに現状のアレンジを加えており当時の構成とは異なっています。

Application

nginx

gunicorndjango

haproxy maxscale

consul

serf

fluentd

redis XtraDBXtraDBXtraDBredis

bigquery

各種Instance情報

influxdbへのmetrics送信各種監視Statusなど

HTTP Load Balancer

WebSocket

nginx

gunicorndjango

haproxy maxscale

consul

serf

fluentd

redis XtraDBXtraDBXtraDBredis

bigquery

各種Instance情報

influxdbへのmetrics送信各種監視Statusなど

redis

HTTP Load Balancer

ApplicationとWebSocketの連携

redis

consul

HTTP API- nginx- DNS- supervisord- haproxy- maxscale- connections上記statusがすべてOKのInstanceをRedisのListとして保存

Network Load Balancer

rabbitmq cluster percona xtradb cluster

applicationold api operation monitor

BigQuery

Cloud DNS Network Load Balancer

applicationnew api

redis

image cache

jobqueueworker

applicationcustomer api

key data temporary dataasset

Network Load Balancer Network Load Balancer

現在準備中

applicationsub system

ha-mode

Cloud Storage

Network Load Balancer

master node client node data node

kibana

elasticsearchelasticsearchelasticsearch elasticsearch elasticsearch

fluentd fluentd

elasticsearch

fluentd

elasticsearch

fluentd

elasticsearch

fluentd

Static IP

1日特に多い日で150GBちょっと多めの日で40GB

普通は6~8GB

Photonもやってたりします・・・実際の台数とかは言えませんが!w

すいませんが言えません・・・

• 某社様とコンソールゲームとか

• 某社様とスマートフォン向け期待のタイトル

• 某社様とIPのスマートフォン向けゲームとか

• 現在某社様とめっちゃ設計中だったりとか

ゲーム業界のみなさまへ• オンプレミスからのGCP移行についての注意点などはいくつかありますが、ぶっちゃけここじゃ話し切れないのでご相談ください。

• むしろ常時接続とか

• バックエンドどうするのとか

• データ通信のストリームバッファ使いたいとか

• グローバルバランシングと常時接続のハンドリングとか

grasys architecture

まずは・・・ うちがよく使ってるみなさん

provisioningconfigration

各種Middleware setup etc…環境変数/PATH/LD自動設定

configration各種Middleware自動設定

fluentd, haproxy, etc…

clustering serf/consul自動設定

operationperlのcinnamonでできているオーケストレーションツール

bootstrapmonitoring

init制御: glaunchermonitoring: gmonitor

grasys UtilitiesUtilities envutils

cfgutils

clutils

clctl

gutils

consul

• cluster情報

• 監視(自社開発のgolang製の仕組み)の発行

• 簡易的なオーケストレーションツールとして

serf

• perl cinnamon(オーケストレーションツール)のrole情報のソース

• 将来的に廃止予定

terraform• Instance生成

• Disk Attach

• Firewall設定

• Load Balancer生成

• etc..

rerun• Bash Command Line Framework

• rerun [modules]: [commands]

• コマンドの体系化が行えて非常に便利!

• gcloudでsnapshotとってdiskつくってimage生成とかめんどくさくて覚えてられない

• InstanceのMachine-SizeとかのResizeとかばばっとやりたい

• elasticsearchのclusterstatusとかnodesとかcurlでいちいち覚えてられない

• コマンド長いものでよく使うものなどを登録して便利に実行してます。

• 一度やったことはもうやらない!w

envutils• 環境構成ツール

• bashrc自動生成(PATH, MANPATH, PKG_CONFIG_DIRとか

• ldconfig(追加したLDのconfig自動生成と追加

• /usr/local/etc(git管理)と/etc配下の自動symlink

• ntpd設定からchronydのconfig自動生成

• rerunのmodule directoryも含んでいてgitで管理

clutils

• consul/serfの自動設定

• Instanceの起動シーケンスで自動設定して起動してくるようにするためのツール

• gitで管理

clctl• オーケストレーションツール

• 母体はperlのcinnamon

• cinnamon [role] [task]

• gitで管理

• serfのクラスタ情報からオーケストレーションのRoleを自動生成

• 将来的にはconsulのwrapperなどに移行してserf依存を減らしていく方針で廃止していく予定

gmonitor• golangで開発している監視プログラム

• gmonitor [subcommand]

• リソース監視、通信、ミドルウェアのステータス取得

• consulにキックされる形で起動

• consulの監視InterfaceはNagiosPluginと同じ

• InfluxDBへ直接データを書き込む(徐々にStackDriverのCustomMetricsも追加されつつある

• サブコマンドが多くなりすぎてきていて困ってるww(でも気にしない!

influxdb / grafana

• 時系列データベースとそのフロントエンド

• 各種監視データを入れグラフサンプリング

• これはリソース用のダッシュボード

• 各種ミドルウェア用のものもあります。

• 単一ホスト、サーバ種別毎に絞ることもできるようにしています。

strecherのGCS版• 名前つけてない・・・

• 通常では対応できないレベルのクラスタ向け

• Google Cloud Storageを利用した大規模向けデプロイツール

• 200 instancesくらいに対して配布対象に対して配布するサイズにもよりますが2秒程度で完了します。

Backup Framework• 毎回shellscriptなどで作るのがめんどいのでframewaork化を進めています。

• golang製のCLI Framework

• MySQL/MongoDB

• Google Cloud Storage Standard/NearlineのBulk/Archiveの振り替えなどに対応予定

grasysではご紹介したようにたくさんのインフラ向けのツールを開発しています。

MSP事業者として インスタンス追加とか管理といった単純な作業ではなく一緒に負荷対策を検討したり必要あれば構成変更も打診しています。

開発者の方と一緒に運用していく形をかなり重視しています。

ご興味あればお気軽にご連絡ください!

ご清聴ありがとうございました。

ご質問ありましたらお気軽にどうぞ!

Facebookの友達申請もお気軽にどうぞ!

長谷川 祐介facebook: yusuke.exzm

Recommended