PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Как да разположите Percona Distribution за PostgreSQL за висока наличност

Високата наличност е изискване за много системи, без значение каква технология използвате. Това е особено важно за базите данни, тъй като те съхраняват данни, на които разчитат приложенията. В зависимост от изискванията има различни начини за внедряване на среда с висока достъпност за PostgreSQL, но винаги е необходимо да се използва допълнителен инструмент, тъй като собствените функции на PostgreSQL не са достатъчни.

В този блог ще видим как да разгърнем Percona Distribution за PostgreSQL за висока достъпност и какви инструменти са необходими за това.

Разпространение на Percona за PostgreSQL

Това е колекция от инструменти, които да ви помогнат при управлението на вашата система от база данни PostgreSQL. Той инсталира PostgreSQL и го допълва от селекция от разширения, които позволяват ефективно решаване на основни практически задачи, включително:

  • pg_repack :Възстановява обектите на базата данни PostgreSQL.
  • pgaudit :Предоставя подробно регистриране на сесия или одит на обект чрез стандартното средство за регистриране на PostgreSQL.
  • pgBackRest :Това е решение за архивиране и възстановяване за PostgreSQL.
  • Патрони :Това е решение с висока достъпност за PostgreSQL.
  • pg_stat_monitor :Той събира и обобщава статистически данни за PostgreSQL и предоставя информация за хистограма.
  • Колекция от допълнителни разширения за принос на PostgreSQL.

Висока наличност на PostgreSQL

Има различни архитектури за висока наличност на PostgreSQL, но най-често срещаната е топологията Master-Slave (първично-готовност). Базира се на една първична база данни с един или повече резервни възли. Тези резервни бази данни ще останат синхронизирани (или почти синхронизирани) с основната, в зависимост от това дали репликацията е синхронна или асинхронна. Ако основният сървър се повреди, режимът на готовност съдържа почти всички данни на главния сървър и може бързо да бъде превърнат в новия основен сървър на база данни.

Но настройката главен-подчинен не е достатъчна, за да гарантира ефективно висока наличност, тъй като трябва да се справяте и с неуспехите. След като се открие неизправност, трябва да можете да изберете възел в режим на готовност и да преминете към него с възможно по-малко закъснение. Самият PostgreSQL не включва механизъм за автоматичен отказ, така че това ще изисква някои персонализирани скриптове или инструменти на трети страни за тази автоматизация.

След като се случи отказ, приложението(ата) трябва да бъде съответно уведомено, за да могат да започнат да използват новия първичен възел. Освен това трябва да оцените състоянието на нашата архитектура след отказ, тъй като можете да работите в ситуация, в която работите само новият първичен (т.е. имахте първичен и само един резервен възел преди проблема). В такъв случай ще трябва по някакъв начин да добавите нов възел в режим на готовност, за да създадете отново настройката главен-подчинен, която първоначално сте имали за висока достъпност.

За да работи, ще трябва да имате различни инструменти/услуги, които да ви помогнат с тази задача.

Балансьори на натоварване

Балансьорите на натоварване са инструменти, които могат да се използват за управление на трафика от вашето приложение, за да извлечете максимума от архитектурата на вашата база данни.

Не само е полезно за балансиране на натоварването на нашите бази данни, но също така помага на приложенията да бъдат пренасочени към наличните/изправни възли и дори да посочат портове с различни роли.

HAProxy е средство за балансиране на натоварването, което разпределя трафика от един източник към една или повече дестинации и може да дефинира специфични правила и/или протоколи за тази задача. Ако някоя от дестинациите спре да отговаря, тя се маркира като офлайн и трафикът се изпраща към останалите налични дестинации.

Keepalived е услуга, която ви позволява да конфигурирате виртуален IP в рамките на активна/пасивна група сървъри. Този виртуален IP се присвоява на активен сървър. Ако този сървър не успее, IP адресът автоматично се мигрира към „Вторичния“ пасивен сървър, което му позволява да продължи да работи със същия IP по прозрачен за системите начин.

За да приложите всички тези неща, можете да го направите ръчно, което ще означава допълнителна работа и отнемащи време задачи, или можете да го направите само от една система с помощта на ClusterControl.

Нека видим как да импортирате съществуващото си Percona Distribution за PostgreSQL в ClusterControl и след това как да конфигурирате среда с висока достъпност с помощта на HAProxy и Keepalived около тази настройка от удобен и лесен за използване интерфейс.

Топология на PostgreSQL за висока достъпност

Основна топология с висока достъпност за PostgreSQL може да бъде:

  • 3 PostgreSQL 12 сървъра (един основен и два резервни възела).
  • 2 HAProxy балансира на натоварването.
  • Пазете конфигуриран между сървърите за балансиране на натоварването.
  • 1 сървър на ClusterControl

И така, ще имате следната топология:

Как да инсталирате Percona Distribution за PostgreSQL

Нека започнем с инсталирането на Percona Distribution за PostgreSQL. За този пример ще използваме CentOS 7 и PostgreSQL 12.

Ако имате инсталиран клъстер, отивате в следващия раздел, за да импортирате съществуващата си база данни в ClusterControl.

Инсталирайте epel-release и percona-release

$ yum install epel-release

$ yum install https://repo.percona.com/yum/percona-release-latest.noarch.rpm

Активиране на хранилището на PostgreSQL 12

$ percona-release setup ppg-12

* Disabling all Percona Repositories

* Enabling the Percona Distribution for PostgreSQL 12 repository

<*> All done!

Инсталирайте сървърния пакет

$ yum install percona-postgresql12-server

Обърнете внимание, че този пакет няма да инсталира всички компоненти на Percona Distribution. За да инсталирате тези компоненти, използвайте съответните опционални пакети, както е показано по-долу:

​$ 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

Инициализирайте базата данни

$ /usr/pgsql-12/bin/postgresql-12-setup initdb

Initializing database ... OK

Уверете се, че имате правилната конфигурация, за да можете да конфигурирате репликация на PostgreSQL, подобно на:

$ vi /var/lib/pgsql/12/data/postgresql.conf

listen_addresses = '*'

wal_level=logical

max_wal_senders = 16

wal_keep_segments = 32

hot_standby = on

След това стартирайте услугата за база данни

$ systemctl start postgresql-12

Сега, ако искате да добавите възли в готовност, повторете стъпки 1, 2 и 3 във всички възли, които искате да добавите към клъстера. За тези възли не е необходимо да конфигурирате нищо друго, тъй като ClusterControl ще създаде съответната конфигурация.

Импортиране на Percona дистрибуция за PostgreSQL в ClusterControl

С ClusterControl можете да разгръщате или импортирате различни механизми за бази данни с отворен код от една и съща система и се изисква само SSH достъп и привилегирован потребител, за да го използвате.

Отидете в секцията „Импортиране“ и попълнете необходимата информация за вашия PostgreSQL сървър.

Трябва да посочите потребител, ключ или парола и порт за свързване чрез SSH към вашите сървъри. Имате нужда и от име за новия си клъстер, в противен случай ClusterControl ще присвои общо за вас.

След като настроите информацията за SSH достъп, трябва да дефинирате идентификационните данни за базата данни, версия, база данни и IP адреса или името на хоста за всеки възел на базата данни.

Ако все още не сте конфигурирали репликацията, просто трябва да добавите IP адреса или името на хоста за основния възел, тъй като ще ви покажем как да добавите останалите възли по-късно.

Уверете се, че получавате зелена отметка при въвеждане на името на хоста или IP адреса, което показва, че ClusterControl може да комуникира с възела. След това щракнете върху бутона Импортиране и изчакайте, докато ClusterControl завърши работата си. Можете да наблюдавате процеса в секцията за активност на ClusterControl. Когато приключи, ще видите новия клъстер на главния екран на ClusterControl. За да добавите нова реплика, отидете на действията на клъстера и изберете опцията „Добавяне на подчинен репликация“.

Ако сте изпълнили предишните стъпки, ще имате инсталиран Percona Distribution за PostgreSQL във всички възли в режим на готовност, така че трябва да деактивирате „Инсталиране на софтуера PostgreSQL“ в този раздел.

По този начин ClusterControl ще използва инсталираната Percona Distribution за PostgreSQL пакети вместо това за инсталиране на официалните PostgreSQL пакети.

Когато завършите това, ще видите всички възли в клъстера и състоянието на всички тях в секцията за преглед.

Сега имате готова страна на базата данни, нека видим как да завършите High Среда за наличност чрез добавяне на останалите инструменти с помощта на ClusterControl.

Разгръщане на Load Balancer

За да извършите разгръщане на балансиране на натоварването, изберете опцията „Добавяне на балансьор на натоварване“ в действията на клъстера и попълнете исканата информация.

Трябва само да добавите IP адрес или име на хост, порт, политика и възлите, които ще добавите към конфигурацията за балансиране на натоварването.

Поддържано разполагане

За да извършите разгръщане на Keepalived, изберете клъстера, отидете на действията на клъстера, изберете „Добавяне на Load Balancer“ и след това отидете на секцията „Keepalived“.

За вашата среда с висока достъпност трябва да изберете сървърите за балансиране на натоварването и виртуалния IP адрес, които ще трябва да използвате за достъп до вашия клъстер. Keepalived конфигурира този виртуален IP адрес в активния балансьор на натоварване и го мигрира от един балансьор на натоварване към друг в случай на повреда, така че настройката ви да може да продължи да функционира нормално.

Заключение

Тъй като все още не можете да внедрите Percona Distribution за PostgreSQL директно от ClusterControl, в този блог ви показахме как да можете да го управлявате с помощта на ClusterControl и как да добавяте различни инструменти като HAProxy и Keepalived, за да имате среда с висока достъпност. по лесен начин.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как мога да вмъкна JSON обект в Postgres с помощта на Java readyStatement?

  2. Колко дисково пространство е необходимо за съхраняване на стойност NULL с помощта на postgresql DB?

  3. psycopg2.OperationalError:ФАТАЛНО:неподдържан интерфейсен протокол 1234.5679:сървърът поддържа от 2.0 до 3.0

  4. PostgreSQL CASE ... END с множество условия

  5. Инсталиране на pg -v 0.17.1