Отстраняване на неизправности в patroni¶
Информация
Цялата процедура трябва да се изпълни като root. За да повишите привилегиите си до root, можете да използвате командата su -.
Предупреждение
За да следвате тази процедура, трябва да сте изпълнили допълнителните конфигурации за patronictl.
patroni е оркестратор за висока наличност за PostgreSQL. Той автоматизира управлението на клъстер PostgreSQL, като обработва избора на лидер, превключването при отказ и синхронизирането на възлите, когато възникне инцидент.
В клъстера PostgreSQL на CyberElements Bastion patroni разчита на etcd, за да съхранява и споделя състоянието на клъстера. Той непрекъснато наблюдава състоянието на екземплярите на PostgreSQL и гарантира, че във всеки момент само един възел е определен за лидер.
Ако водещият възел откаже, patroni автоматично организира избор чрез разпределеното хранилище за конфигурация etcd, за да издигне нов лидер и да запази услугата достъпна.
Следователно patroni зависи от etcd и не може да работи правилно, ако etcd не работи.
Десинхронизация на възел¶
Възел от клъстера PostgreSQL понякога може да излезе от синхрон. Това се вижда в резултата от командата patronictl -c /etc/patroni/config.yml topology:
1 2 3 4 5 6 7 | |
В колоната TL възелът PSQL_1 вече не е на същата стойност TL като останалите. За да работи клъстерът, всички възли трябва да са на една и съща стойност TL: разлика показва, че един от възлите е излязъл от синхрон.
В този случай изпълнете следната команда на несинхронизирания възел:
1 | |
Където <MEMBER_PATRONI> е името на несинхронизирания възел, както е показано в колоната Member на топологията.
Ако няколко възела са излезли от синхрон, синхронизирайте повторно всички, които не са на най-високата стойност TL.
Предупреждение
Ако несинхронизираният възел е възелът Leader, данните може да бъдат загубени. Това никога не би трябвало да се случва: очаква се възелът Leader да е на най-високата стойност TL.
Пример
В резултата от командата patronictl -c /etc/patroni/config.yml topology по-горе възелът PSQL_1 е излязъл от синхрон. За да го синхронизирате повторно, използвайте следната команда:
1 | |
Logs¶
Цялата процедура се основава на дневниците на услугата patroni, които получавате с командата по-долу:
1 | |
Съвет
За да следите дневниците в реално време, добавете опцията -f към командата:
1 | |
Информация
Дневниците на patroni са налични и в /var/log/syslog.
Обяснения на дневниците с грешки¶
ERROR: Request to server https://<PSQL_NODE_NAME>:2379 failed: MaxRetryError("HTTPSConnectionPool(host='<PSQL_NODE_NAME>', port=2379)
Когато etcd не работи или е недостъпен, patroni може да записва следните грешки:
1 2 3 4 5 6 7 8 | |
<PSQL_NODE_NAME>-
Име на един от възлите на клъстера PostgreSQL.
В този случай трябва да отстраните неизправностите в etcd.