Soa ihany fa tamin'ny fotoana nipoiran'ny olana dia tsy nanana traikefa ampy hamolavolana sy hamoahana io vahaolana io irery aho. Ary avy eo dia nanomboka Googling aho.
Tsy fantatro hoe inona no tratra, fa fanintelony aho dia miatrika ny zava-misy fa na dia manao ny zava-drehetra tsikelikely toy ny ao amin'ny lesona aza aho, manomana tontolo mitovy amin'ny mpanoratra, dia tsy misy na inona na inona mandeha. Tsy fantatro hoe inona no olana, fa rehefa nifanena tamin'izany indray aho dia nanapa-kevitra fa hanoratra ny torolalako manokana aho rehefa mandeha ny zava-drehetra. Iray azo antoka fa hahomby.
TorolΓ lana amin'ny Internet
Sendra ny Internet dia tsy mijaly noho ny tsy fahampian'ny mpitari-dalana isan-karazany, fampianarana, dingana-by-dingana sy ny toy izany. Nitranga izany fa nasaina namolavola vahaolana aho mba handaminana sy hananganana kluster PostgreSQL failover, ny fepetra lehibe indrindra dia ny fandefasana kopia avy amin'ny mpizara Master mankany amin'ny kopia rehetra sy ny fanomezana automatique ny tahiry raha misy mpizara Master. tsy fahombiazana.
Amin'ity dingana ity, nofaritana ny fitambaran'ny teknolojia ampiasaina:
HAproxy amin'ny fandaminana teboka fidirana tokana ho an'ny fampiharana mampiasa ny angon-drakitra
fametrahana
Ho an'ny sainao - manangana cluster PostgreSQL tena azo ampiasaina amin'ny fampiasana Patroni, etcd, HAProxy.
Ny asa rehetra dia natao tamin'ny milina virtoaly misy Debian 10 OS napetraka.
sns
Tsy manoro hevitra ny fametrahana etcd amin'ny milina iray izay misy ny patroni sy postgresql aho, satria ny enta-mavesatra dia tena zava-dehibe amin'ny etcd. Fa ho an'ny tanjona fanabeazana dia hanao izany izahay.
Andao hametraka sns.
#!/bin/bash
apt-get update
apt-get install etcd
Ampio votoaty amin'ny rakitra /etc/default/etcd
[mpikambana]
ETCD_NAME=datanode1 # anarana mpampiantrano ny milinanao
ETCD_DATA_DIR=β/var/lib/etcd/default.etcdβ
TOKONY HO VALIO NY ADDRESS IP REHETRA. LISTER PEER, CLIENT sns TOKONY Apetraka amin'ny adiresy IP an'ny mpampiantrano
Ny zavatra voalohany tokony hataonao dia manangana milina virtoaly telo hametrahana ny rindrambaiko ilaina amin'izy ireo. Aorian'ny fametrahana ny milina, raha manaraka ny torolalako ianao, dia azonao atao ny mampandeha ity script tsotra ity izay (saika) hanao ny zava-drehetra ho anao. Mihazakazaka toy ny faka.
Mariho fa ny script dia mampiasa PostgreSQL version 9.6, izany dia noho ny fepetra takian'ny orinasanay. Ny vahaolana dia tsy nosedraina tamin'ny dikan-teny hafa amin'ny PostgreSQL.
Manaraka izany, ao amin'ny rakitra /etc/patroni.yml vao noforoninao dia mila mametraka ireto atiny manaraka ireto ianao, mazava ho azy fa manova ny adiresy IP amin'ny toerana rehetra amin'ny adiresy ampiasainao.
Tandremo ny fanehoan-kevitra amin'ity yaml ity. Hanova ny adiresy ho anao manokana amin'ny milina tsirairay ao amin'ny cluster.
Ny script dia tsy maintsy atao amin'ny milina telo ao amin'ny cluster, ary tsy maintsy apetraka ao amin'ny rakitra /etc/patroni.yml amin'ny milina rehetra ihany koa ny fanitsiana etsy ambony.
Andraso eo amin'ny 30 segondra eo ho eo, ary ampiharo ity baiko ity amin'ireo milina sisa ao amin'ny cluster.
HAproxy
Mampiasa ny HAproxy mahafinaritra izahay mba hanomezana toerana fidirana tokana. Ny mpizara master dia ho hita foana amin'ny adiresin'ny milina izay ametrahana HAproxy.
Mba tsy hahatonga ny milina miaraka amin'ny HAproxy ho teboka iray tsy fahombiazana, dia halefantsika ao anaty container Docker izy io; amin'ny ho avy dia azo apetraka ao amin'ny cluster K8 izy io ary hahatonga ny cluster failover ho azo antoka kokoa.
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
Tandremo fa ny andalana telo farany amin'ny rakitra haproxy.cfg dia tokony mitanisa ny adiresin'ny milinanao. Hifandray amin'i Patroni ny HAproxy, ao amin'ny lohatenin'ny HTTP dia hiverina 200 foana ny mpizara master, ary hiverina 503 foana ny kopia.
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
Ao amin'ny lahatahiry misy ny rakitra roa "mandainga", andao hanatanteraka ny baiko amin'ny famenoana ny kaontenera, ary koa ny fandefasana azy amin'ny fandefasana ireo seranana ilaina:
Ankehitriny, amin'ny fanokafana ny adiresin'ny masininao miaraka amin'ny HAproxy ao amin'ny navigateur ary mamaritra ny seranan-tsambo 7000 dia hahita antontan'isa amin'ny cluster ianao.
Ny mpizara izay tompony dia ho ao amin'ny fanjakana UP, ary ny kopia dia ho any amin'ny fanjakana DOWN. Ara-dalΓ na izany, raha ny marina dia miasa izy ireo, saingy miseho toy izao izy ireo satria mamerina ny 503 ho an'ny fangatahana avy amin'ny HAproxy. Izany dia ahafahantsika mahafantatra tsara hoe iza amin'ireo mpizara telo no tompony ankehitriny.
famaranana
Tsara tarehy ianao! Tao anatin'ny 30 minitra monja dia nametraka kluster angon-drakitra mahazaka lesoka tsara sy mahomby ianao miaraka amin'ny replication streaming sy fiverenana mandeha ho azy. Raha mikasa ny hampiasa ity vahaolana ity ianao dia jereo miaraka amin'ny antontan-taratasy ofisialy Patroni, ary indrindra amin'ny anjarany momba ny utility patronictl, izay manome fidirana mora amin'ny fitantanana ny cluster anao.