Yoshiharu Mori
y-mor****@sraos*****
2011年 9月 18日 (日) 16:28:44 JST
盛です。 > 突然ですが、PostgreSQL 9.1 (まだbeta) の同期レプリケーションに対応した > リソースエージェント(RA)を書いてみました。 9.1リリース版で利用してみました。 そのままでは動かなかったので、以下の修正を行ってから動作を確認しております。 (SQLの結果を大文字にしただけ) -1486 CHECK_REPLICATION_STATE_SQL="select application_name,state,sync_state from pg_stat_replication" +1468 CHECK_REPLICATION_STATE_SQL="select application_name, upper(state),upper(sync_state) from pg_stat_replication" > ・ Primary故障時、Hot Standby の Primary への昇格 (Masterのフェイルオーバ) Masterのフェイルオーバを確認しました。 crmよりdemote&promoteを行うことで、手動でPostgreSQLのPrimary と Hot Standby の切り替えもできました。 また、Hot Standby側のDBが停止したときには、DBを立ち上げ直してくれました。 ただPrimary側のDBを落とすと、フェイルオーバが発生し、旧Primary側は Hot Standbyとして立ち上がりました。(migration_threthold=3で実験) こちらはそういう仕様ですか? (Primary側のDBだけを立ち上げ直すことはしませんか??) > ・ DBデータの新旧の管理・判別 xlogの進捗を互いのノードで確認しているようですね。 これで安全に運用できます。 > ・ 同期レプリケーション・非同期レプリケーションの自動切替 こちらの機能はすごいですね。 PostgreSQL 9.1の同期レプリケーションでは、Hot Standby側が落ちると PRIMARY側のPostgreSQLの設定を書き直してリロードを行わないと、 書き込みトランザクションがブロックされてしまうので、運用がやや大変ですが、 このRAはそこまで面倒を見てくれますね。 #このRAなしに9.1の同期レプリケーションを使いこなすことは難しそう・・ また、Hot Standby側のDB復帰時もキャッチアップするまで状態を監視していますね。 > ・ Readの負荷分散 (RAの機能ではないですが、仮想IPと連携させてあげることで可能!?) こちらは先日リリースしたばかりのpgpool-II 3.1と相性が良さそうです。 レプリケーションはpacemaker側で面倒を見てくれるので、pgpool-IIはクエリの振り分け をするだけですみます。 pgpool-II 3.1では障害があったDBノードをpgpoolから切りはなさず、フェイルオーバも 発生させない仕組み(DISALLOW_TO_FAILOVER)が使えるので、この機能とPacemakerが 用意してくれる書き込み用の仮想IPと負荷分散用の仮想IPをpgpool-IIに設定すれば、上手く 負荷分散と障害時の切り替えに連動してくれました。 ただ、pgpoolを利用する場合では、スレーブが落ちている時に参照用の仮想IPがなくなってしまうと 困るので、一時的に参照用の仮想IPをマスタ側につける設定にするなどの工夫をする必要はあります。 (以下のように強引に設定したら連動してくれました) location rsc_location-1 vip-slave \ rule $id="rsc_location-1-rule" 100: pgsql-status eq PRI \ rule $id="rsc_location-1-rule-1" 200: pgsql-status eq HS:sync \ rule $id="rsc_location-1-rule-2" -inf: pgsql-status eq STOP 次は、同期レプリケーション2台+非同期レプリケーション1台で試してみます。 以上です。 > 松尾です。 > > 突然ですが、PostgreSQL 9.1 (まだbeta) の同期レプリケーションに対応した > リソースエージェント(RA)を書いてみました。 > > https://github.com/t-matsuo/resource-agents/blob/pgsql91/heartbeat/pgsql > > 主な機能は、 > > ・ Primary故障時、Hot Standby の Primary への昇格 (Masterのフェイルオーバ) > ・ DBデータの新旧の管理・判別 > ・ 同期レプリケーション・非同期レプリケーションの自動切替 > ・ Readの負荷分散 (RAの機能ではないですが、仮想IPと連携させてあげることで可能!?) > > といったところです。 > なお、PostgreSQL 9.1 のインタフェースを前提に作っているので、9.0では動きません。 > > RAは本家コミュニティから提供されているPostgreSQL用RA (pgsql) をベース作っており、 > PostgreSQL 9.1 の正式リリース日 (9月ぐらい?) を目標に本家コミュニティに提案して > みたいと思っています。 > > 簡単に概要や使い方を以下に記述していますので、ご興味がある方や、 > PacemakerやPostgreSQLのレプリケーションを使ってみたことがある方は、 > 是非試してみて頂けませんか。 > > https://github.com/t-matsuo/resource-agents/wiki/PostgreSQL-9.1-ストリーミングレプリケーション対応-リソースエージェント > > まだ、とりあえず動く段階のもので、細かな検討漏れ、バグが多数あると思いますが、 > コメントや動作・バグ報告、パッチ等頂けると助かります。 > 使い方がわからない場合も、本ML宛へお願いします。 > > > ※もうす夏休み時期のため、返信が遅くなるのはご了承ください・・・ > > 以上よろしくお願い致します。 > _______________________________________________ > Linux-ha-japan mailing list > Linux****@lists***** > http://lists.sourceforge.jp/mailman/listinfo/linux-ha-japan -- Yoshiharu Mori <y-mor****@sraos*****> SRA OSS, Inc Japan http://www.sraoss.co.jp TEL: 03-5979-2701 FAX: 03-5979-2702