Dzisiaj szybki rzut okiem, jak zbudować dwu nodowy kluster bazodanowy active standby z użyciem postgres-10 i repmgr4. Calość na CentOS7.
Z góry przepraszam za uproszenia, to co prezentuje to minimalna działająca konfiguracja - którą każdy może następnie dostosować do swoich potrzeb.
Zakładam, że dysponujemy dwoma serwerami, w jednej podsieci.
Zaczynamy od instalacji postgresa:
Instalujemy repozytorium postgresa-10 dla CentOS:
yum install https://download.postgresql.org/pub/repos/yum/10/redhat/rhel-7-x86_64/pgdg-centos10-10-2.noarch.rpmNastepnie instalujemy postgresa na obu nodach:
yum install postgresql-serverInicjujemy postawowe systemowe bazy danych dla postgresa:
/usr/pgsql-10/bin/postgresql-10-setup initdbDodajemy postgres-10 do autostartu:
systemctl enable postgresql-10Teraz czas na rep managera
Instalujemy repozytorium:
yum install https://rpm.2ndquadrant.com/site/content/2ndquadrant-repo-10-1-1.el7.noarch.rpmInstalujemy sam pakiet:
yum install repmgr10Teraz czas na konfiguracje. Dodajemy Master i Slave IP do pliku PG_HBA.conf tak aby oba nody mogły się ze sobą połączyć, w naszym wypadku user repmgr bedzie miał uprawnina trust:
PG_HBA.conf: # TYPE DATABASE USER ADDRESS METHOD local repmgr repmgr trust host repmgr repmgr 127.0.0.1/32 trust host repmgr repmgr 172.30.10.10/32 trust #Master IP host repmgr repmgr 172.30.10.11/32 trust #Slave IP # "local" is for Unix domain socket connections only local all all ident
# IPv4 local connections: host all all 127.0.0.1/32 ident host all all 172.30.10.1/24 md5Następnie czas na postawową konfigurację postgresql.conf'a tak aby słuchał na wszystkich inteface'ach i ładował repmgra
listen_addresses = '*' port = 5432 shared_preload_libraries = 'repmgr'Dodatkowo dodajemy na masterze następujące wpisy:
max_wal_senders = 10 wal_level = 'replica' hot_standby = on archive_mode = on archive_command = '/bin/true'Teraz możemy wystarować "mastera":
systemctl start postgresql-10Tworzymy usera repmgr niezbędnego do replikacji:
sudo -u postgres createuser -s repmgr createdb repmgr -O repmgrKonfigueujemy samego repmgra, domyslnie jest to plik: /etc/repmgr/10/repmgr.conf
Na masterze:
node_id=1 node_name=node1 conninfo='host=node1 user=repmgr dbname=repmgr connect_timeout=2' data_directory='/var/lib/pgsql/10/data' failover=automatic promote_command='/usr/pgsql-10/bin/repmgr standby promote -f /etc/repmgr/10/repmgr.conf --log-to-file' follow_command='/usr/pgsql-10/bin/repmgr standby follow -f /etc/repmgr/10/repmgr.conf--log-to-file --upstream-node-id=%n' monitoring_history=yesI na replice:
node_id=2 node_name=node2 conninfo='host=node2 user=repmgr dbname=repmgr connect_timeout=2' data_directory='/var/lib/pgsql/10/data' failover=automatic promote_command='/usr/pgsql-10/bin/repmgr standby promote -f /etc/repmgr/10/repmgr.conf --log-to-file' follow_command='/usr/pgsql-10/bin/repmgr standby follow -f /etc/repmgr/10/repmgr.conf --log-to-file --upstream-node-id=%n' monitoring_history=yesRejestrujemy primary node'a na masterze:
su - postgres /usr/pgsql-10/bin/repmgr -f /etc/repmgr/10/repmgr.conf primary register /usr/pgsql-10/bin/repmgr -f /etc/repmgr/10/repmgr.conf cluster showTeraz przyszedl czas na skopiowanie danych do repliki: (pamietajmy aby postgres na replice był wyłączony)
su - postgres /usr/pgsql-10/bin/repmgr -h node1 -U repmgr -d repmgr -f /etc/repmgr/10/repmgr.conf standby clone -FPo skopiowaniu danych możemy uruchomić postgresa na replice:
service postgres-10 startTeraz możemy zarejestrować drugiego node'a. W tym celu na replice, wykonujemy nastepujące polecenia:
su - postgres /usr/pgsql-10/bin/repmgr -f /etc/repmgr/10/repmgr.conf standby registerFinalnie, sprawdzamy status klastra czy wszystko dziala, oraz czy oba node'y są widoczne:
/usr/pgsql-10/bin/repmgr -f /etc/repmgr/10/repmgr.conf cluster showSukces, dwunodowy klaster jest gotowy. Teraz jeśli chcemy, aby klaster automatycznie wykonywał failover pozostaje odpalić rep manager guarda jako daemon, tak by czuwał czy oba node'y działają:
sudo -u postgres /usr/pgsql-10/bin/repmgrd -f /etc/repmgr/10/repmgr.conf --pid-file /tmp/repmgrd.pid --daemonize
Brak komentarzy:
Prześlij komentarz