Kev ua qauv ntawm pawg ua tsis tiav raws li PostgreSQL thiab Pacemaker

Taw qhia

Qee lub sij hawm dhau los kuv tau muab txoj haujlwm los txhim kho pawg tsis ua haujlwm rau PostgreSQL, kev khiav hauj lwm hauv ntau lub chaw cov ntaub ntawv txuas nrog optical fiber nyob rau hauv ib lub nroog, thiab muaj peev xwm tiv taus qhov tsis ua hauj lwm (piv txwv li, blackout) ntawm ib lub chaw cov ntaub ntawv. Raws li cov software uas yog lub luag haujlwm rau kev zam txim, kuv xaiv pacemakervim tias qhov no yog qhov kev daws teeb meem los ntawm RedHat rau kev tsim cov pawg ua tsis tiav. Nws yog qhov zoo vim tias RedHat muab kev txhawb nqa rau nws, thiab vim tias qhov kev daws teeb meem no yog universal (modular). Nrog nws cov kev pab, nws yuav ua tau kom muaj kev zam txim tsis yog ntawm PostgreSQL nkaus xwb, tab sis kuj ntawm lwm cov kev pabcuam, xws li siv cov qauv qauv lossis tsim lawv rau cov kev xav tau tshwj xeeb.

Qhov kev txiav txim siab no tau tsa ib lo lus nug tsim nyog: yuav ua li cas ua txhaum-tho rau pawg neeg ua txhaum? Txhawm rau tshawb xyuas qhov no, Kuv tau tsim lub rooj ntev zaum sim uas simulates ntau yam kev ua tsis tiav ntawm pawg nodes, tos rau kev pabcuam kom rov qab los, rov ua dua qhov ua tsis tiav, thiab txuas ntxiv mus kuaj hauv lub voj. Qhov project no yog Ameslikas hu ua hapgsql, tab sis dhau sij hawm kuv tau dhuav nrog lub npe, uas tsuas muaj ib lub suab. Yog li ntawd, kuv pib hu cov ntaub ntawv tsis raug cai (thiab ntab IP taw qhia rau lawv) krogan (tus cwj pwm los ntawm kev ua si hauv computer uas txhua lub cev tseem ceeb tau muab luam tawm), thiab cov nodes, pawg thiab qhov project nws tus kheej yog tuchanka (lub ntiaj teb uas cov krogans nyob).

Tam sim no tus tswj tau tso cai qhib qhov project rau cov zej zog qhib hauv qab daim ntawv tso cai MIT. Lub README yuav sai sai no tau muab txhais ua lus Askiv (vim tias nws xav tias cov neeg siv khoom tseem ceeb yuav yog Pacemaker thiab PostgreSQL cov neeg tsim khoom), thiab kuv tau txiav txim siab los nthuav tawm cov qub Lavxias teb sab version ntawm README (ib nrab) hauv daim ntawv no.

Kev ua qauv ntawm pawg ua tsis tiav raws li PostgreSQL thiab Pacemaker

Cov pawg raug xa mus rau ntawm cov tshuab virtual Virtualbox. Tag nrho ntawm 12 lub tshuab virtual (36GiB hauv tag nrho) yuav raug xa mus, uas tsim 4 pawg ua txhaum cai (kev xaiv sib txawv). Thawj ob pawg muaj ob lub PostgreSQL servers, uas nyob hauv cov chaw sib txawv, thiab cov servers sib txawv pov thawj c pawg neeg ntaus ntawv (hosted ntawm lub tshuab virtual pheej yig nyob rau hauv peb qhov chaw cov ntaub ntawv), uas daws qhov tsis paub tseeb 50% / 50%, muab koj pov npav rau ib tog twg. Peb pawg nyob rau hauv peb cov ntaub ntawv chaw: ib tug tswv, ob tug qhev, tsis pawg neeg ntaus ntawv. Pawg plaub muaj plaub lub PostgreSQL servers, ob qho tib si ntawm cov ntaub ntawv chaw: ib tus tswv, tus so replicas, thiab tseem siv pov thawj c pawg neeg ntaus ntawv. Qhov thib plaub tuaj yeem tiv thaiv qhov tsis ua haujlwm ntawm ob lub servers lossis ib lub chaw khaws ntaub ntawv. Qhov kev daws teeb meem no tuaj yeem ntsuas tau ntau dua ntawm cov ntawv luam tawm yog tias tsim nyog.

Kev pabcuam raug sijhawm ntpd ua kuj reconfigured rau txhaum kam rau ua, tab sis nws siv txoj kev nws tus kheej ntpd (hom menyuam ntsuag). Shared server pov thawj ua raws li lub hauv paus NTP server, faib nws lub sijhawm rau txhua pawg, yog li synchronizing tag nrho cov servers nrog ib leeg. Yog pov thawj ua tsis tiav lossis raug cais tawm, tom qab ntawd ib qho ntawm pawg servers (hauv pawg) yuav pib faib nws lub sijhawm. Pab caching HTTP npe kuj tsa rau pov thawj, nrog nws cov kev pab, lwm lub tshuab virtual muaj kev nkag mus rau Yum repositories. Hauv kev muaj tiag, cov kev pabcuam xws li lub sijhawm raug thiab tus neeg sawv cev feem ntau yuav muaj nyob rau ntawm cov servers tshwj xeeb, tab sis hauv lub rooj muag khoom lawv tau tuav ntawm pov thawj tsuas yog txuag tus naj npawb ntawm cov tshuab virtual thiab qhov chaw.

Nqe ntawv no

v0 ua. Ua haujlwm nrog CentOS 7 thiab PostgreSQL 11 ntawm VirtualBox 6.1.

Cluster structure

Txhua pawg yog tsim los nyob rau hauv ntau lub chaw cov ntaub ntawv, ua ke rau hauv ib lub tiaj tus network thiab yuav tsum tiv thaiv tsis ua hauj lwm los yog kev sib cais network ntawm ib lub chaw cov ntaub ntawv. Yog vim li cas yog tsis yooj yim sua siv los tiv thaiv cais-hlwb standard Pacemaker technology hu ua STONITH (Tua Lwm Node Hauv Lub Taub Hau) lossis fencing. Nws cov ntsiab lus: yog tias cov nodes hauv pawg pib xav tias muaj qee yam tsis raug nrog qee lub ntawm, nws tsis teb lossis coj tus cwj pwm tsis raug, ces lawv yuam nws tawm ntawm "sab nraud" cov khoom siv, piv txwv li, IPMI lossis UPS daim npav tswj hwm. . Tab sis qhov no tsuas yog ua haujlwm nyob rau hauv cov xwm txheej uas, thaum muaj ib qho tsis ua haujlwm, IPMI lossis UPS server txuas ntxiv ua haujlwm. Ntawm no peb npaj los tiv thaiv kev puas tsuaj ntau dua, thaum tag nrho cov ntaub ntawv chaw tsis ua haujlwm (piv txwv li, poob lub zog). Thiab nrog xws li ib tug tsis kam, txhua yam pob zeb-cov khoom siv (IPMI, UPS, thiab lwm yam) yuav tsis ua haujlwm.

Hloov chaw, lub kaw lus yog raws li lub tswv yim ntawm pawg. Tag nrho cov nodes muaj lub suab, thiab tsuas yog cov uas tuaj yeem pom ntau tshaj ib nrab ntawm tag nrho cov nodes tuaj yeem ua haujlwm. Qhov ntau ntawm "ib nrab + 1" yog hu ua pawg. Yog hais tias pawg tsis tau mus txog, ces cov node txiav txim siab tias nws yog nyob rau hauv kev sib cais network thiab yuav tsum tau tua nws cov peev txheej, i.e. qhov no yog qhov nws yog kev tiv thaiv lub hlwb. Yog tias cov software uas yog lub luag haujlwm rau tus cwj pwm no tsis ua haujlwm, ces tus saib xyuas, piv txwv li, raws li IPMI, yuav tsum ua haujlwm.

Yog hais tias tus naj npawb ntawm cov nodes yog txawm (ib pawg hauv ob lub chaw khaws ntaub ntawv), ces hu ua qhov tsis paub tseeb yuav tshwm sim 50% / 50% (tsib caug-tsib caug) thaum kev sib cais network faib cov pawg raws nraim hauv ib nrab. Yog li ntawd, rau ib tus naj npawb ntawm cov nodes, peb ntxiv pawg neeg ntaus ntawv yog ib qho undemanding daemon uas tuaj yeem tsim tawm ntawm lub tshuab virtual uas pheej yig tshaj plaws hauv peb qhov chaw cov ntaub ntawv. Nws muab nws pov npav rau ib ntu (uas nws pom), thiab yog li daws qhov 50% / 50% tsis paub meej. Kuv tau muab lub npe rau tus neeg rau zaub mov uas pawg pawg yuav raug tso tawm pov thawj (terminology los ntawm repmgr, Kuv nyiam nws).

Cov peev txheej tuaj yeem txav los ntawm qhov chaw mus rau qhov chaw, piv txwv li, los ntawm cov servers tsis raug mus rau cov neeg noj qab haus huv, lossis ntawm kev hais kom ua ntawm cov thawj coj ua haujlwm. Yog li ntawd cov neeg siv khoom paub qhov chaw uas lawv xav tau nyob rau (qhov twg txuas?), ntab IP (ntab IP). Cov no yog IPs uas Pacemaker tuaj yeem txav mus los ntawm cov nodes (txhua yam nyob hauv lub network tiaj tus). Txhua tus ntawm lawv yog lub cim ntawm cov peev txheej (kev pabcuam) thiab yuav nyob rau qhov chaw koj xav tau txuas txhawm rau txhawm rau nkag mus rau qhov kev pabcuam no (hauv peb qhov xwm txheej, database).

Tuchanka1 (circuit nrog compaction)

Qauv

Kev ua qauv ntawm pawg ua tsis tiav raws li PostgreSQL thiab Pacemaker

Lub tswv yim yog tias peb muaj ntau cov ntaub ntawv me me uas tsis muaj kev thauj khoom, uas nws tsis muaj txiaj ntsig los tswj hwm tus qhev ncaj ncees rau hauv hom kub standby rau kev nyeem ntawv nkaus xwb (tsis tas yuav muaj cov khoom siv pov tseg).

Txhua qhov chaw khaws ntaub ntawv muaj ib lub server. Txhua tus neeg rau zaub mov muaj ob qhov xwm txheej PostgreSQL (hauv PostgreSQL cov lus lawv hu ua pawg, tab sis kom tsis txhob muaj kev ntxhov siab kuv yuav hu rau lawv piv txwv (los ntawm kev sib piv nrog lwm cov databases), thiab kuv tsuas yog hu rau Pacemaker pawg pawg). Ib qho piv txwv ua haujlwm hauv hom tswv, thiab tsuas yog nws muab kev pabcuam (tsuas yog ntab IP ua rau nws). Qhov thib ob piv txwv ua haujlwm ua qhev rau qhov chaw thib ob cov ntaub ntawv, thiab yuav muab kev pabcuam tsuas yog tias nws tus tswv tsis ua haujlwm. Txij li feem ntau ntawm lub sijhawm tsuas yog ib qho piv txwv ntawm ob (tus tswv) yuav muab kev pabcuam (ua raws li kev thov), tag nrho cov kev pabcuam server tau zoo rau tus tswv (nco tau faib rau cov share_buffers cache, thiab lwm yam), tab sis yog li ntawd qhov thib ob piv txwv kuj muaj cov peev txheej txaus (txawm tias yog rau kev ua haujlwm zoo tshaj plaws los ntawm cov ntaub ntawv kaw lus cache) thaum tsis ua haujlwm ntawm ib qho ntawm cov chaw zov me nyuam. Tus qhev tsis muab kev pabcuam (tsis ua raws li kev thov nyeem nkaus xwb) thaum lub sijhawm ua haujlwm ntawm pawg, kom tsis muaj kev ua tsov rog rau cov peev txheej nrog tus tswv ntawm tib lub tshuab.

Nyob rau hauv cov ntaub ntawv ntawm ob lub nodes, kev zam txim tsuas yog ua tau nrog asynchronous replication, txij li thaum nrog synchronous replication, tsis ua hauj lwm ntawm ib tug qhev yuav ua rau kom nres ntawm tus tswv.

Tsis ua tim khawv

Kev ua qauv ntawm pawg ua tsis tiav raws li PostgreSQL thiab Pacemaker

Ua tim khawv (pawg neeg ntaus ntawv) Kuv yuav txiav txim siab tsuas yog rau pawg Tuchanka1, nrog rau tag nrho lwm tus nws yuav yog tib zaj dab neeg. Yog tias ua pov thawj ua tsis tiav, tsis muaj dab tsi yuav hloov pauv hauv pawg pawg, txhua yam yuav ua haujlwm txuas ntxiv ib yam li nws tau ua. Tab sis pawg pawg yuav dhau los ua 2 tawm ntawm 3, thiab yog li ntawd ib qho kev ua tsis tiav tom qab yuav ua rau tuag taus rau pawg. Nws tseem yuav tau kho sai sai.

Tuchanka 1 tsis kam

Kev ua qauv ntawm pawg ua tsis tiav raws li PostgreSQL thiab Pacemaker

Ua tsis tiav ntawm ib qho ntawm cov chaw zov me nyuam rau Tuchanka1. Hauv qhov no pov thawj pov nws pov npav mus rau qhov thib ob ntawm qhov chaw thib ob. Nyob ntawd, tus qhev qub dhau los ua tus tswv, vim li ntawd, ob tus tswv ua haujlwm ntawm tib lub server thiab ob qho tib si ntawm lawv tus IPs ntab taw rau lawv.

Cov 2 (classical)

Qauv

Kev ua qauv ntawm pawg ua tsis tiav raws li PostgreSQL thiab Pacemaker

Classic tswvyim ntawm ob lub nodes. Tus tswv ua haujlwm ntawm ib qho, tus qhev thib ob. Ob leeg tuaj yeem ua tiav kev thov (tus qhev tsuas yog nyeem), yog li ob qho tib si taw qhia los ntawm ntab IP: krogan2 yog tus tswv, krogan2s1 yog qhev. Ob tus tswv thiab tus qhev yuav muaj kev zam txim.

Nyob rau hauv cov ntaub ntawv ntawm ob lub nodes, txhaum kam rau ua tsuas yog ua tau nrog asynchronous replication, vim hais tias nrog synchronous replication, tsis ua hauj lwm ntawm tus qhev yuav ua rau kom nres ntawm tus tswv.

Tuchanka 2 tsis kam

Kev ua qauv ntawm pawg ua tsis tiav raws li PostgreSQL thiab Pacemaker

Yog tias ib qho ntawm cov chaw zov me nyuam tsis ua haujlwm pov thawj votes rau tus thib ob. Ntawm qhov chaw ua haujlwm nkaus xwb, tus tswv yuav raug tsa, thiab ob qho tib si ntab IPs yuav taw tes rau nws: tus tswv thiab tus qhev. Tau kawg, qhov piv txwv yuav tsum tau teeb tsa hauv txoj hauv kev uas nws muaj cov peev txheej txaus (kev sib txuas txwv, thiab lwm yam) rau ib txhij lees txais txhua qhov kev sib txuas thiab kev thov los ntawm tus tswv thiab tus qhev ntab IP. Ntawd yog, thaum lub sijhawm ua haujlwm ib txwm muaj nws yuav tsum muaj kev txwv txaus.

Tuchanka 4 (ntau tus qhev)

Qauv

Kev ua qauv ntawm pawg ua tsis tiav raws li PostgreSQL thiab Pacemaker

Twb yog lwm qhov kawg. Muaj cov ntaub ntawv uas tau txais ntau qhov kev thov nyeem nkaus xwb (ib qho xwm txheej ntawm qhov chaw siab tshaj). Tuchanka4 yog qhov xwm txheej uas tej zaum yuav muaj peb lossis ntau tus qhev los daws cov kev thov no, tab sis tseem tsis muaj ntau. Nrog ntau tus qhev ntau heev, nws yuav tsim nyog los tsim ib qho kev sib txuas ntawm hierarchical. Hauv qhov tsawg kawg nkaus (hauv daim duab), txhua qhov ntawm ob lub chaw khaws ntaub ntawv muaj ob lub servers, txhua tus nrog PostgreSQL piv txwv.

Lwm qhov tshwj xeeb ntawm cov tswv yim no yog tias nws twb muaj peev xwm los teeb tsa ib qho synchronous replication. Nws yog configured replicate, yog hais tias ua tau, mus rau lwm qhov chaw cov ntaub ntawv, es tsis yog rau ib tug replica nyob rau hauv tib lub chaw ntaub ntawv raws li tus tswv. Tus tswv thiab txhua tus qhev raug taw qhia los ntawm tus IP ntab. Hmoov zoo, ntawm cov qhev nws yuav tsim nyog kom sib npaug thov qee yam sql npe, piv txwv li, ntawm tus neeg siv khoom sab. Cov neeg siv khoom sib txawv yuav xav tau ntau hom sql npe, thiab tsuas yog cov neeg tsim khoom paub txog leej twg xav tau qhov twg. Qhov kev ua haujlwm no tuaj yeem siv tau los ntawm tus daemon sab nraud lossis los ntawm lub tsev qiv ntawv tus neeg siv khoom (lub pas dej sib txuas), thiab lwm yam. Tag nrho cov no mus dhau lub ntsiab lus ntawm kev tsis ua haujlwm database pawg (failover SQL npe tuaj yeem siv los ntawm nws tus kheej, ua ke nrog cov neeg siv khoom ua txhaum cai).

Tuchanka 4 tsis kam

Kev ua qauv ntawm pawg ua tsis tiav raws li PostgreSQL thiab Pacemaker

Yog tias ib lub chaw khaws ntaub ntawv (piv txwv li, ob lub servers) ua tsis tiav, pov npav pov npav rau qhov thib ob. Raws li qhov tshwm sim, muaj ob lub servers khiav hauv qhov chaw thib ob: ib qho yog khiav tus tswv, thiab tus tswv ntab IP ntsiab lus rau nws (rau tau txais kev thov nyeem-sau); thiab ntawm ob tus neeg rau zaub mov muaj ib tug qhev khiav nrog synchronous replication, thiab ib qho ntawm tus qhev ntab IPs taw qhia rau nws (rau kev thov nyeem nkaus xwb).

Thawj qhov uas yuav tsum nco ntsoov yog tias tsis yog txhua tus qhev ntab IPs yuav yog cov neeg ua haujlwm, tab sis tsuas yog ib qho xwb. Thiab ua haujlwm nrog nws kom raug nws yuav tsim nyog qhov ntawd sql npe redirected tag nrho cov kev thov mus rau qhov tseem tshuav ntab IP; thiab yog tias sql npe Tsis yog, tom qab ntawd koj tuaj yeem sau tag nrho cov ntab IP qhev sib cais los ntawm commas hauv qhov txuas URL. Hauv qhov no, nrog libpq qhov kev sib txuas yuav yog rau thawj tus IP ua haujlwm, qhov no yog ua tiav hauv qhov kev ntsuas tsis siv neeg. Tej zaum hauv lwm lub tsev qiv ntawv, piv txwv li, JDBC, qhov no yuav tsis ua haujlwm thiab tsim nyog sql npe. Qhov no yog ua tiav vim tias ntab IPs rau cov qhev raug txwv tsis pub tsa ib txhij ntawm ib tus neeg rau zaub mov, yog li ntawd lawv tau sib npaug ntawm cov qhev servers yog tias muaj ob peb ntawm lawv khiav.

Thib ob: txawm tias muaj qhov chaw khaws ntaub ntawv tsis ua haujlwm, synchronous replication yuav raug tswj xyuas. Thiab txawm hais tias qhov tsis ua haujlwm thib ob tshwm sim, uas yog, ib qho ntawm ob lub servers hauv cov ntaub ntawv seem tsis ua haujlwm, pawg, txawm hais tias nws yuav tsum tsis txhob muab kev pabcuam, tseem yuav khaws cov ntaub ntawv hais txog txhua yam kev cog lus uas nws tau muab kev lees paub ntawm kev cog lus. (yuav tsis muaj cov ntaub ntawv poob thaum muaj kev ua tsis tiav theem nrab).

Tuchanka 3 (3 chaw zov me nyuam)

Qauv

Kev ua qauv ntawm pawg ua tsis tiav raws li PostgreSQL thiab Pacemaker

Qhov no yog pawg rau qhov xwm txheej uas muaj peb lub chaw ua haujlwm tag nrho cov ntaub ntawv, txhua tus uas muaj kev ua haujlwm tag nrho database server. Hauv qhov no pawg neeg ntaus ntawv tsis xav tau. Ib lub chaw zov me nyuam yog cov neeg ua haujlwm los ntawm tus tswv, ob qho tib si yog cov neeg ua haujlwm ua qhev. Replication yog synchronous, hom ANY ( qhev 1 , qhev 2 ), uas yog, tus neeg thov yuav tau txais daim ntawv lees paub thaum twg ib tug qhev yog thawj zaug teb tias nws tau lees txais qhov kev cog lus. Cov peev txheej tau qhia los ntawm ib tus ntab IP rau tus tswv thiab ob rau qhev. Tsis zoo li Tuchanka4, tag nrho peb lub ntab IP yog qhov ua txhaum. Txhawm rau sib npaug nyeem cov lus nug SQL nkaus xwb koj tuaj yeem siv sql npe (nrog rau kev ua txhaum cai), lossis muab ib tus qhev ntab IP rau ib nrab ntawm cov neeg siv khoom, thiab ib nrab rau qhov thib ob.

Tuchanka 3 tsis kam

Kev ua qauv ntawm pawg ua tsis tiav raws li PostgreSQL thiab Pacemaker

Yog tias ib qho ntawm cov chaw khaws ntaub ntawv tsis ua haujlwm, ob qho tseem nyob. Hauv ib qho, tus tswv thiab ntab IP los ntawm tus tswv tau tsa, hauv qhov thib ob - tus qhev thiab ob tus qhev ntab IPs (piv txwv li yuav tsum muaj ob npaug ntawm cov peev txheej txhawm rau lees txais txhua qhov kev sib txuas los ntawm ob tus qhev ntab IPs). Synchronous replication ntawm masters thiab qhev. Tsis tas li, pawg yuav khaws cov ntaub ntawv hais txog kev cog lus thiab kev lees paub kev lag luam (yuav tsis muaj cov ntaub ntawv poob) thaum muaj kev puas tsuaj ntawm ob lub chaw khaws ntaub ntawv (yog tias lawv tsis raug rhuav tshem ib txhij).

Kuv txiav txim siab tsis suav nrog cov lus piav qhia ntxaws txog cov qauv ntaub ntawv thiab kev xa tawm. Txhua tus neeg uas xav ua si ib puag ncig tuaj yeem nyeem tag nrho hauv README. Kuv tsuas yog muab cov lus piav qhia ntawm kev ntsuas kev siv tshuab.

Tsis siv neeg kuaj qhov system

Txhawm rau kuaj qhov ua txhaum cai ntawm pawg los ntawm simulating ntau yam faults, ib qho kev xeem tsis siv neeg tau tsim. Launched los ntawm tsab ntawv test/failure. Tsab ntawv tuaj yeem ua raws li cov lej ntawm pawg uas koj xav sim. Piv txwv li no command:

test/failure 2 3

yuav tsuas kuaj qhov thib ob thiab thib peb pawg. Yog tias tsis tau teev tseg, ces txhua pawg yuav raug kuaj. Txhua pawg raug kuaj nyob rau hauv parallel, thiab cov txiaj ntsig tau tshwm sim hauv tmux vaj huam sib luag. Tmux siv lub tmux neeg rau zaub mov tshwj xeeb, yog li tsab ntawv tuaj yeem khiav los ntawm hauv qab tmux, uas ua rau lub zes tmux. Kuv pom zoo kom siv lub davhlau ya nyob twg hauv lub qhov rais loj thiab nrog cov ntawv me me. Ua ntej kev sim pib, tag nrho cov tshuab virtual yog dov rov qab mus rau ib qho snapshot thaum lub sij hawm tsab ntawv ua tiav setup.

Kev ua qauv ntawm pawg ua tsis tiav raws li PostgreSQL thiab Pacemaker

Lub davhlau ya nyob twg tau muab faib ua txhua kab raws li tus naj npawb ntawm pawg tau sim; los ntawm lub neej ntawd (hauv lub screenshot) muaj plaub. Kuv yuav piav qhia txog cov ntsiab lus ntawm cov kab uas siv cov piv txwv ntawm Tuchanka2. Cov panels hauv lub screenshot yog suav nrog:

  1. Kev xeem txheeb cais muaj nyob ntawm no. Kem:
    • tsis ua haujlwm - lub npe ntawm qhov kev xeem (ua haujlwm hauv tsab ntawv) uas ua raws li qhov txhaum.
    • cov tshuaj tiv thaiv - tus lej lej nruab nrab lub sijhawm nyob rau hauv vib nas this thaum lub sijhawm uas pawg tau rov qab los ntawm nws txoj haujlwm. Nws yog ntsuas los ntawm qhov pib ntawm tsab ntawv emulating ib tug txhaum mus txog rau thaum lub sij hawm thaum pawg neeg restores nws functionality thiab muaj peev xwm mus txuas ntxiv muab kev pab cuam. Yog hais tias lub sij hawm luv luv, piv txwv li, rau lub vib nas this (qhov no tshwm sim hauv pawg nrog ntau tus qhev (Tuchanka3 thiab Tuchanka4)), qhov no txhais tau hais tias qhov txhaum yog nyob rau ntawm tus qhev asynchronous thiab tsis cuam tshuam rau kev ua tau zoo; tsis muaj cluster state keyboards.
    • kev sib txawv - qhia qhov sib kis (qhov tseeb) ntawm tus nqi cov tshuaj tiv thaiv siv tus qauv sib txawv.
    • suav - pes tsawg zaus qhov kev sim no tau ua.
  2. Daim ntawv teev luv luv tso cai rau koj los ntsuas seb cov pawg twg tam sim no ua dab tsi. Cov iteration (test) tus naj npawb, timestamp thiab lub npe ntawm kev ua haujlwm tau tshwm sim. Kev khiav ntev dhau (> 5 feeb) qhia tias muaj teeb meem.
  3. lub plawv (lub plawv) - lub sijhawm tam sim no. Rau qhov pom kev ntsuas kev ua tau zoo tus tswv Lub sijhawm tam sim no tau sau tas li rau nws lub rooj siv tus tswv ntab IP. Yog tias ua tiav, cov txiaj ntsig tau tshwm sim hauv lub vaj huam sib luag no.
  4. yeej (pulse) - "lub sijhawm tam sim no", uas tau sau tseg los ntawm tsab ntawv yav dhau los lub plawv rau tswv, tam sim no nyeem los ntawm qhev los ntawm nws cov ntab IP. Tso cai rau koj pom kev ntsuas qhov ua tau zoo ntawm tus qhev thiab rov ua dua. Hauv Tuchanka1 tsis muaj qhev nrog ntab IP (tsis muaj qhev muab kev pabcuam), tab sis muaj ob qhov xwm txheej (DBs), yog li nws yuav tsis qhia ntawm no yeejthiab lub plawv piv txwv thib ob.
  5. Saib xyuas pawg kev noj qab haus huv siv cov khoom siv hluav taws xob pcs mon. Qhia cov qauv, kev faib cov peev txheej hla cov nodes thiab lwm cov ntaub ntawv tseem ceeb.
  6. Kev saib xyuas los ntawm txhua lub tshuab virtual hauv pawg yog tso tawm ntawm no. Tej zaum yuav muaj ntau cov panels nyob ntawm seb muaj pes tsawg lub tshuab virtual uas pawg muaj. Ob daim duab CPU load (lub tshuab virtual muaj ob lub processors), lub npe tshuab virtual, Qhov System Load (lub npe hu ua Load Average vim nws qhov nruab nrab ntau dua 5, 10 thiab 15 feeb), cov ntaub ntawv txheej txheem thiab kev faib lub cim xeeb.
  7. Taug qab ntawm tsab ntawv ua qhov kev sim. Nyob rau hauv qhov kev tshwm sim ntawm ib tug malfunction - ib tug tam sim ntawd cuam tshuam ntawm kev khiav hauj lwm los yog ib tug tas mus li lub voj voog tos - ntawm no koj tuaj yeem pom qhov laj thawj rau tus cwj pwm no.

Kev ntsuam xyuas yog ua nyob rau hauv ob theem. Ua ntej, tsab ntawv mus dhau txhua hom kev xeem, xaiv lub tshuab virtual uas yuav siv qhov kev xeem no. Tom qab ntawd lub voj voog tsis kawg ntawm kev sim ua tiav, cov tshuab virtual thiab qhov txhaum raug xaiv random txhua zaus. Kev txiav tawm tam sim ntawd ntawm cov ntawv xeem (hauv qab vaj huam sib luag) lossis lub voj tsis kawg ntawm kev tos ib yam dab tsi (> 5 feeb ua tiav lub sijhawm rau ib qho haujlwm, qhov no tuaj yeem pom hauv kab) qhia tias qee qhov kev sim ntawm pawg no tau ua tsis tiav.

Txhua qhov kev xeem muaj cov haujlwm hauv qab no:

  1. Tua tawm lub luag haujlwm uas emulates qhov txhaum.
  2. Npaj txhij? - tos kom cov pawg rov qab los (thaum muab tag nrho cov kev pabcuam).
  3. Qhia lub sij hawm rov qab los ntawm pawg (cov tshuaj tiv thaiv).
  4. Txhim kho - cov pawg tab tom raug "kho kho." Tom qab ntawd nws yuav tsum rov qab mus rau lub xeev ua haujlwm tag nrho thiab npaj txhij rau qhov ua tsis tiav tom ntej.

Nov yog cov npe ntawm cov kev xeem nrog cov lus piav qhia ntawm lawv ua dab tsi:

  • ForkBomb: Tsim "Tawm ntawm kev nco" siv rab diav rawg foob pob.
  • OutOfSpace: Lub hard drive puv. Tab sis qhov kev sim no zoo li lub cim; nrog rau qhov tsis tseem ceeb load uas yog tsim thaum lub sij hawm sim, PostgreSQL feem ntau tsis poob thaum lub hard drive puv.
  • Postgres-KEV: tua PostgreSQL nrog cov lus txib killall -KILL postgres.
  • Postgres-STOP: hangs PostgreSQL hais kom ua killall -STOP postgres.
  • Lub Zog: "de-energizes" lub tshuab virtual nrog cov lus txib VBoxManage controlvm "Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΠΊΠ°" poweroff.
  • Pib dua: overloads lub tshuab virtual nrog cov lus txib VBoxManage controlvm "Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΠΊΠ°" reset.
  • SBD-STOP: suspends SBD dab nrog cov lus txib killall -STOP sbd.
  • Xauv: xa cov lus txib mus rau lub tshuab virtual ntawm SSH systemctl poweroff, lub kaw lus kaw zoo zoo.
  • Unlink: network cais, hais kom ua VBoxManage controlvm "Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΠΊΠ°" setlinkstate1 off.

Ua kom tiav kev xeem yog siv tus qauv tmux hais kom ua "tua-qhov rai" Ctrl-b &, los yog "detach-client" hais kom ua Ctrl-b d: ntawm qhov kev xeem no xaus, tmux kaw, cov tshuab virtual raug kaw.

Cov teeb meem raug txheeb xyuas thaum kuaj

  • Lub sijhawm no watchdog dab sbd ua haujlwm ntawm kev txwv tsis pub pom daemons, tab sis tsis khov lawv. Thiab, raws li qhov tshwm sim, kev ua txhaum uas ua rau kom khov xwb Corosync ΠΈ pacemaker, tab sis tsis dai ua sbd... Rau kev kuaj Corosync ua xa PIB #83 (ntawm GitHub ntawm ua sbd), txais rau xov tswv. Lawv tau cog lus (hauv PR # 83) tias yuav muaj qee yam zoo sib xws rau Pacemaker, Kuv vam tias los ntawm Lub kaus mom liab 8 yuav ua. Tab sis xws li "malfunctions" yog speculative thiab tau yooj yim simulated artificially siv, piv txwv li, killall -STOP corosync, tab sis yeej tsis ntsib hauv lub neej tiag tiag.

  • Π£ pacemaker nyob rau hauv lub version rau CentOS 7 teeb tsis raug sync_timeout Ρƒ pawg neeg ntaus ntawvraws li cov txiaj ntsig yog tias ib qho tsis ua tiav, nrog qee qhov tshwm sim qhov thib ob ntawm kuj tseem rov pib dua, uas tus tswv yuav tsum txav mus. Kho los ntawm o sync_timeout Ρƒ pawg neeg ntaus ntawv thaum lub sij hawm deployment (hauv tsab ntawv setup/setup1). Qhov kev hloov kho no tsis tau txais los ntawm cov neeg tsim khoom pacemaker, es tsis txhob lawv tau cog lus tias yuav rov tsim kho cov txheej txheem hauv ib txoj hauv kev (ntawm qee qhov tsis tau hais txog yav tom ntej) tias lub sijhawm no yuav suav tau.

  • Yog hais tias lub database configuration qhia qhov ntawd LC_MESSAGES (cov ntawv nyeem) siv tau Unicode, piv txwv li. ru_RU.UTF-8, ces thaum pib postgres nyob rau hauv ib qho chaw uas lub zos tsis yog UTF-8, hais nyob rau hauv ib qho chaw khoob (ntawm no lub tshuab ntuag+pgsqm ua(paf) runs postgres) ces lub cav yuav muaj cov lus nug tsis yog UTF-8 cov ntawv. Cov neeg tsim khoom PostgreSQL tsis tau pom zoo tias yuav ua li cas rau qhov no. Nws raug nqi, koj yuav tsum tau nruab LC_MESSAGES=en_US.UTF-8 thaum configuring (tsim) ib tug database piv txwv.

  • Yog tias wal_receiver_timeout tau teeb tsa (los ntawm lub neej ntawd nws yog 60s), tom qab ntawd thaum lub sijhawm xeem PostgreSQL-STOP ntawm tus tswv hauv tuchanka3 thiab tuchanka4 pawg replication tsis rov txuas rau tus tswv tshiab. Replication muaj synchronous, yog li tsis tsuas yog tus qhev nres, tab sis kuj tus tswv tshiab. Ua haujlwm ib puag ncig los ntawm kev teeb tsa wal_receiver_timeout = 0 thaum teeb tsa PostgreSQL.

  • Qee lub sij hawm kuv pom replication freezes hauv PostgreSQL hauv ForkBomb xeem (nco overflow). Tom qab ForkBomb, qee zaum cov qhev yuav tsis rov txuas nrog tus tswv tshiab. Kuv tsuas yog ntsib qhov no hauv tuchanka3 thiab tuchanka4 pawg, qhov twg tus tswv froze vim synchronous replication. Qhov teeb meem tau ploj mus ntawm nws tus kheej tom qab lub sijhawm ntev (kwv yees li ob teev). Xav tau kev tshawb fawb ntxiv los kho qhov no. Cov tsos mob zoo ib yam li cov kab mob yav dhau los, uas tshwm sim los ntawm ib qho laj thawj sib txawv, tab sis muaj qhov tshwm sim zoo ib yam.

Krogan duab coj los ntawm Deviant Art nrog kev tso cai ntawm tus sau:

Kev ua qauv ntawm pawg ua tsis tiav raws li PostgreSQL thiab Pacemaker

Tau qhov twg los: www.hab.com

Ntxiv ib saib