Nws tsuas yog tshwm sim thaum lub sijhawm teeb meem tshwm sim, kuv tsis muaj kev paub txaus los tsim thiab tso tawm qhov kev daws teeb meem no ib leeg. Thiab ces kuv pib Googling.
Kuv tsis paub tias qhov ntes yog dab tsi, tab sis rau lub sijhawm umpteenth kuv tau ntsib nrog qhov tseeb tias txawm tias kuv ua txhua kauj ruam los ntawm kauj ruam raws li hauv kev qhia, npaj ib puag ncig zoo li tus sau, ces tsis muaj dab tsi ua haujlwm. Kuv tsis paub dab tsi yog qhov teeb meem, tab sis thaum kuv ntsib qhov no dua, kuv txiav txim siab tias kuv yuav sau kuv tus kheej cov lus qhia thaum txhua yam ua haujlwm. Ib qho uas yuav twv yuav raug hu ua haujlwm.
Cov lus qhia hauv Internet
Nws tsuas yog tshwm sim tias Internet tsis raug kev txom nyem los ntawm qhov tsis muaj ntau yam kev qhia, kev qhia, ib kauj ruam dhau los thiab lwm yam. Nws tsuas yog tshwm sim uas kuv tau ua haujlwm los tsim cov kev daws teeb meem rau kev teeb tsa yooj yim thiab txhim kho qhov ua tsis tiav PostgreSQL pawg, cov kev cai tseem ceeb uas tau tshaj tawm cov ntawv luam tawm los ntawm Master server rau txhua qhov kev hloov pauv thiab tsis siv neeg muab kev khaws cia hauv qhov xwm txheej ntawm Master server. ua tsis tiav.
Nyob rau theem no, pawg ntawm technologies siv tau txiav txim siab:
Thawj qhov koj yuav tsum tau ua yog teeb tsa peb lub tshuab virtual los nruab cov software tsim nyog rau lawv. Tom qab txhim kho cov tshuab, yog tias koj ua raws li kuv cov lus qhia, koj tuaj yeem khiav cov ntawv yooj yim no uas yuav (yuav luag) ua txhua yam rau koj. Khiav li hauv paus.
Thov nco ntsoov tias tsab ntawv siv PostgreSQL version 9.6, qhov no yog vim qhov xav tau sab hauv ntawm peb lub tuam txhab. Cov kev daws teeb meem tsis tau raug sim rau lwm cov versions ntawm PostgreSQL.
Tom ntej no, hauv /etc/patroni.yml cov ntaub ntawv koj nyuam qhuav tsim, koj yuav tsum tso cov ntsiab lus hauv qab no, tau kawg hloov chaw nyob IP hauv txhua qhov chaw mus rau qhov chaw nyob uas koj siv.
Ua tib zoo mloog cov lus hauv no yaml. Hloov chaw nyob rau koj tus kheej ntawm txhua lub tshuab hauv pawg.
/etc/patroni.yml
scope: pgsql # должно быть одинаковым на всех нодах
namespace: /cluster/ # должно быть одинаковым на всех нодах
name: postgres1 # должно быть разным на всех нодах
restapi:
listen: 192.168.0.143:8008 # адрес той ноды, в которой находится этот файл
connect_address: 192.168.0.143:8008 # адрес той ноды, в которой находится этот файл
etcd:
hosts: 192.168.0.143:2379,192.168.0.144:2379,192.168.0.145:2379 # перечислите здесь все ваши ноды, в случае если вы устанавливаете etcd на них же
# this section (bootstrap) will be written into Etcd:/<namespace>/<scope>/config after initializing new cluster
# and all other cluster members will use it as a `global configuration`
bootstrap:
dcs:
ttl: 100
loop_wait: 10
retry_timeout: 10
maximum_lag_on_failover: 1048576
postgresql:
use_pg_rewind: true
use_slots: true
parameters:
wal_level: replica
hot_standby: "on"
wal_keep_segments: 5120
max_wal_senders: 5
max_replication_slots: 5
checkpoint_timeout: 30
initdb:
- encoding: UTF8
- data-checksums
- locale: en_US.UTF8
# init pg_hba.conf должен содержать адреса ВСЕХ машин, используемых в кластере
pg_hba:
- host replication postgres ::1/128 md5
- host replication postgres 127.0.0.1/8 md5
- host replication postgres 192.168.0.143/24 md5
- host replication postgres 192.168.0.144/24 md5
- host replication postgres 192.168.0.145/24 md5
- host all all 0.0.0.0/0 md5
users:
admin:
password: admin
options:
- createrole
- createdb
postgresql:
listen: 192.168.0.143:5432 # адрес той ноды, в которой находится этот файл
connect_address: 192.168.0.143:5432 # адрес той ноды, в которой находится этот файл
data_dir: /data/patroni # эту директорию создаст скрипт, описанный выше и установит нужные права
bin_dir: /usr/lib/postgresql/9.6/bin # укажите путь до вашей директории с postgresql
pgpass: /tmp/pgpass
authentication:
replication:
username: postgres
password: postgres
superuser:
username: postgres
password: postgres
create_replica_methods:
basebackup:
checkpoint: 'fast'
parameters:
unix_socket_directories: '.'
tags:
nofailover: false
noloadbalance: false
clonefrom: false
nosync: false
Tsab ntawv yuav tsum tau khiav ntawm tag nrho peb lub tshuab ntawm pawg, thiab cov kev teeb tsa saum toj no yuav tsum tau muab tso rau hauv cov ntaub ntawv /etc/patroni.yml ntawm txhua lub tshuab.
Thaum koj ua tiav cov haujlwm no ntawm txhua lub tshuab hauv pawg, khiav cov lus txib hauv qab no rau ib qho ntawm lawv
Tam sim no, los ntawm kev qhib qhov chaw nyob ntawm koj lub tshuab nrog HAproxy hauv qhov browser thiab qhia qhov chaw nres nkoj 7000, koj yuav pom cov txheeb cais ntawm koj pawg.
Tus neeg rau zaub mov uas yog tus tswv yuav nyob rau hauv lub xeev UP, thiab cov replicas yuav nyob rau hauv lub xeev DOWN. Qhov no yog qhov qub, qhov tseeb lawv ua haujlwm, tab sis lawv tshwm sim li no vim tias lawv rov qab 503 rau kev thov los ntawm HAproxy. Qhov no tso cai rau peb ib txwm paub qhov tseeb ntawm peb lub servers yog tus tswv tam sim no.