| From: | Tatsuo Ishii <ishii(at)postgresql(dot)org> |
|---|---|
| To: | emond(dot)papegaaij(at)gmail(dot)com |
| Cc: | pgpool-general(at)lists(dot)postgresql(dot)org |
| Subject: | Re: Pgpool-II 4.7.0 released. |
| Date: | 2025-12-31 00:23:44 |
| Message-ID: | 20251231.092344.1606071176472398412.ishii@postgresql.org |
| Views: | Whole Thread | Raw Message | Download mbox | Resend email |
| Thread: | |
| Lists: | pgpool-general |
> 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
| From | Date | Subject | |
|---|---|---|---|
| Next Message | Tatsuo Ishii | 2025-12-31 00:34:40 | Re: Pgpool can't detect database status properly |
| Previous Message | Adam Blomeke | 2025-12-30 21:59:57 | Re: Pgpool can't detect database status properly |