[pgsql-jp: 36602] Re: Webサーバ冗長化構成での pgpool の配置
Tatsuo Ishii
ishii @ sraoss.co.jp
2006年 1月 7日 (土) 22:53:00 JST
石井です。
> ・WebServer1
> pgpool -----+---- DBServer1(master)
> |
> +---- DBServer2(secondary)
>
> ・WebServer2
> pgpool -----+---- DBServer1(master)
> |
> +---- DBServer2(secondary)
>
> 上図のようにWebサーバの冗長構成を組んでおり、各Webサーバ上でpgpoolを配置しています。
> Webサーバのローカルでpgpoolを稼動させているのは、UNIXドメインソケット経由でWebサーバ
> から接続させることで高速化させようという狙いです。
>
>
> ◆ ここで問題(疑問)なのですが、万が一、
>
> Web1 の pgpool で縮退運転が開始 → master up, secondary down の状態
> Web2 の pgpool で縮退運転が開始 → master down, secondary up の状態
>
> といったことが起こり得るため、上図のような構成は不適切なのでしょうか?
理論的には、DBserver1/2の状態がpgpoolその1、その2で違って見えるはずが
ないので、特に問題ないと思います。あるとすれば、ネットワークやスイッチ
の不具合で、
1) pgpoolその1から見るとDBserver1につながらなくなったので、pgpoolその2
はDBserver1を切り離した
2) pgpoolその2から見るとDBserver1も2も健全なので、レプリケーション状態
を維持した
という状況が発生したときくらいですかね。こういう状況にpgpoolだけで対応
するのはなかなかつらいので、ネットワーク経路の二重化とかで対応して欲し
いものだと思いますが...
> ◆ その問題を解消するには、やはりアプリケーション全体で pgpool を1つだけにすべきなのでしょうか?
> その場合、pgpool自体の冗長構成を組むことができないのでしょうか?
> (pgpoolがシングルポイントになってしまう)
pgpoolが single point of failureになります。回避するためには、
heartbeatとかを導入すればできそうな気がしますが、まだ試したことはあり
ません。
> ◆ 同じようなWebServer 2台、DBServer 2台の構成で、最適なシステム構成をご存知の方、実績の
> ある方がいらっしゃいましたら、ぜひアドバイスを頂けないでしょうか?
>
> まだまだPostgreSQL、pgpoolを勉強中であります。
> 何卒、よろしくお願いいたします。
>
>
> ◇ 参考
>
> ・OS(WebServer1,WebServer2,DBServer1,DBServer2)
> Red Hat Enterprise Linux ES release 3
>
> ・PostgreSQL(DBServer1,DBServer2)
> PostgreSQL 8.1
>
> ・pgpool.conf 設定内容(抜粋)(WebServer1,WebServer2)
> replication_mode = true
> replication_strict = true
> load_balance_mode = true
> replication_stop_on_mismatch = true
> insert_lock = true
個人的には、
replication_stop_on_mismatch = false
で運用した方が、ささいなことで縮退しないのでよいと思います。
そのかわりhealth checkを入れてDBサーバの状態を監視するようにした方が良
いのではないでしょうか。health checkがないと、DBにアクセスに行くまで障
害を検知できませんので。
--
Tatsuo Ishii
SRA OSS, Inc. Japan
pgsql-jp メーリングリストの案内