[pgpool-hackers: 2273] Re: RFC: New health check implementation

Muhammad Usama m.usama at gmail.com
Fri Apr 21 15:47:30 JST 2017



> On 21-Apr-2017, at 4:31 AM, Tatsuo Ishii <ishii at sraoss.co.jp> wrote:
> 
> Usama,
> 
> Is it possible to have following config parameter at the same time?
> My feeling is we can't because current implementation of config
> handling does not allow it.
> 
> health_check_period = 10
> health_check_period0 = 5

Yes, having the same named configuration parameter with and without index postfix would cause problem with the current implementations, but if we want to support this I can tweak the configuration framework to allow that.

Thanks
Best regards
Muhammad Usama 

> 
> Best regards,
> --
> Tatsuo Ishii
> SRA OSS, Inc. Japan
> English: http://www.sraoss.co.jp/index_en.php
> Japanese:http://www.sraoss.co.jp
> 
>> Hi,
>> 
>> This is a Request for Comments on the new implementation of health
>> check aiming for Pgpool-II 3.7.
>> 
>> Problems:
>> 
>> Current implementation of health check is a single serial processing
>> for all of database nodes. This implies some limitations for health
>> check process: 1) it is not possible to specify different health check
>> configuration values for each database node, 2) node failure detection
>> may take longer. For example, if it takes 10 seconds before detecting
>> node 0 failure, then detecting node 1 failure will be delayed at least
>> 10 seconds because it starts node failure detection after node 0.
>> 
>> The solution:
>> 
>> Allow to specify health check parameters for each node. Pgpool.conf
>> will look like:
>> 
>> health_check_period0 = 10
>> health_check_timeout0 = 20
>> :
>> :
>> 
>> where "0" means database node 0 (similar concept as "backend_*0
>> parameters).
>> 
>> To make admin's life easier, current parameters can be used as
>> well. Suppose there are 3 nodes, and we have:
>> 
>> health_check_period = 10
>> health_check_period0 = 5
>> 
>> then health_check_period for node 1 and 2 will be 10, while
>> health_check_period for node 0 will be 5. So parameter names without
>> node id works as a "global variable".
>> 
>> The implementation:
>> 
>> Create separate child process of pgpool main process and let do the
>> heal check job for each database node. Once the health check child
>> process detects node failure, it signals to main process and main
>> process will perform failover.
>> 
>> This architecture makes pgpool main process simpler and robust, while
>> earlier detection of node failure by the health check child process.
>> 
>> Comments and suggestions are welcome.
>> 
>> Best regards,
>> --
>> Tatsuo Ishii
>> SRA OSS, Inc. Japan
>> English: http://www.sraoss.co.jp/index_en.php
>> Japanese:http://www.sraoss.co.jp
>> _______________________________________________
>> pgpool-hackers mailing list
>> pgpool-hackers at pgpool.net
>> http://www.pgpool.net/mailman/listinfo/pgpool-hackers


More information about the pgpool-hackers mailing list