PgPool II: erinevus redaktsioonide vahel

Allikas: Kuutõrvaja
Mine navigeerimisribaleMine otsikasti
Jj (arutelu | kaastöö)
Resümee puudub
Jj (arutelu | kaastöö)
Resümee puudub
 
(ei näidata sama kasutaja 15 vahepealset redaktsiooni)
1. rida: 1. rida:
===Sissejuhatus===
==Sissejuhatus==
 
Pgpool-II näol on tegemist vahevaraga, mis töötab PostgreSQL serverite ja andmebaasi kliendi vahel ning võimaldab replikatsiooni
ja koormusjagamist.
 
=Clustri loomine=


Süsteem mida asume seadistama koosneb kolmest serverist
Süsteem mida asume seadistama koosneb kolmest serverist
14. rida: 19. rida:
     Võrk 192.168.0.0/24
     Võrk 192.168.0.0/24


'''Pgpooli serveri seadistus'''
Kliend ühendub sellise seadustuse puhul PG2 peale pordile 9898 ning pgpool2 suunab automaatselt kõik kirjutamised DB1 peale
ja päringud võrdselt DB1 ja DB2 serveritele.
 
DB1 masin võib seejuures juba sisaldada andmebaase ja erinevat infot. Koormusjaoturi ja täiendava andmebaasimasina lisamine infot ei ohusta.
Pgpool server võib olla sama võimsusega kui üks master v slave. Tehniliselt pole ka takistust hoida pgpool ja esimene master andmebaas ühes
masinas.
 
===PG2 pgpooli serveri seadistus===


Paigaldame PgPool II paki.
Paigaldame PgPool II paki.
20. rida: 32. rida:
  # sudo apt-get install pgpool2
  # sudo apt-get install pgpool2


Pgpooli esmaseks seadistuseks tuleks määrata ära PgPool II PCP seadistuses kasutaja (näiteks postgres mis on vaikimisi kasutaja), mille kaudu hakkab PgPool II suhtlema erinevate andmebaasidega.
Pgpooli esmaseks seadistuseks tuleks määrata ära PgPool II PCP seadistuses kasutaja (näiteks postgres mis on vaikimisi kasutaja), mille kaudu hakkab PgPool II suhtlema erinevate andmebaasidega. NB tegemist testiga, reaalses süsteemis võiks kasutada mõnda muunimelist kasutajat


Tekitame postgres kasutaja MD5 parooli.
Genereerime postgres kasutaja MD5 parooli. Seda on vaja pgpooli pcp utiliitidega käskude andmiseks


  # /usr/sbin/pg_md5 postgres
  # /usr/sbin/pg_md5 postgres
  e8a48653851e28c69d0506508fb27fc5
  e8a48653851e28c69d0506508fb27fc5
Ja lisame selle /etc/pgpool-II/pcp.conf konfi
postgres:e8a48653851e28c69d0506508fb27fc5


Seejärel tekitame faili /etc/pgpool2/pgpool.conf järgneva sisuga
Seejärel tekitame faili /etc/pgpool2/pgpool.conf järgneva sisuga
52. rida: 68. rida:
  backend_data_directory0 = '/var/lib/postgresql/9.5/main'
  backend_data_directory0 = '/var/lib/postgresql/9.5/main'
  backend_flag0 = 'ALLOW_TO_FAILOVER'
  backend_flag0 = 'ALLOW_TO_FAILOVER'


Juhul kui Te ei tea kus asub PostgeSQL andmebaasi andmete hoiustamise koht serveris, siis saate lihtsa SQL päringuga selle teada.
Juhul kui Te ei tea kus asub PostgeSQL andmebaasi andmete hoiustamise koht serveris, siis saate lihtsa SQL päringuga selle teada.


  SHOW data_directory;
  SHOW data_directory;
Lisaks võib üle vaadata seadistuselemendid näiteks kas insertimisel paneb korraks lukku, loadbalancing kas väljas või sees, realcheck kas on andmebaas töökorras jne


Käivitame PgPool II koos debug vealogiga.
Käivitame PgPool II koos debug vealogiga.
70. rida: 87. rida:
  # pgpool -m fast stop
  # pgpool -m fast stop


'''DB1 (master) seadistamine'''
NB! Pgpoolil oma hba konf, kust saab määrata mis kliendid ligi saavad
 
===DB1 (master) seadistamine===
 
Paigaldame postgresql serveri ja teeme sellele esmase initsialiseerimise


Muudame DB1 masina PostgreSQL parameetreid /etc all asuvas failis: postgresql.conf
Muudame DB1 masina PostgreSQL parameetreid /etc all asuvas failis: postgresql.conf
81. rida: 102. rida:
Seejärel kontrollime DB1 masina võrgureegleid failis: /etc/postgresql/9.5/main/pg_hba.conf
Seejärel kontrollime DB1 masina võrgureegleid failis: /etc/postgresql/9.5/main/pg_hba.conf


  host replication all 192.168.0.0/16 trust #Lubame DB2 yhenduse  
  host replication all 192.168.0.0/16 trust #Lubame DB2 yhenduse
 
Loome DB1 andmebaasis replikatsiooni sloti db2 jaoks


'''DB2 (slave) seadistamine'''
select * from pg_create_physical_replication_slot('db2')
 
===DB2 (slave) seadistamine===
 
Paigaldame postgresql serveri, andmekausta initsialiseerida pole vaja kuna kloonime selle esimesest masinast.


Muudame DB2 masina PostgreSQL parameetreid /etc all asuvas failis: postgresql.conf
Muudame DB2 masina PostgreSQL parameetreid /etc all asuvas failis: postgresql.conf
105. rida: 132. rida:
  # pg_basebackup -v -D main -R -P -h 192.168.0.5
  # pg_basebackup -v -D main -R -P -h 192.168.0.5


Kui andmebaas on kloonitud siis kontrollime taastefaili: ~/9.5/main/recovery.conf
Slave masinas peab olema eraldi recovery.conf. See on vajalik katkestuste korral masteri ülestulekul. Kui andmebaas on kloonitud siis kontrollime taastefaili: ~recovery.conf


Taatefailis määrame ära masina "slave" nime DB2 ning "master" andmebaasi ühenduse info.
Taatefailis määrame ära masina "slave" nime DB2 ning "master" andmebaasi ühenduse info.
116. rida: 143. rida:


  select * from pg_stat_replication;
  select * from pg_stat_replication;
===Lingid===
http://www.pgpool.net/docs/pgpool-II-3.1.17/doc/pgpool-en.html
https://www.fatdragon.me/blog/2016/05/postgresql-ha-pgpool-ii-part-2
https://www.fatdragon.me/blog/2016/05/postgresql-ha-pgpool-ii-part-5

Viimane redaktsioon: 5. märts 2019, kell 12:11

Sissejuhatus

Pgpool-II näol on tegemist vahevaraga, mis töötab PostgreSQL serverite ja andmebaasi kliendi vahel ning võimaldab replikatsiooni ja koormusjagamist.

Clustri loomine

Süsteem mida asume seadistama koosneb kolmest serverist

 tcp 9898       tcp 5432       tcp 5432  
192.168.0.2   192.168.0.5    192.168.0.6
  _____         _____          _____
 |     |       |     |        |     |
 | PG2 |       | DB1 |        | DB2 |
 |_____|       |_____|        |_____|
    |             |              |
    |_____________|______________|
 
   Võrk 192.168.0.0/24

Kliend ühendub sellise seadustuse puhul PG2 peale pordile 9898 ning pgpool2 suunab automaatselt kõik kirjutamised DB1 peale ja päringud võrdselt DB1 ja DB2 serveritele.

DB1 masin võib seejuures juba sisaldada andmebaase ja erinevat infot. Koormusjaoturi ja täiendava andmebaasimasina lisamine infot ei ohusta. Pgpool server võib olla sama võimsusega kui üks master v slave. Tehniliselt pole ka takistust hoida pgpool ja esimene master andmebaas ühes masinas.

PG2 pgpooli serveri seadistus

Paigaldame PgPool II paki.

# sudo apt-get install pgpool2

Pgpooli esmaseks seadistuseks tuleks määrata ära PgPool II PCP seadistuses kasutaja (näiteks postgres mis on vaikimisi kasutaja), mille kaudu hakkab PgPool II suhtlema erinevate andmebaasidega. NB tegemist testiga, reaalses süsteemis võiks kasutada mõnda muunimelist kasutajat

Genereerime postgres kasutaja MD5 parooli. Seda on vaja pgpooli pcp utiliitidega käskude andmiseks

# /usr/sbin/pg_md5 postgres
e8a48653851e28c69d0506508fb27fc5

Ja lisame selle /etc/pgpool-II/pcp.conf konfi

postgres:e8a48653851e28c69d0506508fb27fc5

Seejärel tekitame faili /etc/pgpool2/pgpool.conf järgneva sisuga

pcp_port = 9898
log_destination = 'syslog'
sr_check_user = 'postgres'
sr_check_password = 
health_check_period = 10
health_check_user = 'postgres'
health_check_password = 
recovery_user = 'postgres'
recovery_password = 

Lisame postgresql master ja slave serverid DB1 ja DB2 PgPooli külge. Selleks kirjutame pgpool.conf faili

backend_db1 = '192.168.0.5'
backend_port0 = 5432
backend_weight0 = 1
backend_data_directory0 = '/var/lib/postgresql/9.5/main'
backend_flag0 = 'ALLOW_TO_FAILOVER'  

backend_db2 = '192.168.0.6'
backend_port0 = 5432
backend_weight0 = 1
backend_data_directory0 = '/var/lib/postgresql/9.5/main'
backend_flag0 = 'ALLOW_TO_FAILOVER'

Juhul kui Te ei tea kus asub PostgeSQL andmebaasi andmete hoiustamise koht serveris, siis saate lihtsa SQL päringuga selle teada.

SHOW data_directory;

Lisaks võib üle vaadata seadistuselemendid näiteks kas insertimisel paneb korraks lukku, loadbalancing kas väljas või sees, realcheck kas on andmebaas töökorras jne

Käivitame PgPool II koos debug vealogiga.

# pgpool -f /etc/pgpool2/pgpool.conf -n -d > /var/log/pgpool/pgpool.log 2>&1 &

Kontrollime kas PgPool II töötab, greppides porti 9898.

netstat -ant | grep 9898

Vajadusel saame peatada PgPool II järgneva käsuga.

# pgpool -m fast stop

NB! Pgpoolil oma hba konf, kust saab määrata mis kliendid ligi saavad

DB1 (master) seadistamine

Paigaldame postgresql serveri ja teeme sellele esmase initsialiseerimise

Muudame DB1 masina PostgreSQL parameetreid /etc all asuvas failis: postgresql.conf

listen_addresses = '*'
wal_level = hot_standby
max_replication_slots = 5
max_wal_senders = 5 

Seejärel kontrollime DB1 masina võrgureegleid failis: /etc/postgresql/9.5/main/pg_hba.conf

host replication all 192.168.0.0/16 trust #Lubame DB2 yhenduse

Loome DB1 andmebaasis replikatsiooni sloti db2 jaoks

select * from pg_create_physical_replication_slot('db2')

DB2 (slave) seadistamine

Paigaldame postgresql serveri, andmekausta initsialiseerida pole vaja kuna kloonime selle esimesest masinast.

Muudame DB2 masina PostgreSQL parameetreid /etc all asuvas failis: postgresql.conf

listen_addresses = '*'
wal_level = hot_standby
hot_standby = on
hot_standby_feedback = on 

Alustame DB1 andmebaasi kloonimist DB2 masinasse. Liigume PostgreSQL andmebaasi andmete hoiustamise kataloogi postgres kasutajaga.

# sudo su postgres
# cd ~/9.5

Kustutame "main" kataloogi.

# rm -rf main

Kloonime DB1 andmebaasi DB2 masinasse. NB! Kloonimine võib võtta rohkem aega mahult suuremate andmebaaside puhul.

# pg_basebackup -v -D main -R -P -h 192.168.0.5

Slave masinas peab olema eraldi recovery.conf. See on vajalik katkestuste korral masteri ülestulekul. Kui andmebaas on kloonitud siis kontrollime taastefaili: ~recovery.conf

Taatefailis määrame ära masina "slave" nime DB2 ning "master" andmebaasi ühenduse info.

standby_mode = 'on'
primary_slot_name = 'db2'
primary_conninfo = 'user=postgres host=192.168.0.5 port=5432 sslmode=prefer sslcompression=1 krbsrvname=postgres'  

Kontrollimiseks kas replikatsioon töötab

select * from pg_stat_replication;

Lingid

http://www.pgpool.net/docs/pgpool-II-3.1.17/doc/pgpool-en.html https://www.fatdragon.me/blog/2016/05/postgresql-ha-pgpool-ii-part-2 https://www.fatdragon.me/blog/2016/05/postgresql-ha-pgpool-ii-part-5