Server start with systemd and configured with IP address

Started by PG Bug reporting formover 3 years ago2 messagesdocs
Jump to latest
#1PG Bug reporting form
noreply@postgresql.org

The following documentation comment has been logged on the website:

Page: https://www.postgresql.org/docs/14/server-start.html
Description:

The url of the document is
https://www.postgresql.org/docs/current/server-start.html
My suggestion is add to the documentation in the segment that shows the
systemd entry inside the [Unit] segment the line
After=network-online.target

I saw in several sites that most people recommends using
After=network.target

but this will fail if the server is configured to listen on a specific IP
address instead of just localhost or 127.0.0.1
the differences between them is explained here
https://www.freedesktop.org/wiki/Software/systemd/NetworkTarget/#conceptsinsystemd
TLDR; network.target is after the network is up (but presumably without
address set, just the network stack) and network-online.target is after an
IP address has been set.

Best Regards
Pablo.

#2Tom Lane
tgl@sss.pgh.pa.us
In reply to: PG Bug reporting form (#1)
Re: Server start with systemd and configured with IP address

PG Doc comments form <noreply@postgresql.org> writes:

My suggestion is add to the documentation in the segment that shows the
systemd entry inside the [Unit] segment the line
After=network-online.target

I saw in several sites that most people recommends using
After=network.target

but this will fail if the server is configured to listen on a specific IP
address instead of just localhost or 127.0.0.1

Yeah, I have also found with other daemons that if you use specific
IP addresses in the configuration, you need network-online.target.
Some references suggest that you *also* need to say
Wants=network-online.target [1]https://www.freedesktop.org/wiki/Software/systemd/NetworkTarget/.

It might be that network.target is sufficient if you just bind to
"*", but considering that we're not mentioning that either right
now, I don't see a need to discuss the difference.

(Down the road, maybe we should consider using IP_FREEBIND on
Linux, as suggested at [1]https://www.freedesktop.org/wiki/Software/systemd/NetworkTarget/ ... although that hobbles error
detection, so I'm not really sold that it's such a great idea.)

regards, tom lane

[1]: https://www.freedesktop.org/wiki/Software/systemd/NetworkTarget/