Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1vak0Q-00Ctni-3D for pgpool-general@arkaria.postgresql.org; Wed, 31 Dec 2025 00:24:03 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1vak0P-004pqm-2o for pgpool-general@arkaria.postgresql.org; Wed, 31 Dec 2025 00:24:02 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1vak0P-004pqd-25 for pgpool-general@lists.postgresql.org; Wed, 31 Dec 2025 00:24:02 +0000 Received: from meldrar.postgresql.org ([2a02:c0:301:0:ffff::31]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1vak0O-003PiM-0Z for pgpool-general@lists.postgresql.org; Wed, 31 Dec 2025 00:24:01 +0000 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=postgresql.org; s=20171124; h=Content-Transfer-Encoding:Content-Type: Mime-Version:References:In-Reply-To:From:Subject:Cc:To:Message-Id:Date:Sender :Reply-To:Content-ID:Content-Description; bh=JOJim2w+LEqC+9QlgroO3E0tHLpC6aXQSWeSREbduAM=; b=WRth2h+jZHvtayKGX+ShAesQdU u37PTVib8w6A987LmbDYjd9hMGgkz5YedR0Eb7atqPnTNM/fzRq9nHGW94FopfI780R4MOHhTzs+Z SpQ0KqOgiNVQcWsdihhYX6jm/g4Wvnv93A8LC7xW6zJHLt5udXiiUrCf4aWfy8KRNjPb2EHH36nRm 6lFt/t4QGF9YZCxr6cdHRqhOp04qzhjOX+wVrQIhnX+nnQAzYJ54ApbxnffVk9xc8WmMvsiNCSK8V VOIH7XO9n2egnPN9KG++n1z/6sAbjgo5L05sCH/O3eB0PbTSJ6PVssGAMqJC654tY57Nsg+JpEQ88 thHKUG+Q==; Received: from [2409:11:4120:300:8411:ad79:39fa:3c7b] (helo=localhost) by meldrar.postgresql.org with esmtpsa (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1vak0J-007P8f-1l; Wed, 31 Dec 2025 00:23:57 +0000 Date: Wed, 31 Dec 2025 09:23:44 +0900 (JST) Message-Id: <20251231.092344.1606071176472398412.ishii@postgresql.org> To: emond.papegaaij@gmail.com Cc: pgpool-general@lists.postgresql.org Subject: Re: Pgpool-II 4.7.0 released. From: Tatsuo Ishii In-Reply-To: References: X-Mailer: Mew version 6.8 on Emacs 29.3 Mime-Version: 1.0 Content-Type: Text/Plain; charset=us-ascii Content-Transfer-Encoding: 7bit X-Host-Lookup-Failed: Reverse DNS lookup failed for 2409:11:4120:300:8411:ad79:39fa:3c7b (failed) List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk > Hi all, > > We are trying to upgrade our application to use Pgpool-II 4.7.0, but > the change for 'Enhance security for watchdog and heartbeat receiver.' > is causing issues for us. We run Pgpool in a docker container and > expose some of its ports to specific IP-addresses on the hosts: > 172.29.30.1, 172.29.30.2 and 172.29.30.3 for the 3 hosts. However, > from the perspective of docker container in which Pgpool is running, > there's only the IP assigned to the container by docker. With 4.7.0, > Pgpool tries to bind the wd_port to its external IP address, which is > not possible from inside the container, resulting in the following > errors: > > 2025-12-29 10:11:05: pid 8: LOG: setting the local watchdog node name > to "172.29.30.1:5432 Linux 9ade096c54fb" > 2025-12-29 10:11:05: pid 8: LOG: watchdog cluster is configured with > 1 remote nodes > 2025-12-29 10:11:05: pid 8: LOG: watchdog remote node:0 on 172.29.30.2:9009 > 2025-12-29 10:11:05: pid 8: LOG: interface monitoring is disabled in watchdog > 2025-12-29 10:11:05: pid 8: LOG: setting up watchdog receive socket > for 172.29.30.1:9009 > 2025-12-29 10:11:05: pid 8: LOG: failed to create watchdog receive > socket. retrying... > 2025-12-29 10:11:05: pid 8: DETAIL: bind on "172.29.30.1:9009" failed > with reason: "Address not available" > 2025-12-29 10:11:06: pid 8: LOG: failed to create watchdog receive > socket. retrying... > 2025-12-29 10:11:06: pid 8: DETAIL: bind on "172.29.30.1:9009" failed > with reason: "Address not available" > 2025-12-29 10:11:07: pid 8: LOG: failed to create watchdog receive > socket. retrying... > 2025-12-29 10:11:07: pid 8: DETAIL: bind on "172.29.30.1:9009" failed > with reason: "Address not available" > 2025-12-29 10:11:08: pid 8: LOG: failed to create watchdog receive > socket. retrying... > 2025-12-29 10:11:08: pid 8: DETAIL: bind on "172.29.30.1:9009" failed > with reason: "Address not available" > 2025-12-29 10:11:09: pid 8: LOG: failed to create watchdog receive > socket. retrying... > 2025-12-29 10:11:09: pid 8: DETAIL: bind on "172.29.30.1:9009" failed > with reason: "Address not available" > 2025-12-29 10:11:10: pid 8: LOG: failed to create watchdog receive socket > 2025-12-29 10:11:10: pid 8: DETAIL: bind on 172.29.30.1:9009 failed > 2025-12-29 10:11:10: pid 8: FATAL: failed to create any of watchdog > receive sockets > 2025-12-29 10:11:10: pid 1: DEBUG: reaper handler > 2025-12-29 10:11:10: pid 1: DEBUG: watchdog child process with pid: 8 > exit with FATAL ERROR. pgpool-II will be shutdown > 2025-12-29 10:11:10: pid 1: DEBUG: watchdog child process with pid: 8 > exits with status 768 > 2025-12-29 10:11:10: pid 1: FATAL: watchdog child process exit with > fatal error. exiting pgpool-II > 2025-12-29 10:11:10: pid 1: LOG: shutting down > > The configuration for the watchdog and heartbeats hosts and ports is: > hostname0 = '172.29.30.1' > wd_port0 = 9009 > pgpool_port0 = 5432 > heartbeat_hostname0 = '172.29.30.1' > heartbeat_port0 = 9694 > > hostname1 = '172.29.30.2' > wd_port1 = 9009 > pgpool_port1 = 5432 > heartbeat_hostname1 = '172.29.30.2' > heartbeat_port1 = 9694 > > hostname2 = '172.29.30.3' > wd_port2 = 9009 > pgpool_port2 = 5432 > heartbeat_hostname2 = '172.29.30.3' > heartbeat_port2 = 9694 > > Is there any way to revert this behavior to the old situation, where > pgpool would bind on all IP addresses? Inside a docker container, this > is fine. Sorry for the inconvenience. Unfortunately it's not possible to bind on all IP addresses for pgpool by tweaking hostnameN. You could specify it to '*' so that it binds on all IP addresses, but this will cause a different problem: communicating to other watchdog is refused. This is because each watchdog node name is created from hostnameN. If hostnameN is '*', the node name will be something like "*:5432 Linux..." which is different from what other watchdog nodes expect (they expect something like '172.29.30.1:5432 ..."). Since most pgpool developers are off for New Year's holiday, I will discuss them next week. Best regards, -- Tatsuo Ishii SRA OSS K.K. English: http://www.sraoss.co.jp/index_en/ Japanese:http://www.sraoss.co.jp