ソーシャルゲームのサーバーを構築してみた1(サーバーの構築案)
大規模サービスのサーバー周りの知識を身につけるため、
自分で負荷分散のことも考えたソーシャルゲームのサーバー設計を構築してみることにしました。
以下のようなかんじで作ります。
(私はソーシャルゲーム新規立ち上げ開発から関わったことはありますが、サーバーは用意されていたし、その時はまだサーバー構成に興味がなかったので、うっすら覚えている程度です。)
Client
|
LoadBlancer(Nginx)
| | |
WebServer1 WebServer2 WebServer3
| |
DB_Master スレーブDB用のLoadBlancer(Nginx)
| | |
DB_Slave1 DB_Slave2 DB_Slave3
クライアント(アプリやブラウザ)からリクエストが飛んできて、
それを負荷分散させるためにロードバランサ(最近流行り?のNginxを使う)で3台のWebサーバーに振り分ける。
DBはマスタDBとスレーブDBのレプリケーション設定にする。
複数台のスレーブDBへのリクエストを振り分けるようのロードバランサも間に挟む。
DBの垂直分割としてログ関連のマスタDBはDB_Masterの並列にもう1台あってもいいかも。
今風のソシャゲのサーバー構成はこんなかんじだろうか。
これでユーザー数が増えてさらに負荷が大きくなっても、WebサーバーとスレーブDBを並列に追加して対応する想定です。
Webサーバーは全部ApacheではなくNginxで動かします。NginxだけだとPHPが動かないのでPHP-FPMも入れます。
でもロードバランサってこんなにも必要なのかな。。。。
あとは実際の現場だとキャッシュ用のサーバーやバッチ用のサーバーもあります。
とりあえず、全部でサーバーが9台必要です。笑
格安のVPSを探したらServersmanってとこがサーバー1台が月500円なので、
そこで契約してみることにします!
次回から1台ずつ構築していく様子を書いていきます。