ProHoster > Blog > Rianachd > A’ togail cruinneachadh PostgreSQL a tha ri fhaighinn gu mòr a’ cleachdadh Patroni, msaa, HAProxy
A’ togail cruinneachadh PostgreSQL a tha ri fhaighinn gu mòr a’ cleachdadh Patroni, msaa, HAProxy
Tha e dìreach mar sin a thachair, aig an àm a chaidh an duilgheadas a thogail, nach robh eòlas gu leòr agam airson am fuasgladh seo a leasachadh agus a chuir air bhog leis fhèin. Agus an uairsin thòisich mi air Googling.
Chan eil fios agam dè a th’ ann an glacadh, ach airson an umpteenth turas tha mi a’ cur aghaidh ris, eadhon ged a nì mi a h-uile càil ceum air cheum mar a tha san oideachadh, gun ullaich mi an aon àrainneachd ris an ùghdar, nach obraich dad a-riamh. Chan eil dad a dh’ fhios agam dè a th’ ann, ach nuair a choinnich mi ri seo a-rithist, cho-dhùin mi gun sgrìobh mi an oideachadh agam fhìn nuair a dh’ obraicheas a h-uile càil. Aon a bhios gu cinnteach ag obair.
Stiùireadh air an eadar-Lìon a
Tha e dìreach mar sin a’ tachairt nach eil an eadar-lìn a’ fulang le dìth diofar stiùiridhean, clasaichean oideachaidh, ceum air cheum is an leithid. Tha e dìreach mar sin a thachair gun robh e mar dhleastanas orm fuasgladh a leasachadh airson cruinneachadh PostgreSQL a chuir air dòigh agus a thogail gu h-iomchaidh, agus b’ e na prìomh riatanasan airson ath-riochdachadh bhon phrìomh fhrithealaiche gu gach mac-samhail agus solar tèarmann gu fèin-ghluasadach ma bha Prìomh fhrithealaiche ann. fàilligeadh.
Aig an ìre seo, chaidh an cruach de theicneòlasan a chaidh a chleachdadh a dhearbhadh:
HAproxy airson aon àite inntrigidh a chuir air dòigh airson tagraidhean a’ cleachdadh an stòr-dàta
suidheachadh
Airson d ’aire - a’ togail cruinneachadh PostgreSQL a tha ri fhaighinn gu mòr a ’cleachdadh Patroni, msaa, HAProxy.
Chaidh a h-uile gnìomh a dhèanamh air innealan brìgheil le Debian 10 OS air a chuir a-steach.
etc
Chan eil mi a’ moladh a bhith a’ stàladh msaa air na h-aon innealan far am bi patroni agus postgresql suidhichte, leis gu bheil luchd diosc glè chudromach airson msaa. Ach airson adhbharan foghlaim, nì sinn dìreach sin.
Nach stàlaich sinn etcd.
#!/bin/bash
apt-get update
apt-get install etcd
Cuir susbaint ris an fhaidhle /etc/default/etcd
[ball]
ETCD_NAME=nóid dàta1 # ainm òstair an inneil agad
ETCD_DATA_DIR =”/var/lib/etcd/default.etcd”
FEUMAIDH A h-uile seòladh IP a bhith dligheach. FEUMAIDH LISTER PEER, CLIENT etc A CHUID GU SEADH IP AN Aoigh
Is e a’ chiad rud a dh’ fheumas tu a dhèanamh a bhith a’ stèidheachadh trì innealan brìgheil gus am bathar-bog riatanach a chuir a-steach orra. Às deidh dhut na h-innealan a chuir a-steach, ma leanas tu an oideachadh agam, faodaidh tu an sgriobt sìmplidh seo a ruith a nì (cha mhòr) a h-uile càil dhut. A 'ruith mar root.
Thoir an aire gu bheil an sgriobt a’ cleachdadh dreach PostgreSQL 9.6, tha seo mar thoradh air riatanasan a-staigh a’ chompanaidh againn. Cha deach am fuasgladh a dhearbhadh air dreachan eile de PostgreSQL.
An ath rud, anns an fhaidhle /etc/patroni.yml a chruthaich thu, feumaidh tu an t-susbaint a leanas a chuir, gu dearbh ag atharrachadh nan seòlaidhean IP anns a h-uile àite gu na seòlaidhean a chleachdas tu.
Thoir an aire do na beachdan anns an yaml seo. Atharraich na seòlaidhean dhut fhèin air gach inneal sa bhuidheann.
/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
Feumaidh an sgriobt a bhith air a ruith air na trì innealan den bhuidheann, agus feumar an rèiteachadh gu h-àrd a chuir anns an fhaidhle /etc/patroni.yml air a h-uile inneal.
Aon uair ‘s gu bheil thu air na h-obraichean seo a chrìochnachadh air a h-uile inneal sa bhuidheann, ruith an àithne a leanas air gin dhiubh
Fuirich timcheall air 30 diog, agus an uairsin ruith an àithne seo air na h-innealan a tha air fhàgail sa bhuidheann.
HAproxy
Bidh sinn a’ cleachdadh an HAproxy mìorbhaileach gus aon àite inntrigidh a thoirt seachad. Bidh am prìomh fhrithealaiche an-còmhnaidh ri fhaighinn aig seòladh an inneil air a bheil HAproxy air a chleachdadh.
Gus nach dèan an inneal le HAproxy aon phuing fàiligeadh, cuiridh sinn air bhog e ann an soitheach Docker; san àm ri teachd faodar a chuir air bhog a-steach do bhuidheann K8 agus ar cruinneachadh teip a dhèanamh eadhon nas earbsaiche.
Cruthaich eòlaire far an urrainn dhut dà fhaidhle a stòradh - Dockerfile agus haproxy.cfg. Rach thuige.
Faidhle docker
FROM ubuntu:latest
RUN apt-get update
&& apt-get install -y haproxy rsyslog
&& rm -rf /var/lib/apt/lists/*
RUN mkdir /run/haproxy
COPY haproxy.cfg /etc/haproxy/haproxy.cfg
CMD haproxy -f /etc/haproxy/haproxy.cfg && tail -F /var/log/haproxy.log
Bi faiceallach, bu chòir dha na trì loidhnichean mu dheireadh den fhaidhle haproxy.cfg seòlaidhean nan innealan agad a liostadh. Cuiridh HAproxy fios gu Patroni, anns na cinn HTTP bidh am prìomh fhrithealaiche an-còmhnaidh a’ tilleadh 200, agus bidh am mac-samhail an-còmhnaidh a’ tilleadh 503.
haproxy.cfg
global
maxconn 100
defaults
log global
mode tcp
retries 2
timeout client 30m
timeout connect 4s
timeout server 30m
timeout check 5s
listen stats
mode http
bind *:7000
stats enable
stats uri /
listen postgres
bind *:5000
option httpchk
http-check expect status 200
default-server inter 3s fall 3 rise 2 on-marked-down shutdown-sessions
server postgresql1 192.168.0.143:5432 maxconn 100 check port 8008
server postgresql2 192.168.0.144:5432 maxconn 100 check port 8008
server postgresql3 192.168.0.145:5432 maxconn 100 check port 8008
Le bhith anns an eòlaire anns a bheil an dà fhaidhle againn “na laighe,” leig leinn na h-òrdughan airson a bhith a’ pacadh an t-soithich a chuir an gnìomh, a bharrachd air a chuir air bhog le bhith a’ cur air adhart na puirt riatanach:
A-nis, le bhith a’ fosgladh seòladh an inneil agad le HAproxy sa bhrobhsair agus a’ sònrachadh port 7000, chì thu staitistig air a’ bhuidheann agad.
Bidh am frithealaiche a tha na mhaighstir anns an stàit UP, agus bidh na mac-samhail anns an stàit DOWN. Tha seo àbhaisteach, gu dearbh tha iad ag obair, ach tha iad a 'nochdadh mar seo oir tha iad a' tilleadh 503 airson iarrtasan bho HAproxy. Leigidh seo leinn fios a bhith againn an-còmhnaidh dè dìreach de na trì frithealaichean a tha na mhaighstir gnàthach.
co-dhùnadh
Tha thu àlainn! Ann an dìreach 30 mionaidean tha thu air cruinneachadh stòr-dàta sàr-mhath a tha fulangach le lochdan agus àrd-choileanadh a chuir a-steach le ath-riochdachadh sruthadh agus tuiteam air ais fèin-ghluasadach. Ma tha thu an dùil am fuasgladh seo a chleachdadh, thoir sùil air le sgrìobhainnean oifigeil Patroni, agus gu sònraichte leis a’ phàirt aige a thaobh goireas patronictl, a bheir cothrom goireasach air a bhith a’ riaghladh do bhuidheann.