Vysoká dostupnost je požadavkem mnoha systémů bez ohledu na to, jakou technologii používáte. To je důležité zejména pro databáze, protože ukládají data, na která aplikace spoléhají. V závislosti na požadavcích existují různé způsoby nasazení prostředí High Availability pro PostgreSQL, ale vždy je nutné použít doplňkový nástroj, protože nativní funkce PostgreSQL nestačí.
V tomto blogu uvidíme, jak nasadit Percona Distribution pro PostgreSQL pro vysokou dostupnost a jaké druhy nástrojů jsou k tomu nezbytné.
Distribuce Percona pro PostgreSQL
Je to soubor nástrojů, které vám pomohou se správou vašeho databázového systému PostgreSQL. Instaluje PostgreSQL a doplňuje jej o řadu rozšíření, která umožňují efektivní řešení základních praktických úkolů, včetně:
- pg_repack :Obnovuje databázové objekty PostgreSQL.
- pgaudit :Poskytuje podrobné protokolování auditu relace nebo objektu prostřednictvím standardního protokolovacího zařízení PostgreSQL.
- pgBackRest :Jedná se o řešení zálohování a obnovy pro PostgreSQL.
- Patroni :Jedná se o řešení s vysokou dostupností pro PostgreSQL.
- pg_stat_monitor :Shromažďuje a agreguje statistiky pro PostgreSQL a poskytuje informace o histogramu.
- Sbírka dalších rozšíření PostgreSQL contrib.
Vysoká dostupnost na PostgreSQL
Existují různé architektury pro vysokou dostupnost PostgreSQL, ale nejběžnější je topologie Master-Slave (Primary-Standby). Je založen na jedné primární databázi s jedním nebo více pohotovostními uzly. Tyto rezervní databáze zůstanou synchronizované (nebo téměř synchronizované) s primární v závislosti na tom, zda je replikace synchronní nebo asynchronní. Pokud hlavní server selže, pohotovostní režim obsahuje téměř všechna data hlavního serveru a lze jej rychle změnit na nový primární databázový server.
Nastavení master-slave však k efektivnímu zajištění vysoké dostupnosti nestačí, protože musíte také řešit selhání. Jakmile je zjištěna porucha, měli byste být schopni vybrat pohotovostní uzel a převzetí služeb při selhání s co nejmenším zpožděním. PostgreSQL sám o sobě nezahrnuje automatický mechanismus převzetí služeb při selhání, takže to bude vyžadovat nějaké vlastní skripty nebo nástroje třetích stran pro tuto automatizaci.
Když dojde k převzetí služeb při selhání, musí být aplikace odpovídajícím způsobem upozorněny, aby mohly začít používat nový primární uzel. Také musíte vyhodnotit stav naší architektury po převzetí služeb při selhání, protože můžete spustit v situaci, kdy máte spuštěný pouze nový primární uzel (tj. před problémem jste měli primární a pouze jeden pohotovostní uzel). V takovém případě budete muset nějakým způsobem přidat nový pohotovostní uzel, abyste znovu vytvořili nastavení master-slave, které jste původně měli pro vysokou dostupnost.
Aby to fungovalo, budete potřebovat různé nástroje/služby, které vám s tímto úkolem pomohou.
Vyvažovači zatížení
Nástroje pro vyrovnávání zatížení jsou nástroje, které lze použít ke správě provozu z vaší aplikace, abyste z architektury své databáze vytěžili maximum.
Je to nejen užitečné pro vyrovnávání zatížení našich databází, ale také pomáhá aplikacím přesměrovat se na dostupné/zdravé uzly a dokonce specifikovat porty s různými rolemi.
HAProxy je nástroj pro vyrovnávání zatížení, který distribuuje provoz z jednoho zdroje do jednoho nebo více cílů a může pro tento úkol definovat specifická pravidla a/nebo protokoly. Pokud některý z cílů přestane reagovat, je označen jako offline a provoz je odeslán do zbývajících dostupných cílů.
Keepalived je služba, která vám umožňuje konfigurovat virtuální IP v rámci aktivní/pasivní skupiny serverů. Tato virtuální IP adresa je přiřazena aktivnímu serveru. Pokud tento server selže, IP se automaticky migruje na „sekundární“ pasivní server, což mu umožní pokračovat v práci se stejnou IP transparentním způsobem pro systémy.
Chcete-li implementovat všechny tyto věci, můžete to udělat ručně, což bude znamenat práci navíc a časově náročné úkoly, nebo to můžete udělat pouze z jednoho systému pomocí ClusterControl.
Pojďme se podívat, jak importovat vaši stávající distribuci Percona pro PostgreSQL do ClusterControl a jak nakonfigurovat prostředí High Availability pomocí HAProxy a Keepalived kolem tohoto nastavení z přátelského a snadno použitelného rozhraní.
Topologie PostgreSQL pro vysokou dostupnost
Základní topologie High Availability pro PostgreSQL může být:
- 3 servery PostgreSQL 12 (jeden primární a dva pohotovostní uzly).
- 2 HAProxy Load Balancery.
- Zachováno nakonfigurováno mezi servery pro vyrovnávání zatížení.
- 1 server ClusterControl
Budete mít následující topologii:
Jak nainstalovat Percona Distribution pro PostgreSQL
Začněme instalací Percona Distribution pro PostgreSQL. V tomto příkladu použijeme CentOS 7 a PostgreSQL 12.
Pokud máte nainstalovaný cluster, přejděte k další části a importujte svou stávající databázi do ClusterControl.
Instalujte epel-release a percona-release
$ yum install epel-release
$ yum install https://repo.percona.com/yum/percona-release-latest.noarch.rpm
Povolení úložiště PostgreSQL 12
$ percona-release setup ppg-12
* Disabling all Percona Repositories
* Enabling the Percona Distribution for PostgreSQL 12 repository
<*> All done!
Instalace serverového balíčku
$ yum install percona-postgresql12-server
Všimněte si, že tento balíček nenainstaluje všechny součásti Percona Distribution. K instalaci těchto součástí použijte příslušné volitelné balíčky, jak je uvedeno níže:
$ yum install percona-pg_repack12
$ yum install percona-pgaudit
$ yum install percona-pgbackrest
$ yum install percona-patroni
$ yum install percona-pg-stat-monitor12
$ yum install percona-postgresql12-contrib
Inicializovat databázi
$ /usr/pgsql-12/bin/postgresql-12-setup initdb
Initializing database ... OK
Ujistěte se, že máte správnou konfiguraci, abyste mohli nakonfigurovat replikaci PostgreSQL, podobně jako:
$ vi /var/lib/pgsql/12/data/postgresql.conf
listen_addresses = '*'
wal_level=logical
max_wal_senders = 16
wal_keep_segments = 32
hot_standby = on
Potom spusťte službu databáze
$ systemctl start postgresql-12
Nyní, pokud chcete přidat pohotovostní uzly, opakujte kroky 1, 2 a 3 ve všech uzlech, které chcete přidat do clusteru. Pro tyto uzly nemusíte konfigurovat nic dalšího, protože ClusterControl vytvoří odpovídající konfiguraci.
Import distribuce Percona pro PostgreSQL v ClusterControl
S ClusterControl můžete nasadit nebo importovat různé open source databázové stroje ze stejného systému a k jeho používání je vyžadován pouze přístup SSH a privilegovaný uživatel.
Přejděte do sekce „Import“ a vyplňte požadované informace o svém PostgreSQL serveru.
Musíte zadat uživatele, klíč nebo heslo a port pro připojení pomocí SSH na vaše servery. Potřebujete také název pro svůj nový cluster, jinak vám ClusterControl přidělí obecný název.
Po nastavení přístupových informací SSH musíte definovat přihlašovací údaje k databázi, version, basedir a IP adresa nebo název hostitele pro každý databázový uzel.
Pokud ještě nemáte replikaci nakonfigurovanou, stačí přidat IP adresu nebo název hostitele pro primární uzel, protože vám ukážeme, jak přidat zbytek uzlů později.
Ujistěte se, že se při zadávání názvu hostitele nebo IP adresy zobrazuje zelené zaškrtnutí, což znamená, že ClusterControl je schopen komunikovat s uzlem. Poté klikněte na tlačítko Importovat a počkejte, dokud ClusterControl nedokončí svou úlohu. Proces můžete sledovat v části ClusterControl Activity Section. Po dokončení uvidíte nový cluster na hlavní obrazovce ClusterControl. Chcete-li přidat novou repliku, přejděte na akce clusteru a vyberte možnost „Přidat slave replikace“.
Pokud jste postupovali podle předchozích kroků, budete mít nainstalovanou distribuci Percona pro PostgreSQL ve všech pohotovostních uzlech, takže musíte v této části deaktivovat „Instalovat software PostgreSQL“.
Tímto způsobem bude ClusterControl místo toho používat nainstalovanou distribuci Percona pro balíčky PostgreSQL instalace oficiálních balíčků PostgreSQL.
Když to dokončíte, uvidíte všechny uzly v clusteru a stav všech z nich v sekci přehledu.
Nyní máte databázovou stranu připravenou, pojďme se podívat, jak dokončit High Prostředí dostupnosti přidáním zbývajících nástrojů pomocí ClusterControl.
Nasazení nástroje Load Balancer
Chcete-li provést nasazení nástroje pro vyrovnávání zatížení, vyberte v akcích clusteru možnost „Přidat nástroj pro vyrovnávání zatížení“ a vyplňte požadované informace.
Do konfigurace nástroje pro vyrovnávání zatížení stačí přidat IP adresu nebo název hostitele, port, zásady a uzly, které se chystáte přidat.
Keepalived Deployment
Chcete-li provést nasazení Keepalived, vyberte cluster, přejděte na akce clusteru, vyberte „Přidat nástroj pro vyrovnávání zatížení“ a poté přejděte do části „Keepalived“.
Pro vaše prostředí High Availability musíte vybrat servery pro vyrovnávání zatížení a virtuální IP adresu, kterou budete muset použít pro přístup ke svému clusteru. Keepalived nakonfiguruje tuto virtuální IP v aktivním nástroji pro vyrovnávání zatížení a v případě selhání ji migruje z jednoho nástroje pro vyrovnávání zatížení do druhého, takže vaše nastavení může nadále normálně fungovat.
Závěr
Protože zatím nemůžete nasadit Percona Distribution pro PostgreSQL přímo z ClusterControl, v tomto blogu jsme vám ukázali, jak ji spravovat pomocí ClusterControl a jak přidat různé nástroje, jako je HAProxy a Keepalived, abyste měli k dispozici prostředí s vysokou dostupností. snadným způsobem.