Core Logic realizuje projekty z wykorzystaniem zaawansowanych technologii, takich jak Patroni, PG Bouncer, ETCD i PG Backrest, zapewniając wysoką dostępność, niezawodność oraz bezpieczeństwo danych w środowiskach bazodanowych opartych na PostgreSQL. Rozwiązanie to zapewnia wysoką dostępność, bezpieczeństwo danych i niezawodność działania aplikacji, minimalizując ryzyko przestojów w przypadku awarii serwerów. W artykule zostaną przedstawione główne założenia techniczne, wyzwania oraz korzyści płynące z zastosowania tej architektury w szerokim spektrum realizowanych projektów.

Kluczowe elementy architektury klastra PostgreSQL

W projektach realizowanych przez Core Logic stosujemy architekturę klastra PostgreSQL z kilkoma istotnymi elementami, takimi jak:

Patroni – narzędzie do zarządzania klastrami PostgreSQL, które odpowiada za zapewnienie wysokiej dostępności bazy danych i automatyczne przełączanie się między serwerami w przypadku awarii (failover).

ETCD – rozproszone narzędzie do zarządzania konfiguracją i koordynacją, które monitoruje stan serwerów w klastrze i decyduje, który z serwerów pełni rolę lidera (primary).

PG Bouncer – lekki serwer proxy do zarządzania połączeniami do bazy PostgreSQL, który rozdziela ruch pomiędzy serwery bazy, kierując zapytania SQL do aktualnego lidera.

PG Backrest – narzędzie do tworzenia kopii zapasowych, które dodatkowo zabezpiecza dane, zapisując je na zewnętrznym serwerze.

Jak działa klaster PostgreSQL z Patroni i ETCD?

Architektura klastra PostgreSQL może zostać wdrożona w środowisku, gdzie funkcjonują minimum dwa (lub więcej) serwery bazy danych, z których jeden pełni rolę lidera (primary), a pozostałe są zapasowymi (standby). Serwery występujące w klastrze są nieustannie replikowane serwery są nieustannie replikowane, co zapewnia synchronizację danych w czasie rzeczywistym. W razie awarii serwera lidera, automatyczne przełączenie (failover) następuje w krótkim czasie, a rola lidera zostaje przekazana na inny serwer zapasowy.

Centralnym elementem koordynującym działanie całego systemu jest ETCD. To usługa, która monitoruje stan każdego z serwerów w klastrze, wysyłając informacje regularnie o ich aktualnym stanie. W przypadku awarii głównego serwera, ETCD automatycznie wybiera zapasowy serwer spośród dostępnych, dzięki czemu nie dochodzi do przerwy w działaniu aplikacji.

PG Bouncer z kolei pełni rolę „listonosza” dla zapytań SQL – kieruje je do odpowiedniego serwera bazy danych. Gdy dochodzi do awarii i zmiany serwera, PG Bouncer otrzymuje informację o zmianie i automatycznie zaczyna przekierowywać zapytania do nowego serwera.

Zalety wdrożenia klastra Patroni

Największą zaletą tego rozwiązania jest bezpieczeństwo i niezawodność. Dzięki architekturze opartej na Patroni, ryzyko utraty danych zostało niemal całkowicie wyeliminowane. Nawet w przypadku awarii serwera, system automatycznie przełącza się na serwer zapasowy, co zapewnia nieprzerwane działanie aplikacji bez potrzeby interwencji administratora. Ręczne przełączanie serwerów, jak to miało miejsce w tradycyjnych rozwiązaniach, nie jest już konieczne.

Drugą kluczową korzyścią jest zautomatyzowany proces failover. W sytuacji, gdy jeden z serwerów ulegnie awarii, nie dochodzi do żadnych przestojów – system sam przełącza się na serwer zapasowy, a w międzyczasie administratorzy mogą pracować nad przywróceniem uszkodzonego serwera do normalnego funkcjonowania.

Wyzwania podczas wdrożenia

Mimo że dokumentacja narzędzi takich jak Patroni, ETCD czy PG Bouncer jest bardzo dobrze przygotowana, proces wdrażania może napotkać problemy, np. opracowanie odpowiedniego narzędzia do migracji istniejących baz danych do nowego środowiska opartego na Patroni. W takim wypadku można stworzyć playbook Ansible, który automatycznie migruje bazy danych do klastra z Patroni.

Dalszy rozwój i optymalizacja

Obecnie infrastruktura stosowana w projektach realizowanych przez Core Logic spełnia wszystkie założenia wydajnościowe i niezawodnościowe, co eliminuje potrzebę natychmiastowej rozbudowy zasobów. Jednakże, wraz z ciągłym wzrostem bazy danych, konieczne jest regularne monitorowanie jej stanu oraz rozważenie ewentualnej rozbudowy zasobów sprzętowych w przyszłości, aby utrzymać optymalną wydajność i stabilność systemu.

Podsumowanie

Wdrożenie klastra PostgreSQL z Patroni, PG Bouncer i ETCD przyniosło liczne korzyści, w tym automatyzację procesu failover, zwiększenie bezpieczeństwa danych oraz niezawodność działania aplikacji. Dzięki temu, takie projekty mogą funkcjonować bez przerw, a dane są zawsze dostępne, niezależnie od ewentualnych awarii serwerów. To rozwiązanie stanowi doskonały przykład, jak nowoczesne technologie mogą zabezpieczyć dane i poprawić wydajność aplikacji.