Riešenie problémov s patroni¶
Informácie
Celý postup je potrebné vykonať ako root. Na zvýšenie oprávnení na úroveň root môžete použiť príkaz su -.
Upozornenie
Na vykonanie tohto postupu musíte mať vykonané dodatočné konfigurácie pre patronictl.
patroni je orchestrátor vysokej dostupnosti pre PostgreSQL. Automatizuje správu clustera PostgreSQL tým, že pri incidente zabezpečuje voľbu vedúceho uzla, prevzatie služieb pri zlyhaní a synchronizáciu uzlov.
V clusteri PostgreSQL CyberElements Bastion sa patroni spolieha na etcd pri ukladaní a zdieľaní stavu clustera. Nepretržite monitoruje stav inštancií PostgreSQL a zabezpečuje, aby bol v každom okamihu ako vedúci určený iba jeden uzol.
Ak vedúci uzol zlyhá, patroni automaticky zorganizuje voľbu prostredníctvom distribuovanej konfiguračnej databázy etcd, aby povýšil nový vedúci uzol a zachoval dostupnosť služby.
patroni teda závisí od etcd a nemôže správne fungovať, ak etcd nefunguje.
Desynchronizácia uzla¶
Uzol clustera PostgreSQL sa niekedy môže desynchronizovať. Je to vidieť vo výstupe príkazu patronictl -c /etc/patroni/config.yml topology:
1 2 3 4 5 6 7 | |
V stĺpci TL uzol PSQL_1 už nie je na rovnakej hodnote TL ako ostatné. Aby cluster fungoval, všetky uzly musia byť na rovnakej hodnote TL: rozdiel naznačuje, že jeden z uzlov nie je synchronizovaný.
V takom prípade spustite na nesynchronizovanom uzle nasledujúci príkaz:
1 | |
Kde <MEMBER_PATRONI> je názov nesynchronizovaného uzla, ako je uvedený v stĺpci Member topológie.
Ak nie je synchronizovaných viacero uzlov, znova synchronizujte všetky, ktoré nie sú na najvyššej hodnote TL.
Upozornenie
Ak je nesynchronizovaným uzlom uzol Leader, môže dôjsť k strate údajov. To by sa nikdy nemalo stať: očakáva sa, že uzol Leader bude na najvyššej hodnote TL.
Príklad
Vo výstupe príkazu patronictl -c /etc/patroni/config.yml topology vyššie nie je uzol PSQL_1 synchronizovaný. Na jeho opätovnú synchronizáciu použite nasledujúci príkaz:
1 | |
Logs¶
Celý postup sa opiera o logy služby patroni, ktoré získate príkazom nižšie:
1 | |
Tip
Ak chcete sledovať logy naživo, pridajte k príkazu možnosť -f:
1 | |
Informácie
Logy patroni sú dostupné aj v /var/log/syslog.
Vysvetlenie chybových logov¶
ERROR: Request to server https://<PSQL_NODE_NAME>:2379 failed: MaxRetryError("HTTPSConnectionPool(host='<PSQL_NODE_NAME>', port=2379)
Keď etcd nefunguje alebo nie je dostupný, patroni môže zapisovať nasledujúce chyby:
1 2 3 4 5 6 7 8 | |
<PSQL_NODE_NAME>-
Názov jedného z uzlov clustera PostgreSQL.
V takom prípade musíte vyriešiť problémy s etcd.