質問: nginxを使って、リバースプロキシをして2つのWebサーバーをサブドメインでわけたいと考えています。 この場合データベースはどのように扱えばいいのでしょうか。ちなみに全て1つの物理サーバー内で構築しようと考えています。 例えばこの場合データベースのインスタンス(MySQL等)を1つのポートで1台たちあげると、そのインスタンスを利用できるのは1つのWebサーバーのみとなってしまうと考えられます。 この解決方法として幾つか考えましたがどれがベストなのかわかりません。 1データベースインスタンスを2台立ち上げ、データの保管場所を同じにしてWebサーバごとに1台ずつアクセスする。 21台のサーバではそもそもデータベースを共有できないので別のデータベースを使わなければならない。 3データベースごとに物理サーバをたてて、スイッチで接続する。 できれば1台のサーバないでできる方法を教えていただきたいです。また、リバースプロキシのベスト・プラクティスや構築パターンなどありましたら教えていただければ幸いです。
回答: > > 例えばこの場合データベースのインスタンス(MySQL等)を1つのポートで1台たちあげると、そのインスタンスを利用できるのは1つのWebサーバーのみとなってしまうと考えられます。 > > > これがおかしいです。RDBMS(に限らずほとんどのネットワーク越しに利用なサーバソフトウェア)は単一のポートで複数の接続を提供できます。Webサーバが80/tcpで多数のコネクションを同時に提供できるのが良い例です。 なので、何も難しいことは無く、 ・DBサーバ一台 ・Web/APサーバ 2 台 (DBの接続先指定はすべて同じ) ・リバースプロキシ1台 ``` +--Web/APサーバ--+ --リーバースプロキシ--+ +--DBサーバ +--Web/APサーバ--+ ``` でよいでしょう。 リバースプロキシ、Web、AP、DBの各サーバを多段で構成する場合の考え方は、一概に言えるものでは無くシステム構成や各要素にどれぐらいの負荷がかかるか、どのぐらいのリソースが提供できるか、耐障害性をどのぐらい確保しなければならないかによって大きく変わります。どうやって実現するのかまで含めるとすくなくとも雑誌記事一本レベルのボリュームになるので、ここで聞くには向かない質問です。書籍等で勉強されることをお勧めします。