[pgcluster: 993] Re: ロードバランサーが動作する構成について

小玉 芳信 y-kodama @ kk-mic.jp
2007年 6月 21日 (木) 17:58:28 JST


お世話になります。
こだまです。

三谷様
ご教授ありがとうございます。

> 各サーバのポート番号を重複しないように変えてやれば,
> 1台のマシン上で全部動きますよ.
ご指摘の通り、ポートを変更してpblbの起動に成功しました。
ありがとうございます。

併せて質問なのですが
pc1:クラスタDB1、レプリケーションサーバ1、ロードバランサー1、アプリケーション
pc2:クラスタDB2、レプリケーションサーバ2、ロードバランサー2、アプリケーション
(*アプリケーション:DB書き込み、読み込みを行う、自作プログラムです)

上記のような構成で、環境を構築しようとしています。

ロードバランサーのどちらか一台がダウンした場合でも、
アプリケーション側の設定(IPアドレス、またはポート)を変更することなく、
アプリケーションからのDBアクセスを継続したいのですが、
このような構成は構築可能でしょうか?

可能である場合の設定方法をご教授頂けないでしょうか。

> 環境は以下の通りです。
> OS:Red Hat Linux 9
> DB:pgcluster-1.3.0c
DBを変更しまして現在は
pgcluster-1.5.0rc16 を使用しています。

本メール、長文となっていますがご容赦ください。
以上、よろしくお願いいたします。


主な設定ファイルは以下の通りです。

pc1(pc2の設定ファイルはホスト名はpc1→pc2に置き換えたものです)
---------------------------------------------------------
cluster.conf
---------------------------------------------------------
<Replicate_Server_Info>
        <Host_Name> pc1 </Host_Name>
        <Port> 8001 </Port>
        <Recovery_Port> 8101 </Recovery_Port>
</Replicate_Server_Info>
<Replicate_Server_Info>
        <Host_Name> pc2 </Host_Name>
        <Port> 8001 </Port>
        <Recovery_Port> 8101 </Recovery_Port>
</Replicate_Server_Info>

<Host_Name>  pc1  </Host_Name>
<Recovery_Port>  7101  </Recovery_Port>
<Rsync_Path>  /usr/bin/rsync  </Rsync_Path>
<Rsync_Option>  ssh -1   </Rsync_Option>
<Rsync_Compress>  yes  </Rsync_Compress>
<Pg_Dump_Path>  /usr/local/pgsql/bin/pg_dump  </Pg_Dump_Path>
<When_Stand_Alone>  read_only  </When_Stand_Alone>
<Replication_Timeout>  1min  </Replication_Timeout>
<LifeCheck_Timeout>  3s  </LifeCheck_Timeout>
<LifeCheck_Interval>  11s  </LifeCheck_Interval>

---------------------------------------------------------
pglb.conf
---------------------------------------------------------
<Cluster_Server_Info>
    <Host_Name>   pc1  </Host_Name>
    <Port>        5432                </Port>
    <Max_Connect> 30                   </Max_Connect>
</Cluster_Server_Info>
<Cluster_Server_Info>
    <Host_Name>   pc2   </Host_Name>
    <Port>        5432                </Port>
    <Max_Connect> 30                  </Max_Connect>
</Cluster_Server_Info>

<Host_Name>   pc1  </Host_Name>
<Backend_Socket_Dir>    /tmp     </Backend_Socket_Dir>
<Receive_Port>   5433   </Receive_Port>
<Recovery_Port>   6101  </Recovery_Port>
<Max_Cluster_Num>   128   </Max_Cluster_Num>
<Use_Connection_Pooling>  no   </Use_Connection_Pooling>
<LifeCheck_Timeout>   3s   </LifeCheck_Timeout>
<LifeCheck_Interval>   15s   </LifeCheck_Interval>

<Log_File_Info>
        <File_Name> /tmp/pglb.log </File_Name>
        <File_Size> 1M </File_Size>
        <Rotate> 3 </Rotate>
</Log_File_Info>

---------------------------------------------------------
pgreplicate.conf
---------------------------------------------------------
<Cluster_Server_Info>
    <Host_Name>   pc1  </Host_Name>
    <Port>   5432   </Port>
    <Recovery_Port>   7101  </Recovery_Port>
</Cluster_Server_Info>
<Cluster_Server_Info>
    <Host_Name>   pc2 </Host_Name>
    <Port>   5432   </Port>
    <Recovery_Port>   7101  </Recovery_Port>
</Cluster_Server_Info>

<LoadBalance_Server_Info>
        <Host_Name>  pc2  </Host_Name>
        <Recovery_Port>   6101   </Recovery_Port>
</LoadBalance_Server_Info>

<Host_Name> pc1  </Host_Name>
<Replication_Port>   8001   </Replication_Port>
<Recovery_Port>   8101   </Recovery_Port>
<RLOG_Port>   8301   </RLOG_Port>
<Response_Mode>   normal   </Response_Mode>
<Use_Replication_Log>   no   </Use_Replication_Log>
<Replication_Timeout>   1min   </Replication_Timeout>
<LifeCheck_Timeout>   3s   </LifeCheck_Timeout>
<LifeCheck_Interval>   15s   </LifeCheck_Interval>

<Log_File_Info>
        <File_Name> /tmp/pgreplicate.log </File_Name>
        <File_Size> 1M </File_Size>
        <Rotate> 3 </Rotate>
</Log_File_Info>

----- Original Message ----- 
From: <a.mitani @ sra-europe.com>
To: "PGCluster メーリングリスト" <pgcluster @ ml.postgresql.jp>
Sent: Wednesday, June 20, 2007 8:56 PM
Subject: [pgcluster: 992] Re: ロードバランサーが動作する構成について


> こだまさん,
> 
> 各サーバのポート番号を重複しないように変えてやれば,
> 1台のマシン上で全部動きますよ.
> 
> 三谷
> 
>> 環境は以下の通りです。
>>
>> OS:Red Hat Linux 9
>> DB:pgcluster-1.3.0c
>>
>> (構成1)
>> pc1:クラスタDB1、レプリケーションサーバ1、ロードバランサー1
>> pc2:クラスタDB2、レプリケーションサーバ2、ロードバランサー2
>>
>> pc1(またはpc2)にてそれぞれ起動させます。
>> $ pgreplicate
>> $ pg_ctl start -o "-i"
>> $ pglb
>> ロードバランサーを起動させると、
>> /tmp/.s.PGSQL.5432.lockとなってしまい、クラスタDBも動作しなくなります。
>>
>> 因みに、以下のような構成では動作します。(ロードバランサーを別出し)
>> (構成2)
>> pc1:クラスタDB1、レプリケーションサーバ1
>> pc2:クラスタDB2、レプリケーションサーバ2
>> pc3:ロードバランサー
>>
>> ロードバランサー、クラスタDB、レプリケーションサーバを
>> 一つのPCで動作させることはできないのでしょうか。
>>
>> 設定ファイルは掲示していませんが、構成2で動作可能であれば
>> 掲示してご指示いただきたいと考えています。
>>
>> 何卒、ご教授の程よろしくお願いします。
>>
>> 以上です。
>>
> 
>



pgcluster メーリングリストの案内