- ベストアンサー
web2台+DB2台のwebシステム開発
- web1、web2、db1、db2を使用したwebシステムを開発し勉強したいと思っています。
- web1-DB1とweb2-DB2の構成で考えており、apacheまたはIISでwebを構築し、mysqlまたはposgreでDBを構築する予定です。
- 質問1では、apache1、apache2から両方のDB1、DB2に接続する構成を取るのが普通なのかを知りたいです。また、質問2では、良い参考書などがあれば教えていただきたいです。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
>apache1、apache2からは、両方のDB1、DB2に接続する構成を取るのが普通でしょうか? それは何とも言えませんね... どちらのapacheからもDBへのアップデートがあり、かつどちらのDBも同じデータを持っていなければならない、かつどちらのDBが落ちてもサービス継続が必須であるなら、MyClusterなどの製品が必要になるかもしれません。 要は、 ・冗長化の要件(耐障害性の度合い) ・DBの使い方(アップデートがあるのか、参照だけなのか) ・apacheやDBはどのように冗長化するのか(ロードバランサを使うのか、そもそも各サーバで違う機能なのかなど) によって設計が全く異なってきます。 ちなみにうちでやる場合、MyClusterを使っているのもありますが、そこまで予算がない案件の方が多いので ・DBは片方をマスタ、もう一方をスレーブとしてレプリケーション構成にする ・アップデートはマスタに対してのみ行う ・参照は両方のDBを使う ・マスタDBが落ちたら手動でスレーブDBをマスタに変更してサービス復旧する ような場合が多いです。 参照に関しては、DBへのアクセスを監視するスクリプトをwebサーバで動かして障害を検知したら/etc/hosts を書き換えれば(アプリ的にはホストネームでDBにアクセスさせておく)落ちたDBサーバへはアクセスしないようにもできますし、dnsラウンドロビンで負荷分散的なこともできると思います(同様に監視スクリプトにゾーンファイルを書き換えてリロードさせるとか)。
その他の回答 (1)
- SherlockHolmes2
- ベストアンサー率40% (175/429)
一般的には、WEBサーバが複数あっても、DBが1つの場合が多いです。 理由は、DBが複数あると、データの整合性を保つのがめんどくさいから。 DBサーバを複数用意する場合もありますが、その場合は、あくまでバックアップ用であって、WEBサーバから直接参照されるのは1台(もう少し厳密に書くとすると1インスタンス)です。 ちなみに、WEBサーバを分ける(負荷を分散させる)場合、WEBサーバに来る前段でロードバランサ(負荷分散装置)と呼ばれる機器を入れたりします。
お礼
やはりDB1つですよね。 1つで構成するなら DNSラウンドロビンで何とかなりそうです。 さすがに負荷分散装置は、お金がかかるので…。 情報ありがとうございます。
お礼
やはり、片方はレプリケーション用のバックアップですか。 さすがに、負荷分散装置は高いので、DNSラウンドロビンでしてみようと思います。 情報ありがとうございます。