sql >> Databáze >  >> RDS >> PostgreSQL

Sledování vysoké dostupnosti pro PostgreSQL pomocí Heartbeat

Při nasazení databázového klastru na různé servery dosáhnete výhody replikace spočívající ve zlepšení dostupnosti dat. Je však potřeba sledovat procesy a sledovat, zda běží nebo ne. Jedním z programů používaných v tomto procesu je Heartbeat, který má schopnost kontrolovat a ověřovat přítomnost zdrojů na jednom nebo více systémech v daném clusteru. Kromě PostgreSQL a souborových systémů, pro které jsou data PostgreSQL uložena, je DRBD jedním ze zdrojů, o kterých budeme diskutovat v tomto článku o tom, jak lze použít program Heartbeat.

HA Heartbeat

Jak bylo diskutováno dříve na blogu DRBD, vysoké dostupnosti dat je dosaženo provozováním různých instancí serveru, ale poskytováním stejných dat. Tyto spuštěné instance serveru lze definovat jako cluster ve vztahu k Heartbeat. V zásadě je každá instance serveru fyzicky schopna poskytovat stejné služby jako ostatní v tomto clusteru. Aktivně poskytovat službu za účelem zajištění vysoké dostupnosti dat však může vždy pouze jedna instance. Můžeme tedy definovat ostatní instance jako „horké náhradní díly“, které lze uvést do provozu v případě selhání masteru. Balíček Heartbeat lze stáhnout z tohoto odkazu. Po instalaci tohoto balíčku jej můžete nakonfigurovat tak, aby fungoval s vaším systémem pomocí níže uvedeného postupu. Jednoduchá struktura konfigurace Heartbeat je:

Konfigurace prezenčního signálu

Když se podíváte do tohoto adresáře /etc/ha.d, najdete některé soubory, které se používají v procesu konfigurace. Soubor ha.cf tvoří hlavní konfiguraci prezenčního signálu. Obsahuje seznam všech uzlů a časů pro identifikaci selhání, kromě nasměrování srdečního tepu na to, jaký typ cest médií použít a jak je nakonfigurovat. Informace o zabezpečení pro cluster jsou zaznamenány v souboru authkeys. Zaznamenané informace v těchto souborech by měly být stejné pro všechny hostitele v clusteru a toho lze snadno dosáhnout synchronizací napříč všemi hostiteli. To znamená, že jakákoli změna informací v jednom hostiteli by měla být zkopírována do všech ostatních.

Soubor Ha.cf

Základní osnova souboru ha.cf je

  logfacility local0
  keepalive 3
  Deadtime 7
  warntime 3
  initdead 30
  mcast eth0 225.0.0.1 694 2 0
  mcast eth1 225.0.0.2 694 1 0
  auto_failback off
  node drbd1
  node drbd2
  node drbd3
  • Logfacility:toto se používá k nasměrování Heartbeat na to, které syslog logovací zařízení by mělo používat pro záznam zpráv. Nejčastěji používané hodnoty jsou auth, authpriv, user, local0, syslog a daemon. Můžete se také rozhodnout, že nebudete mít žádné protokoly, takže můžete nastavit hodnotu na none .i.e

    logfacility none
  • Keepalive:Toto je doba mezi prezenčními signály, tedy frekvence, se kterou je prezenční signál odesílán ostatním hostitelům. Ve výše uvedeném ukázkovém kódu je nastavena na 3 sekundy.
  • Deadtime:je to zpoždění v sekundách, po kterém je uzel prohlášen za selhání.
  • Doba varování:je prodleva v sekundách, po které se do protokolu zaznamená varování, že uzel již nelze kontaktovat.
  • Initdead:toto je doba v sekundách, po kterou se během spouštění systému čeká, než je druhý hostitel považován za vypnutý.
  • Mcast:je to definovaná metoda pro odesílání signálu srdečního tepu. Ve výše uvedeném ukázkovém kódu je síťová adresa vícesměrového vysílání používána přes ohraničené síťové zařízení. V případě více clusteru musí být adresa vícesměrového vysílání jedinečná pro každý cluster. Můžete také zvolit sériové připojení přes multicast nebo pokud je nastaveno tak, že existuje více síťových rozhraní, použijte obě pro srdeční připojení jako v příkladu. Výhodou použití obou je překonat možnost přechodného selhání, které následně může způsobit neplatnou událost selhání.
  • Auto_failback:toto znovu připojí server, který selhal, zpět ke clusteru, pokud bude dostupný. Může to však způsobit zmatek, pokud je server zapnutý a poté je online v jinou dobu. Ve vztahu k DRBD, pokud není dobře nakonfigurován, můžete skončit s více než jednou datovou sadou na stejném serveru. Proto je vhodné jej vždy nastavit na vypnuto.
  • Uzel:Ohraničuje uzel ve skupině clusteru Heartbeat. Pro každý byste měli mít alespoň 1 uzel.

Další konfigurace

Můžete také nastavit další konfigurační informace jako:

  ping 10.0.0.1
  respawn hacluster /usr/lib64/heartbeat/ipfail
  apiauth ipfail gid=haclient uid=hacluster
  deadping 5
  • Ping:Toto je důležité pro zajištění konektivity na veřejném rozhraní pro servery a připojení k jinému hostiteli. Je důležité vzít v úvahu spíše IP adresu než název hostitele cílového počítače.
  • Respawn:toto je příkaz, který se spustí, když dojde k selhání.
  • Apiauth:je autorita pro selhání. Musíte nakonfigurovat ID uživatele a skupiny, se kterými bude příkaz spuštěn. Soubor authkeys obsahuje autorizační informace pro cluster Heartbeat a tento klíč je velmi jedinečný pro ověřování počítačů v daném clusteru Heartbeat.
  • Deadping:Definuje časový limit, než odezva spustí selhání.

Integrace Heartbeat s Postgres a DRBD

Jak již bylo zmíněno, když hlavní server selže, jiný server s daným clusterem se pustí do akce, aby poskytoval stejnou službu. Heartbeat pomáhá při konfiguraci zdrojů, které zlepšují výběr serveru v případě selhání. Definuje například, které jednotlivé servery by měly být v případě poruchy spuštěny nebo vyřazeny. Přihlášením do souboru haresources v adresáři /etc/ha.d získáme přehled prostředků, které lze spravovat. Cesta k souboru prostředku je /etc/ha.d/resource.d a definice prostředku je na jednom řádku, který je:

drbd1 drbddisk Filesystem::/dev/drbd0::/drbd::ext3 postgres 10.0.0.1

(všimněte si mezer).

  • Drbd1:odkazuje na název upřednostňovaného hostitele, který má být vzdálenější od serveru, který se běžně používá jako výchozí hlavní server pro obsluhu služby. Jak je uvedeno na blogu DRBD, potřebujeme zdroje pro náš server a ty jsou definovány v řádku jako drbddisk, souborový systém a postgres. Poslední pole je virtuální IP adresa, která by měla být použita pro sdílení služby, tj. připojení k serveru Postgres. Ve výchozím nastavení bude přiděleno serveru, který je aktivní, když Heartbeat začne. Když dojde k selhání, budou tyto prostředky spuštěny na záložním serveru v pořadí, v jakém jsou zavolány odpovídající skript. V nastavení skript přepne DRBD disk na sekundárním hostiteli do primárního režimu, takže zařízení bude číst/zapisovat.
  • Systém souborů:toto bude spravovat prostředky systému souborů a v tomto případě bylo vybráno DRBD, takže bude připojeno během volání skriptu prostředků.
  • Postgres:toto buď spustí nebo bude spravovat server Postgres

Někdy budete chtít dostávat upozornění prostřednictvím e-mailu. Chcete-li tak učinit, přidejte tento řádek do souboru zdrojů s vaším e-mailem pro příjem varovných textů:

MailTo:: [email protected]::DRBDFailure

Chcete-li spustit srdeční tep, můžete spustit příkaz

/etc/ha.d/heartbeat start

nebo restartujte primární i sekundární server. Nyní, když spustíte příkaz

$ /usr/lib64/heartbeat/hb_standby

Aktuální uzel bude spuštěn, aby přenechal své prostředky druhému uzlu.

Stáhněte si Whitepaper Today Správa a automatizace PostgreSQL s ClusterControlZjistěte, co potřebujete vědět k nasazení, monitorování, správě a škálování PostgreSQLStáhněte si Whitepaper

Zpracování chyb na úrovni systému

Někdy může být jádro serveru poškozeno, což naznačuje potenciální problém s vaším serverem. Budete muset nakonfigurovat server tak, aby se v případě problému odstranil z clusteru. Tento problém je často označován jako kernel panic a následně spouští tvrdý restart vašeho počítače. Restart můžete vynutit nastavením kernel.panic a kernel.panic_on_oop řídicího souboru jádra /etc/sysctl.conf. T.j.

kernel.panic_on_oops = 1
kernel.panic = 1

Další možností je provést to z příkazového řádku pomocí příkazu sysctl, tj.:

$ sysctl -w kernel.panic=1

Pomocí tohoto příkazu můžete také upravit soubor sysctl.conf a znovu načíst konfigurační informace.

sysctl -p

Hodnota udává počet sekund, po které se má čekat před restartem. Druhý uzel prezenčního signálu by pak měl zjistit, že je server mimo provoz, a poté přepnout hostitele s podporou převzetí služeb při selhání.

Závěr

Heartbeat je subsystém, který umožňuje výběr sekundárního serveru na primární a záložní systém, když aktivní server selže. Také určuje, zda jsou všechny ostatní servery naživu. Zajišťuje také přesun zdrojů do nového primárního uzlu


  1. Jak vygenerovat skript pro povolení všech omezení cizích klíčů v databázi SQL Server - SQL Server / Výukový program TSQL, část 78

  2. Hodnota Postgres SSLMode vyžaduje neplatnost, když podpora SSL není zkompilována pomocí Foreign Data Wrapper

  3. Jaké jsou různé typy omezení dostupných v SQL Server - SQL Server / Výukový program T-SQL, část 50

  4. Tabulky a indexy vs. HDD a SSD