Update documents for pgpool-HA 1.1.
authorUser tanida <tanida at pgfoundry.org>
Mon, 18 Jun 2007 10:23:38 +0000 (10:23 +0000)
committerUser tanida <tanida at pgfoundry.org>
Mon, 18 Jun 2007 10:23:38 +0000 (10:23 +0000)
- Add for new configuration parameters.
- Add active-active config example.

doc/pgpool-ha.en.txt
doc/pgpool-ha.ja.txt

index 2395edb1c91637076f3e07516dd2dcfa68fdf0a2..90d9d2ec55daabcc3a33e1faad17078c816a391d 100644 (file)
@@ -136,11 +136,45 @@ eration="eq" value="node1"/>
 
 ----- Sample cib.xml end.
 
--pgpool.conf
 
-Put pgpool.conf on pgpool's default config file path (e.g. 
-/usr/local/etc/pgpool.conf). Following entries will be referrenced 
-to  monitor pgpool.
+-----
+
+-----
+-pgpool.conf,pool_hba.conf,pcp.conf
+
+Put pgpool.conf on pgpool's default config file path (e.g.
+/usr/local/etc/pgpool.conf) , or specify following parameter to
+cib.xml.
+
+Config File     ,       Parameter      ,       
+pgpool.conf     ,       pgpoolconf      ,
+pool_hba.conf   ,       hbaconf         ,       pgpool 3.2+ only
+pcp.conf        ,       pcpconf         ,       pgpool-II only
+
+Here is an example how to specify paths of config files.
+--
+ <primitive class="ocf" id="pgpool_2" provider="heartbeat"
+type="pgpool">
+   <operations>
+     <op id="pgpool_2_mon" interval="30s" name="monitor"
+timeout="20s"/>
+   </operations>
+   <instance_attributes id="4e369437-b6ac-4f47-96bd-029f7e4a95fc">
+     <attributes>
+       <nvpair id="pgpool_2_attr_1" name="pgpoolconf"
+                                value="/path/to/pgpool.conf"/>
+       <nvpair id="pgpool_2_attr_2" name="hbaconf"
+                                value="/path/to/pool_hba.conf"/>
+       <nvpair id="pgpool_2_attr_3" name="pcpconf"
+                                value="/path/to/pcp.conf"/>
+       <nvpair id="pgpool_2_attr_4" name="logfile"
+                                        value="/path/to/logfile"/>
+    </attributes>
+   </instance_attributes>
+ </primitive>
+--
+
+Following entries in pgpool.conf will be referrenced to monitor pgpool.
 
 *port
 
@@ -152,15 +186,103 @@ used to connecting user and database. Make sure your PostgreSQL has same
 user/role ,database and pg_hba.conf entry to connect from pgpool host by
 "trust" authentication.
 
+
+
+- Active - Active configuration.
+
+Pgpool-ha 1.1+ supports multiple configuration , so it can support
+active-active style configuration . Here is an exmaple.
+
+    <nodes>
+       <node id="cf40f895-0e3c-4847-b8b3-6ae1fad7921f" uname="node1"
+type="normal"/>
+       <node id="3e919e96-e476-4d3e-be05-0048b9e12a56" uname="node2"
+type="normal"/>
+     </nodes>
+     <resources>
+       <group id="group_1">
+         <primitive class="ocf" id="IPaddr_1" provider="heartbeat"
+type="IPaddr">
+           <operations>
+             <op id="IPaddr_1_mon" interval="5s" name="monitor" timeout="5s"/>
+           </operations>
+           <instance_attributes id="4e369437-b5ac-4f47-96bd-029f7e4a95fc">
+             <attributes>
+               <nvpair id="IPaddr_1_attr_0" name="ip" value="192.168.0.3"/>
+             </attributes>
+           </instance_attributes>
+         </primitive>
+         <primitive class="ocf" id="pgpool_2" provider="heartbeat"
+type="pgpool">
+           <operations>
+             <op id="pgpool_2_mon" interval="30s" name="monitor"
+timeout="20s"/>
+           </operations>
+           <instance_attributes id="4e369437-b6ac-4f47-96bd-029f7e4a95fc">
+            <attributes>
+               <nvpair id="pgpool_2_attr_0" name="pgpoolconf"
+value="/usr/local/pgsql/etc/pgpool-vip1.conf"/>
+               <nvpair id="pgpool_2_attr_1" name="hbaconf"
+value="/usr/local/pgsql/etc/pool_hba.conf"/>
+             </attributes>
+           </instance_attributes>
+         </primitive>
+       </group>
+       <group id="group_2">
+         <primitive class="ocf" id="IPaddr_3" provider="heartbeat"
+type="IPaddr">
+           <operations>
+             <op id="IPaddr_3_mon" interval="5s" name="monitor" timeout="5s"/>
+           </operations>
+           <instance_attributes id="5e369437-b5ac-4f47-96bd-029f7e4a95fc">
+             <attributes>
+               <nvpair id="IPaddr_3_attr_0" name="ip" value="192.168.0.4"/>
+             </attributes>
+           </instance_attributes>
+         </primitive>
+         <primitive class="ocf" id="pgpool_4" provider="heartbeat"
+type="pgpool">
+           <operations>
+             <op id="pgpool_4_mon" interval="30s" name="monitor"
+timeout="20s"/>
+           </operations>
+           <instance_attributes id="5e369437-b6ac-4f47-96bd-029f7e4a95fc">
+             <attributes>
+               <nvpair id="pgpool_4_attr_0" name="pgpoolconf"
+value="/usr/local/pgsql/etc/pgpool-vip2.conf"/>
+               <nvpair id="pgpool_4_attr_1" name="hbaconf"
+value="/usr/local/pgsql/etc/etc/pool_hba.conf"/>
+             </attributes>
+           </instance_attributes>
+         </primitive>
+       </group>
+     </resources>
+     <constraints>
+       <rsc_location id="rsc_location_group_1" rsc="group_1">
+         <rule id="prefered_location_group_1" score="100">
+           <expression attribute="#uname" id="prefered_location_group_1_expr"
+         </rule>
+       </rsc_location>
+       <rsc_location id="rsc_location_group_2" rsc="group_2">
+         <rule id="prefered_location_group_2" score="100">
+           <expression attribute="#uname" id="prefered_location_group_2_expr"
+operation="eq" value="node2"/>
+         </rule>
+       </rsc_location>
+     </constraints>
+
+
 4. Restriction
 
-* PostgreSQL is never conrolled. You must start/stop manually.
+* Pgpool-ha don't control PostgreSQL. You have to start/stop it manually.
 * In pgpool-ha, pgpool is monitored , but PostgreSQL is not . If your
   pgpool becomes something wrong but can accept SQL , pgpool-ha can't handle.
 * If pgpool work but PostgreSQL is not avaliable , pgpool will failover.
+* Pgpool-II is monitored by psql. Monitoring with pcp command is not
+  supported yet. 
 
 5. Licences
 
-BSD-like. see ../COPYING file. 
+See ../COPYING file. 
 
 
index 3ddb3868b7ab797e5a097a251aff095d2bbfebb4..e45d3d9b67ccd361769fe186ac3f3abeb4f27d06 100644 (file)
@@ -30,16 +30,15 @@ Heartbeat 2.0以降にはCRM(Cluster Resource Manager)を使うことでサー
 インストールされている必要があります。
 
 -PostgreSQL(http://www.postgresql.org/) のクライアント
-psqlのみを必要とします。インストール時に環境変数PATHで参照可能な位置に配置してください。
-
-
+psqlのみを必要とします。インストール時に環境変数PATHで参照可能な位置に配置してく
+ださい。
 
 -perl(http://www.perl.com/)
 perl 5以上とGetOpt::Longを必要とします。
 -pgpool(http://pgpool.projects.postgresql.org/)
-インストール時に環境変数PATHで参照可能な位置に配置してください。現段階では設定ファイルの位置は指定できないため、インストール時のデフォルト位置に配置してください。
+インストール時に環境変数PATHで参照可能な位置に配置してください。設定ファイルにつ
+いては指定しない場合インストール時のデフォルト位置になります。
 
-なお、実行に当たってはpgpool.confの以下のパラメーターを利用するため、適切な
 
 -heartbeat 2.0以降(http://www.linux-ha.org/)
 
@@ -47,12 +46,15 @@ perl 5以上とGetOpt::Longを必要とします。
 
 -PostgreSQL 
 
-接続監視する関係上、pgpoolが接続する先としてのPostgreSQLサーバーが必要になります。これには、以下の条件があります。
---pgpoolが稼働しているサーバーから指定データベースへの指定ユーザーからの接続に対するtrust認証が許されていること。この時指定データベースとユーザー名は
+接続監視する関係上、pgpoolが接続する先としてのPostgreSQLサーバーが必要になります。
+これには、以下の条件があります。
 
--pgpool.confのhealth_check_userが有効な場合、ユーザー名として、また同時にdatabase名としても利用されます。標準のpgpoolの場合、nobodyなロール及びデータベースが必要です。
+--pgpoolが稼働しているサーバーから指定データベースへの指定ユーザーからの接続に対する
+trust認証が許されていること。この時指定データベースとユーザー名は
 
--有効な値がない場合、postgresユーザ/template1データベース
+  -pgpool.confのhealth_check_userが有効な場合、ユーザー名として、また同時にdatabase名としても利用されます。標準のpgpoolの場合、nobodyと言う名称のロール及びデータベースが必要です。
+
+  -有効な値がない場合、postgresユーザ/template1データベースが利用されます。
 
 
 
@@ -139,6 +141,48 @@ cib.xmlはheartbeatでcrmを利用するために必要なファイルで、通
 -IPアドレス
  サンプル中で192.168.0.3と示されているのが仮想IPアドレスです。ここに指定することでpgpoolが稼働中のホストに当該IPアドレスが割り振られます。
 
+-設定ファイルの格納場所(任意)
+  設定ファイルの格納場所がデフォルト以外の場合、instance_attributes項目に以下のキーと、値としてそのファイル名を指定することで設定できます。
+
+ファイル名        ,       指定するキー      ,       備考
+pgpool.conf    ,       pgpoolconf      ,       
+pool_hba.conf  ,       hbaconf         ,       pgpool 3.2以降で有効
+pcp.conf       ,       pcpconf         ,       pgpool-IIでのみ有効
+
+  なお、この設定はpgpool 1.1以降でのみ有効です。
+
+-ログファイルの出力先
+ 設定ファイルの格納場所と同様、ログファイルの出力先を指定することも可能です。logfileをキーに、対応するファイル名を
+値として記述することで指定場所にリダイレクト出力するようになります。なお、ログファイル出力時は-d、デバッグオプションが
+自動的に付与されます。
+
+
+
+
+ 以下に、実際の設定例を示します。ここでは、先の設定ファイルのpgpool設定部分
+のみを記述しますので、随時置き換えてください。
+
+ <primitive class="ocf" id="pgpool_2" provider="heartbeat"
+type="pgpool">
+   <operations>
+     <op id="pgpool_2_mon" interval="30s" name="monitor"
+timeout="20s"/>
+   </operations>
+   <instance_attributes id="4e369437-b6ac-4f47-96bd-029f7e4a95fc">
+     <attributes>
+       <nvpair id="pgpool_2_attr_1" name="pgpoolconf"
+                               value="/path/to/pgpool.conf"/>
+       <nvpair id="pgpool_2_attr_2" name="hbaconf"
+                               value="/path/to/pool_hba.conf"/>
+       <nvpair id="pgpool_2_attr_3" name="pcpconf"
+                               value="/path/to/pcp.conf"/>
+       <nvpair id="pgpool_2_attr_4" name="logfile"
+                                        value="/path/to/logfile"/>
+    </attributes>
+   </instance_attributes>
+ </primitive>
+
+
 
  この記述が終了したらファイルをheartbeatが利用する全てのサーバーに配置します。cib.xmlはサーバー間で全く同じである必要があります。なお、記述の検証にはheartbeatに付属しているcrm_verifyコマンドが使えます。
 
@@ -150,6 +194,86 @@ crm_verify -VX /opt/powergres/hb/var/lib/heartbeat/crm/cib.xml
 
 そのあとheartbeat自体の起動が終了まで数分待ち、psにてpgpoolが起動することを確認することが出来れば完了です。
 
+2.3 active-active 構成について
+
+pgpool-HA
+1.1以降では、複数の設定ファイルが記述できるため、Active-Active構成を取ることが可能になります。
+以下に、/usr/local/pgsql/etc/pgpool-host1.conf と
+/usr/local/pgsql/etc/pgpool-host2.conf で示される構成を、192.168.0.3 と
+192.168.0.4 の2種類のIPで実行する場合の例を示します。
+
+    <nodes>
+       <node id="cf40f895-0e3c-4847-b8b3-6ae1fad7921f" uname="node1" type="normal"/>
+       <node id="3e919e96-e476-4d3e-be05-0048b9e12a56" uname="node2" type="normal"/>
+     </nodes>
+     <resources>
+       <group id="group_1">
+         <primitive class="ocf" id="IPaddr_1" provider="heartbeat" type="IPaddr">
+           <operations>
+             <op id="IPaddr_1_mon" interval="5s" name="monitor" timeout="5s"/>
+           </operations>
+           <instance_attributes id="4e369437-b5ac-4f47-96bd-029f7e4a95fc">
+             <attributes>
+               <nvpair id="IPaddr_1_attr_0" name="ip" value="192.168.0.3"/>
+             </attributes>
+           </instance_attributes>
+         </primitive>
+         <primitive class="ocf" id="pgpool_2" provider="heartbeat"
+type="pgpool">
+           <operations>
+             <op id="pgpool_2_mon" interval="30s" name="monitor"
+timeout="20s"/>
+           </operations>
+           <instance_attributes id="4e369437-b6ac-4f47-96bd-029f7e4a95fc">
+             <attributes>
+               <nvpair id="pgpool_2_attr_0" name="pgpoolconf" value="/usr/local/pgsql/etc/pgpool-vip1.conf"/>
+               <nvpair id="pgpool_2_attr_1" name="hbaconf" value="/usr/local/pgsql/etc/pool_hba.conf"/>
+             </attributes>
+           </instance_attributes>
+         </primitive>
+       </group>
+       <group id="group_2">
+         <primitive class="ocf" id="IPaddr_3" provider="heartbeat" type="IPaddr">
+           <operations>
+             <op id="IPaddr_3_mon" interval="5s" name="monitor" timeout="5s"/>
+           </operations>
+           <instance_attributes id="5e369437-b5ac-4f47-96bd-029f7e4a95fc">
+             <attributes>
+               <nvpair id="IPaddr_3_attr_0" name="ip" value="192.168.0.4"/>
+             </attributes>
+           </instance_attributes>
+         </primitive>
+         <primitive class="ocf" id="pgpool_4" provider="heartbeat"
+type="pgpool">
+           <operations>
+             <op id="pgpool_4_mon" interval="30s" name="monitor"
+timeout="20s"/>
+           </operations>
+           <instance_attributes id="5e369437-b6ac-4f47-96bd-029f7e4a95fc">
+             <attributes>
+               <nvpair id="pgpool_4_attr_0" name="pgpoolconf" value="/usr/local/pgsql/etc/pgpool-vip2.conf"/>
+               <nvpair id="pgpool_4_attr_1" name="hbaconf" value="/usr/local/pgsql/etc/etc/pool_hba.conf"/>
+             </attributes>
+           </instance_attributes>
+         </primitive>
+       </group>
+     </resources>
+     <constraints>
+       <rsc_location id="rsc_location_group_1" rsc="group_1">
+         <rule id="prefered_location_group_1" score="100">
+           <expression attribute="#uname" id="prefered_location_group_1_expr"
+operation="eq" value="node1"/>
+         </rule>
+       </rsc_location>
+       <rsc_location id="rsc_location_group_2" rsc="group_2">
+         <rule id="prefered_location_group_2" score="100">
+           <expression attribute="#uname" id="prefered_location_group_2_expr"
+operation="eq" value="node2"/>
+         </rule>
+       </rsc_location>
+     </constraints>
+
+
 3. 利用方法
 
 本ソリューションの起動及び終了はheartbeat経由で自動で行われます。順序としては以下の通りになります。
@@ -215,10 +339,11 @@ crmdが立ち上がってない、終了した場合にはcib.xmlファイルの
 ・PostgreSQL に対する管理は行っていません。
 ・PostgreSQL が全く起動していない状態は異常であるとみなし、フェイルオーバーし続けますが、これは現段階の仕様です。
 ・PostgreSQL がクラッシュした場合のリカバリは別途手動で行う必要があります。この方法についてはpgpoolに準じます。
-・ロックの問題、now()関数、OIDといったpgpoolの技術的制限事項が解消するわけ
-ではありません。
+・ロックの問題、now()関数、OIDといったpgpoolの技術的制限事項が解消するわけ ではありません。
+・pgpoolが複数インストールされている場合の挙動は、インストール時の$PATHに依存して決定します。他の種類のバイナリは管理できません。
+・pgpool-II監視はpsqlで行われます。pcpを利用した監視はまだサポートされていません。
 
 6. 著作権
-本プログラムは谷田 豊盛(ゆたか) (tanida@sraoss.co.jp)が作成しました。著作権はいわゆるBSDライセンスライクなものとします。詳細は付属のCOPYINGファイルを参照ください。
+本プログラムは谷田 豊盛(ゆたか) (tanida@sraoss.co.jp)がSRA OSS,Inc.日本支社の後援の元作成し、pgpool global development groupに寄贈されました。ライセンスはpgpoolに準じますが、詳細は付属のCOPYINGファイルを参照ください。