datenbank:ha-postgresql-cluster
Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
| Beide Seiten der vorigen RevisionVorhergehende ÜberarbeitungNächste Überarbeitung | Vorhergehende Überarbeitung | ||
| datenbank:ha-postgresql-cluster [2026-05-13 21:41:28] – manfred | datenbank:ha-postgresql-cluster [2026-05-29 10:09:43] (aktuell) – [Tests] manfred | ||
|---|---|---|---|
| Zeile 1: | Zeile 1: | ||
| ====== HA-PostgreSQL-Cluster ====== | ====== HA-PostgreSQL-Cluster ====== | ||
| + | |||
| + | siehe auch: **[[:: | ||
| Zeile 6: | Zeile 8: | ||
| //Es soll ein hochverfügbarer PostgreSQL‑Cluster mit Patroni, EtcE, HAProxy und KeepaliveD auf drei Systemen installiert werden.// | //Es soll ein hochverfügbarer PostgreSQL‑Cluster mit Patroni, EtcE, HAProxy und KeepaliveD auf drei Systemen installiert werden.// | ||
| - | Wichtige Unterschiede zwischen diesem HA-PostgreSQL-Cluster mit 3 Systemen, gegenüber einem HA-PostgreSQL-Cluster mit 5 Systemen sind, dass hier alle Pakete auf allen 3 Systemen installiert werden müssen. Und weil PostgreSQL und HAProxy auf dem selben Host laufen, muß der Datenbank-Zugriff über den Cluster-Zugang (HAProxy) auf einen anderen Port laufen. In diesem Fall laufen die PostgreSQL-Instanzen | + | Wichtige Unterschiede zwischen diesem HA-PostgreSQL-Cluster mit 3 Systemen, gegenüber einem HA-PostgreSQL-Cluster mit 5 Systemen sind, dass hier alle Pakete auf allen 3 Systemen installiert werden müssen. Und weil PostgreSQL und HAProxy auf dem selben Host laufen, muß der Datenbank-Zugriff über den Cluster-Zugang (HAProxy) auf einen anderen Port laufen. |
| - | Weiterhin gibt es in diesem Aufbau noch einen schreibgeschützten Port ('' | + | In diesem Fall laufen die PostgreSQL-Instanzen |
| In einem HA-PostgreSQL-Cluster mit 5 Systemen laufen EtcE, HAProxy und KeepaliveD auf 2 separate Systeme und dann können PostgreSQL und HAProxy auf dem gleichen Port laufen. | In einem HA-PostgreSQL-Cluster mit 5 Systemen laufen EtcE, HAProxy und KeepaliveD auf 2 separate Systeme und dann können PostgreSQL und HAProxy auf dem gleichen Port laufen. | ||
| Zeile 23: | Zeile 25: | ||
| ==== PG-DataDir mit ZFS ==== | ==== PG-DataDir mit ZFS ==== | ||
| - | |||
| - | siehe auch: [[:: | ||
| <code bash DataDir im RAID-1> | <code bash DataDir im RAID-1> | ||
| Zeile 75: | Zeile 75: | ||
| ==== Csync2 ==== | ==== Csync2 ==== | ||
| - | [[:: | + | [[:: |
| <file bash / | <file bash / | ||
| Zeile 203: | Zeile 203: | ||
| === Hinweis === | === Hinweis === | ||
| - | **//Solange der Cluster unhealthy ist, sind Verwaltungsoperationen wie etcdctl member add absichtlich verboten.// | + | **//Solange der Cluster unhealthy ist, sind Verwaltungsoperationen wie '' |
| <code bash> | <code bash> | ||
| Zeile 420: | Zeile 420: | ||
| ==== KeepaliveD ==== | ==== KeepaliveD ==== | ||
| - | |||
| - | // | ||
| <file bash Knoten 1 – / | <file bash Knoten 1 – / | ||
| Zeile 460: | Zeile 458: | ||
| } | } | ||
| - | mcast_src_ip 10.145.43.31 | + | |
| - | # | + | |
| - | # | + | unicast_peer { |
| - | # # | + | # |
| - | # | + | 10.145.43.32 |
| - | # | + | 10.145.43.33 |
| - | # } | + | } |
| } | } | ||
| </ | </ | ||
| Zeile 508: | Zeile 506: | ||
| } | } | ||
| - | mcast_src_ip 10.145.43.32 | + | |
| - | # | + | |
| - | # | + | unicast_peer { |
| - | # | + | 10.145.43.31 |
| - | # # | + | # |
| - | # | + | 10.145.43.33 |
| - | # } | + | } |
| } | } | ||
| </ | </ | ||
| Zeile 556: | Zeile 554: | ||
| } | } | ||
| - | mcast_src_ip 10.145.43.33 | + | |
| - | # | + | |
| - | # | + | unicast_peer { |
| - | # | + | 10.145.43.31 |
| - | # | + | 10.145.43.32 |
| - | # # | + | # |
| - | # } | + | } |
| } | } | ||
| </ | </ | ||
| Zeile 622: | Zeile 620: | ||
| <code bash Netzwerkzugriffe erlauben> | <code bash Netzwerkzugriffe erlauben> | ||
| - | > echo " | + | > echo " |
| > echo " | > echo " | ||
| > echo " | > echo " | ||
| Zeile 1059: | Zeile 1057: | ||
| Wenn das so aussieht, dann kann von den Replicas nicht gelesen werden. | Wenn das so aussieht, dann kann von den Replicas nicht gelesen werden. | ||
| - | Um Problem | + | Um das Problem |
| Zeile 1125: | Zeile 1123: | ||
| </ | </ | ||
| - | <code bash reparieren> | + | <code bash einen zum Leader bestimmen> |
| > patronictl -c / | > patronictl -c / | ||
| + Cluster: pgcluster (7637598528541987072) -------+----+-----------+ | + Cluster: pgcluster (7637598528541987072) -------+----+-----------+ | ||
| Zeile 1343: | Zeile 1341: | ||
| | | ||
| </ | </ | ||
| - | |||
| - | //Wie das beste Vorgehen bei Wartungsarbeiten ist, muß erst noch ermittelt ausgelotet werden.// | ||
| <code bash> | <code bash> | ||
| Zeile 1948: | Zeile 1944: | ||
| nvme3n1 | nvme3n1 | ||
| ----------- | ----------- | ||
| + | </ | ||
| + | |||
| + | |||
| + | ==== Testdaten einspielen ==== | ||
| + | |||
| + | <code bash> | ||
| + | > echo "COPY tabelle FROM '/ | ||
| + | |||
| + | oder | ||
| + | |||
| + | > cat / | ||
| + | </ | ||
| + | |||
| + | <code bash Datensätze zählen> | ||
| + | > echo " | ||
| + | </ | ||
| + | |||
| + | |||
| + | ===== Verbindungen SSL/ | ||
| + | |||
| + | |||
| + | ==== Verschlüsselung konfigurieren ==== | ||
| + | |||
| + | <code bash postgresql.conf> | ||
| + | > patronictl -c / | ||
| + | loop_wait: 10 | ||
| + | maximum_lag_on_failover: | ||
| + | postgresql: | ||
| + | parameters: | ||
| + | hot_standby: | ||
| + | max_replication_slots: | ||
| + | max_wal_senders: | ||
| + | wal_level: replica | ||
| + | ssl: on | ||
| + | ssl_ca_file: | ||
| + | ssl_cert_file: | ||
| + | ssl_key_file: | ||
| + | ssl_min_protocol_version: | ||
| + | ssl_ciphers: | ||
| + | ssl_prefer_server_ciphers: | ||
| + | use_pg_rewind: | ||
| + | retry_timeout: | ||
| + | ttl: 30 | ||
| + | </ | ||
| + | |||
| + | |||
| + | ==== Verschlüsselung erzwingen ==== | ||
| + | |||
| + | <code bash pg_hba.conf> | ||
| + | > vim / | ||
| + | ... | ||
| + | pg_hba: | ||
| + | - hostnossl all all 0.0.0.0/0 reject | ||
| + | - hostnossl all all ::/0 reject | ||
| + | - hostssl replication all 0.0.0.0/0 scram-sha-256 | ||
| + | - hostssl replication all ::/0 scram-sha-256 | ||
| + | - hostssl all all 0.0.0.0/0 scram-sha-256 | ||
| + | - hostssl all all ::/0 scram-sha-256 | ||
| + | </ | ||
| + | |||
| + | |||
| + | ==== Verschlüsselung aktivieren ==== | ||
| + | |||
| + | <code bash kompletten Cluster restarten> | ||
| + | > patronictl -c / | ||
| + | </ | ||
| + | |||
| + | |||
| + | ===== temp_tablespaces ===== | ||
| + | |||
| + | <code bash temp_tablespaces-Verzeichnis anlegen> | ||
| + | > mkdir -p / | ||
| + | > chown postgres: | ||
| + | > chmod 0700 / | ||
| + | </ | ||
| + | |||
| + | <code bash temp_tablespaces konfigurieren> | ||
| + | > echo " | ||
| + | > echo " | ||
| + | > echo " | ||
| + | |||
| + | > patronictl -c / | ||
| + | ... | ||
| + | postgresql: | ||
| + | parameters: | ||
| + | temp_file_limit: | ||
| + | temp_tablespaces: | ||
| + | ... | ||
| </ | </ | ||
/home/http/wiki/data/attic/datenbank/ha-postgresql-cluster.1778708488.txt · Zuletzt geändert: von manfred
