ソーシャルゲームのサーバーを構築してみた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台ずつ構築していく様子を書いていきます。