Moin!
Ich habe hier ein CentOS 8 mit einem Postgres-DBMS was beim reboot einfach nicht „sauber“ starten möchte; mir gehen langsam die Ideen aus, wo ich noch suchen soll oder was ich falsch mache.
Gefühlt habe ich das Internet leer gesucht, aber keine für mich passende Lösung gefunden.
Postgres läuft fröhlich in ähnlicher Konfig auf einem CentOS 7 und ich habe auch zwei Work-Arounds, die ok sind; aber ich würde eben einfach gerne verstehen, warum meine Konfig nicht läuft.
Grundsätzlich geht es um den Parameter listen_addresses.
Hier soll localhost und die lokale IP rein.
Ich will nicht über den Sinn/Unsinn von IP-Basierter IT-Security reden, sondern einfach nur verstehen, warum es unter CentOS 7 läuft, aber nicht unter CentOS 8. Das macht mich wahnsinnig !!11EinsElf
Die Postgres-Version scheint auch kein Problem zu sein, hab 10 und 12 ausprobiert.
Ersetze ich die komma-separierte Liste durch * geht’s.
Beispiel
listen_addresses = 'localhost,192.168.56.107'
CentOS 7 = geht
CentOS 8 = Fehlermeldung
Was heißt geht?
Beim Reboot und einem anschließenden
systemctl status postgresql
LOG: konnte IPv4-Adresse »192.168.56.107« nicht binden: Die angeforderte Adresse kan>
TIPP: Läuft bereits ein anderer Postmaster auf Port 5432? Wenn nicht, warten Sie ein>
WARNUNG: konnte Listen-Socket für »192.168.56.107« nicht erzeugen
Bei netstat und lsof fehlen entsprechende Einträge, der postmaster lauscht also nicht.
L
Der Knaller:
Starte ich postgres händisch durch (nach dem Reboot) ist die Warning-Meldung weg und netstat als auch lsof bestätigen ein „horchen“.
erwarte Verbindungen auf IPv4-Adresse »192.168.56.107«, Port 5432
Entsprechend ist auch dann der postgres erst von extern (z.B. pgadmin) erreichbar.
Was ich so rechecheriert habe /etc/hosts-Datei lokale IP aufnehmen, Filesystem Rechte kontrolliert, firewall aus, seLinux auf permissive, keine Leichen ala /tmp/.s.PGSQL.5 nach dem händischen
stoppen von postgres.
Klar kann ich in die start-Unit
ExecStartPre=/bin/sleep 30
Eintragen oder eben auch
listen_addresses = '*'
dann kommt postgres ohne Gemecker nach oben.
Die Logdateien unter ~postgres/data/log/postgresql-Fri.log schweigen sich aus.
Habe erst das Netzwerk in Verdacht gehabt, weil sich das bei dmesg im IPv6-Bereich beschwert, dass es noch nicht „ready“ sei. Flugs IPv6 per Kernel-Parameter in der grub-Konfig deaktiviert, aber auch ohne Besserung bzw. noch mehr Genörgel
im selinux-Bereich, was aber ein alter Bug zu sein scheint:
https://bugzilla.redhat.com/show_bug.cgi?id=641836
VG
Rainer