アプリ版:「スタンプのみでお礼する」機能のリリースについて

web1、web2、db1、db2を使用したwebシステムを開発し勉強したいと思っております。
下記構成で考えています。

<構成>
web1-DB1
|      |
web2-DB2

webは、apacheで考えています。最悪IISでも構いません。
DBは、mysqlかposgreで考えています。最悪SQLServerやOracleでも構いません。

<質問1>
web1-DB1
web2-DB2

で接続する構成を考えているのですが、
apache1、apache2からは、両方のDB1、DB2に接続する構成を取るのが普通でしょうか?

<質問2>
何か良い参考書等はありませんでしょうか。


ご教授お願いします。

A 回答 (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ラウンドロビンで負荷分散的なこともできると思います(同様に監視スクリプトにゾーンファイルを書き換えてリロードさせるとか)。
    • good
    • 0
この回答へのお礼

やはり、片方はレプリケーション用のバックアップですか。
さすがに、負荷分散装置は高いので、DNSラウンドロビンでしてみようと思います。

情報ありがとうございます。

お礼日時:2012/10/22 19:13

一般的には、WEBサーバが複数あっても、DBが1つの場合が多いです。



理由は、DBが複数あると、データの整合性を保つのがめんどくさいから。

DBサーバを複数用意する場合もありますが、その場合は、あくまでバックアップ用であって、WEBサーバから直接参照されるのは1台(もう少し厳密に書くとすると1インスタンス)です。

ちなみに、WEBサーバを分ける(負荷を分散させる)場合、WEBサーバに来る前段でロードバランサ(負荷分散装置)と呼ばれる機器を入れたりします。
    • good
    • 0
この回答へのお礼

やはりDB1つですよね。

1つで構成するなら
DNSラウンドロビンで何とかなりそうです。

さすがに負荷分散装置は、お金がかかるので…。

情報ありがとうございます。

お礼日時:2012/10/22 19:14

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!