Blog JSystems - uwalniamy wiedzę!
Blog JSystems - uwalniamy wiedzę!
PostgreSQL
Jak zarządzać klastrem Patroni na co dzień (patronictl)
patronictl - które robi to wszystko w zgodzie z logiką klastra.Patroni zdejmuje z administratora ręczne zarządzanie replikacją i failoverem, ale wprowadza własne reguły. Próba zatrzymania bazy klasycznymi metodami kończy się walką z automatem. Pokażemy, jak na co dzień posługiwać się narzędziem patronictl, żeby sprawdzać stan, przełączać lidera i prowadzić prace serwisowe bez wywoływania chaosu.
Chcesz zrestartować jeden węzeł, żeby zmienić parametr albo zaktualizować pakiet. Zatrzymujesz PostgreSQL przez systemd, a po chwili Patroni uruchamia go z powrotem, bo uznaje, że baza padła i trzeba ją podnieść. Albo zatrzymujesz węzeł będący liderem i nieoczekiwanie wyzwalasz failover w środku dnia. Zaczynasz się zastanawiać, jak w ogóle bezpiecznie dotknąć takiego klastra, skoro każda ręczna akcja jest przez automat cofana lub źle interpretowana.
Patroni nieprzerwanie pilnuje, żeby stan klastra zgadzał się z zapisem w rozproszonym magazynie konfiguracji (najczęściej etcd, Consul albo ZooKeeper). Gdy widzi, że węzeł, który powinien działać, jest wyłączony, uznaje to za awarię i reaguje: podnosi bazę albo promuje inny węzeł. Twoje ręczne systemctl stop nie mówi Patroniemu, że to celowe, więc automat robi swoje. To nie błąd - tak działa mechanizm wysokiej dostępności.
Dlatego wszystkie operacje na klastrze trzeba zgłaszać przez Patroni, a nie obok niego. Narzędzie patronictl komunikuje się z klastrem przez ten sam rozproszony magazyn i REST API, więc jego polecenia są rozumiane i respektowane. Gdy każesz zatrzymać węzeł przez patronictl, klaster wie, że to zamierzone, i nie próbuje go od razu podnosić ani panikować.
patronictl -c /etc/patroni/patroni.yml list. Zobaczysz wszystkie węzły, ich role (Leader, Replica), stan (running) oraz opóźnienie replikacji. To Twój podstawowy pulpit.patronictl switchover. To kontrolowane, płynne przełączenie: Patroni najpierw upewnia się, że wybrana replika jest zsynchronizowana, dopiero potem przekazuje jej rolę. Idealne do prac serwisowych na dotychczasowym liderze.patronictl failover to awaryjne przejęcie roli, gdy lider jest niedostępny, i nie gwarantuje pełnej synchronizacji. W normalnej pracy sięgaj po switchover.patronictl pause. Wstrzymuje ono zarządzanie klastrem, dzięki czemu możesz zatrzymać i uruchamiać bazę ręcznie bez wywoływania failoveru. Po pracach wznów automatykę przez patronictl resume.patronictl restart nazwa_klastra nazwa_wezla, zamiast systemd. Patroni wykona restart świadomie, nie traktując go jak awarii.patronictl edit-config, a nie edytując lokalny postgresql.conf. Patroni rozprowadzi zmianę na wszystkie węzły i zapisze ją w rozproszonym magazynie, więc konfiguracja pozostaje spójna w całym klastrze.Po każdej operacji wróć do patronictl list i potwierdź stan: dokładnie jeden węzeł jako Leader, pozostałe jako Replica w stanie running, a opóźnienie replikacji (kolumna Lag) bliskie zeru. Po switchoverze upewnij się, że rola przeszła na zamierzony węzeł. Gdy używałeś pause, sprawdź, że po resume w polu stanu klastra nie widnieje już informacja o wstrzymanej automatyce - inaczej failover pozostanie wyłączony i klaster nie ochroni się sam przy prawdziwej awarii. Poprawność rozprowadzenia konfiguracji potwierdzisz, sprawdzając wartość zmienionego parametru na każdym węźle przez SHOW nazwa_parametru; - zgodność na wszystkich węzłach dowodzi, że zmiana poszła kanałem klastra, a nie tylko lokalnie.
Wróć do listy: 100 najczęstszych pytań i problemów z PostgreSQL

Sprawdź szkolenie: Administracja, replikacja i tuning baz danych PostgreSQL
To szkolenie może być dofinansowane z KFS lub BUR.
★★★★★Średnia ocena naszych szkoleń w Google: 5/5

Sprawdź szkolenie: Zaawansowana administracja PostgreSQL (HA, DR, monitoring, skalowanie)
To szkolenie może być dofinansowane z KFS lub BUR.
★★★★★Średnia ocena naszych szkoleń w Google: 5/5
Komentarze (0)
Brak komentarzy...