Pagmodelo sa failover clusters base sa PostgreSQL ug Pacemaker

Pasiuna

Pipila ka panahon ang milabay gihatagan ako sa tahas sa paghimo sa usa ka failover cluster alang sa PostgreSQL, naglihok sa daghang mga data center nga konektado sa optical fiber sulod sa usa ka siyudad, ug makasugakod sa kapakyasan (pananglitan, blackout) sa usa ka data center. Isip software nga maoy responsable sa fault tolerance, akong gipili pacemakertungod kay kini ang opisyal nga solusyon gikan sa RedHat alang sa paghimo sa failover clusters. Maayo kini tungod kay ang RedHat naghatag suporta alang niini, ug tungod kay kini nga solusyon kay unibersal (modular). Uban sa tabang niini, mahimong posible nga masiguro ang pagtugot sa sayup dili lamang sa PostgreSQL, kondili sa ubang mga serbisyo, bisan sa paggamit sa standard nga mga module o paghimo niini alang sa piho nga mga panginahanglan.

Kini nga desisyon nagpatunghag usa ka makatarunganon nga pangutana: unsa ka matugoton ang usa ka failover cluster? Aron masusi kini, naghimo ko og test bench nga nagsundog sa lain-laing mga kapakyasan sa mga cluster node, naghulat nga mapasig-uli ang serbisyo, nabawi ang napakyas nga node, ug nagpadayon sa pagsulay sa usa ka loop. Kini nga proyekto orihinal nga gitawag nga hapgsql, apan sa paglabay sa panahon nabuang ako sa ngalan, nga adunay usa ra ka bokales. Busa, misugod ko sa pagtawag sa fault-tolerant databases (ug float IP nga nagtudlo kanila) krogan (usa ka karakter gikan sa usa ka dula sa kompyuter diin ang tanan nga importante nga mga organo gikopya), ug ang mga node, mga cluster ug ang proyekto mismo mao ang tuchanka (ang planeta diin nagpuyo ang mga krogans).

Karon gitugotan na sa management ablihi ang proyekto sa open source nga komunidad ubos sa lisensya sa MIT. Ang README sa dili madugay hubaron sa English (tungod kay gilauman nga ang mga nag-unang konsumedor mao ang Pacemaker ug PostgreSQL developers), ug nakahukom ko nga ipresentar ang daan nga Ruso nga bersyon sa README (partially) sa porma niini nga artikulo.

Pagmodelo sa failover clusters base sa PostgreSQL ug Pacemaker

Ang mga pundok gipakatap sa mga virtual machine VirtualBox. Kinatibuk-ang 12 ka virtual machines (36GiB sa kinatibuk-an) ang ipakatap, nga moporma ug 4 ka fault-tolerant clusters (lainlaing mga opsyon). Ang unang duha ka cluster naglangkob sa duha ka PostgreSQL servers, nga nahimutang sa lain-laing mga data centers, ug usa ka komon nga server. pagsaksi c himan sa korum (gi-host sa usa ka barato nga virtual machine sa ikatulo nga sentro sa datos), nga nagsulbad sa kawalay kasiguruhan 50% / 50%, paghatag sa imong boto sa usa sa mga partido. Ikatulo nga cluster sa tulo ka data centers: usa ka agalon, duha ka ulipon, dili himan sa korum. Ang ikaupat nga cluster naglangkob sa upat ka mga PostgreSQL server, duha kada data center: usa ka master, ang uban nga mga replika, ug naggamit usab pagsaksi c himan sa korum. Ang ikaupat makasugakod sa kapakyasan sa duha ka server o usa ka data center. Kini nga solusyon mahimong ma-scale ngadto sa mas daghang gidaghanon sa mga replika kon gikinahanglan.

Tukmang oras nga serbisyo ntpd gi-reconfigure usab alang sa pagtugot sa sayup, apan gigamit niini ang pamaagi mismo ntpd (orphan mode). Gipaambit nga server pagsaksi naglihok isip usa ka sentral nga NTP server, nag-apod-apod sa iyang oras sa tanan nga mga cluster, sa ingon nag-synchronize sa tanan nga mga server sa usag usa. Kung pagsaksi napakyas o nahimulag, unya ang usa sa mga cluster server (sa sulod sa cluster) magsugod sa pag-apod-apod sa iyang oras. Auxiliary caching HTTP proxy gipataas usab sa pagsaksi, uban sa tabang niini, ang ubang mga virtual machine adunay access sa Yum repository. Sa tinuud, ang mga serbisyo sama sa tukma nga oras ug mga proxy lagmit nga i-host sa mga dedikado nga server, apan sa booth sila gi-host sa. pagsaksi lamang sa pagluwas sa gidaghanon sa mga virtual machines ug luna.

Mga Bersyon

v0. Nagtrabaho sa CentOS 7 ug PostgreSQL 11 sa VirtualBox 6.1.

Istruktura sa cluster

Ang tanan nga mga kumpol gidesinyo nga mahimutang sa daghang mga sentro sa datos, gihiusa sa usa ka patag nga network ug kinahanglan nga makasugakod sa kapakyasan o pagkahimulag sa network sa usa ka sentro sa datos. Mao nga dili mahimo gamiton alang sa pagpanalipod batok sa split-utok standard nga teknolohiya sa Pacemaker nga gitawag STONITH (Ipana Ang Ubang Node Sa Ulo) o fencing. Ang esensya niini: kung ang mga node sa cluster magsugod sa pagduda nga adunay usa ka butang nga sayup sa pipila ka mga node, wala kini pagtubag o dili husto nga paggawi, nan pugson nila kini nga gipalong pinaagi sa "gawas" nga mga aparato, pananglitan, usa ka IPMI o UPS control card . Apan kini molihok lamang sa mga kaso diin, kung adunay usa ka kapakyasan, ang IPMI o UPS server nagpadayon sa pagtrabaho. Dinhi kami nagplano sa pagpanalipod batok sa usa ka labi ka labi ka katalagman nga kapakyasan, kung ang tibuuk nga sentro sa datos napakyas (pananglitan, nawad-an sa gahum). Ug sa ingon nga pagdumili, tanan stonith-mga himan (IPMI, UPS, ug uban pa) dili usab molihok.

Hinuon, ang sistema gibase sa ideya sa korum. Ang tanan nga mga node adunay usa ka tingog, ug kadto lamang nga makakita sa labaw sa katunga sa tanan nga mga node ang mahimong molihok. Kini nga gidaghanon sa "katunga + 1" gitawag korum. Kung ang korum dili maabot, nan ang node nakahukom nga kini anaa sa pag-inusara sa network ug kinahanglan nga i-off ang mga kahinguhaan niini, i.e. mao ni proteksyon sa split-utok. Kung ang software nga responsable niini nga pamatasan dili molihok, nan ang usa ka tigbantay, pananglitan, base sa IPMI, kinahanglan molihok.

Kung ang gidaghanon sa mga node parehas (usa ka cluster sa duha ka mga sentro sa datos), nan ang gitawag nga kawalay kasiguruhan mahimong motungha. 50% / 50% (kalim-an ug kalim-an) sa diha nga ang network isolation nagbahin sa cluster sa eksaktong tunga. Busa, alang sa parehas nga gidaghanon sa mga node, among idugang himan sa korum mao ang usa ka undemanding daemon nga mahimong ilunsad sa labing barato nga virtual machine sa ikatulo nga data center. Gihatag niya ang iyang boto sa usa sa mga bahin (nga iyang nakita), ug sa ingon masulbad ang 50%/50% nga kawalay kasiguruhan. Akong gihinganlan ang server diin ang quorum device ilusad pagsaksi (terminolohiya gikan sa repmgr, ganahan ko niini).

Ang mga kahinguhaan mahimong ibalhin gikan sa usa ka lugar ngadto sa usa ka lugar, pananglitan, gikan sa mga sayup nga server ngadto sa mga himsog, o sa mando sa mga tigdumala sa sistema. Aron mahibal-an sa mga kliyente kung diin nahimutang ang mga kapanguhaan nga ilang gikinahanglan (diin magkonektar?), naglutaw nga IP (float IP). Kini ang mga IP nga ang Pacemaker mahimong molihok sa mga node (ang tanan naa sa usa ka patag nga network). Ang matag usa kanila nagsimbolo sa usa ka kapanguhaan (serbisyo) ug mahimutang kung diin kinahanglan nimo nga magkonektar aron maka-access sa kini nga serbisyo (sa among kaso, usa ka database).

Tuchanka1 (circuit nga adunay compaction)

gambalay

Pagmodelo sa failover clusters base sa PostgreSQL ug Pacemaker

Ang ideya mao nga kami adunay daghang gagmay nga mga database nga adunay gamay nga karga, diin dili mapuslanon ang pagpadayon sa usa ka dedikado nga server sa ulipon sa mainit nga standby mode alang sa pagbasa lamang sa mga transaksyon (dili kinahanglan ang ingon nga pag-usik sa mga kahinguhaan).

Ang matag data center adunay usa ka server. Ang matag server adunay duha ka PostgreSQL instances (sa PostgreSQL terminology gitawag sila og clusters, apan aron malikayan ang kalibog tawgon ko sila og mga instances (pinaagi sa analogy sa ubang mga database), ug tawgon lang nako ang Pacemaker clusters clusters). Ang usa ka pananglitan naglihok sa master mode, ug naghatag lamang kini og mga serbisyo (ang float IP lang ang modala niini). Ang ikaduha nga higayon nagtrabaho isip usa ka ulipon alang sa ikaduha nga sentro sa datos, ug maghatag og mga serbisyo lamang kung mapakyas ang agalon niini. Tungod kay kadaghanan sa mga panahon usa ra ka higayon gikan sa duha (ang agalon) ang maghatag serbisyo (pagbuhat mga hangyo), ang tanan nga mga kapanguhaan sa server gi-optimize alang sa agalon (gigahin ang memorya alang sa shared_buffers cache, ug uban pa), apan aron ang ikaduha nga higayon usab adunay igo nga mga kapanguhaan (bisan pa alang sa suboptimal nga operasyon pinaagi sa file system cache) sa kaso sa kapakyasan sa usa sa mga data centers. Ang ulipon wala maghatag og mga serbisyo (wala magbuhat og read only nga mga hangyo) atol sa normal nga operasyon sa cluster, aron walay gubat alang sa mga kapanguhaan uban sa agalon sa samang makina.

Sa kaso sa duha ka mga node, ang pagtugot sa sayup posible lamang sa asynchronous replication, tungod kay sa dungan nga replikasyon, ang kapakyasan sa usa ka ulipon mosangpot sa paghunong sa agalon.

Pagkapakyas sa pagsaksi

Pagmodelo sa failover clusters base sa PostgreSQL ug Pacemaker

Pagkapakyas sa pagsaksi (himan sa korum) Akong ikonsiderar lamang ang Tuchanka1 cluster, uban sa tanan nga uban pa kini parehas nga istorya. Kung mapakyas ang saksi, wala’y mabag-o sa istruktura sa cluster, ang tanan magpadayon sa pagtrabaho sa parehas nga paagi. Apan ang korum mahimong 2 sa 3, ug busa ang bisan unsang kapakyasan mahimong makamatay alang sa cluster. Kinahanglan pa kini nga ayohon dayon.

Tuchanka1 pagdumili

Pagmodelo sa failover clusters base sa PostgreSQL ug Pacemaker

Ang pagkapakyas sa usa sa mga sentro sa datos alang sa Tuchanka1. Niini nga kaso pagsaksi nagboto sa ikaduha nga node sa ikaduha nga sentro sa datos. Didto, ang kanhing ulipon nahimong agalon, isip resulta, ang duha ka agalon nagtrabaho sa samang server ug ang duha sa ilang float IPs nagtudlo kanila.

Tuchanka2 (klasikal)

gambalay

Pagmodelo sa failover clusters base sa PostgreSQL ug Pacemaker

Classic nga laraw sa duha ka node. Ang agalon nagtrabaho sa usa, ang ulipon sa ikaduha. Ang duha makahimo sa mga hangyo (ang ulipon mabasa lamang), mao nga ang duha gipunting sa float IP: ang krogan2 mao ang agalon, ang krogan2s1 mao ang ulipon. Ang agalon ug ang ulipon adunay pagtugot sa sayup.

Sa kaso sa duha ka mga node, ang pagtugot sa sayup posible lamang sa asynchronous replication, tungod kay sa dungan nga replikasyon, ang kapakyasan sa ulipon mosangpot sa paghunong sa agalon.

Tuchanka2 pagdumili

Pagmodelo sa failover clusters base sa PostgreSQL ug Pacemaker

Kung ang usa sa mga sentro sa datos mapakyas pagsaksi boto para sa ikaduha. Sa bugtong nagtrabaho nga data center, ang agalon ipataas, ug ang duha nga float IPs magtudlo niini: ang agalon ug ang ulipon. Siyempre, ang pananglitan kinahanglan nga ma-configure sa paagi nga kini adunay igo nga mga kapanguhaan (mga limitasyon sa koneksyon, ug uban pa) aron dungan nga dawaton ang tanan nga mga koneksyon ug mga hangyo gikan sa agalon ug ulipon nga float IP. Sa ato pa, sa panahon sa normal nga operasyon kini kinahanglan nga adunay igo nga suplay sa mga limitasyon.

Tuchanka4 (daghang mga ulipon)

gambalay

Pagmodelo sa failover clusters base sa PostgreSQL ug Pacemaker

Laing extreme na. Adunay mga database nga nakadawat og daghang read-only nga mga hangyo (usa ka tipikal nga kaso sa usa ka high-load nga site). Ang Tuchanka4 usa ka sitwasyon diin mahimong adunay tulo o labaw pa nga mga ulipon nga magdumala sa maong mga hangyo, apan dili pa kaayo daghan. Uban sa usa ka daghan kaayo nga mga ulipon, kinahanglan nga mag-imbento sa usa ka hierarchical replication system. Sa pinakagamay nga kaso (sa hulagway), ang matag usa sa duha ka mga data center adunay duha ka mga server, ang matag usa adunay usa ka PostgreSQL nga pananglitan.

Ang laing bahin niini nga laraw mao nga posible na ang pag-organisar sa usa ka dungan nga pagkopya. Gi-configure kini aron makopya, kung mahimo, sa lain nga sentro sa datos, imbes sa usa ka kopya sa parehas nga sentro sa datos sa master. Ang agalon ug ang matag ulipon gitudlo sa usa ka float IP. Maayo na lang, tali sa mga ulipon kinahanglan nga balansehon ang mga hangyo sa bisan unsang paagi sql proxy, pananglitan, sa bahin sa kliyente. Ang lain-laing mga matang sa mga kliyente mahimong magkinahanglan og lain-laing mga matang sql proxy, ug ang mga developer lang sa kliyente ang nahibal-an kung kinsa ang nanginahanglan. Kini nga pag-andar mahimong ipatuman bisan sa usa ka eksternal nga daemon o sa usa ka librarya sa kliyente (koneksyon pool), ug uban pa. Kining tanan labaw pa sa hilisgutan sa usa ka failover database cluster (failover SQL proxy mahimong ipatuman nga independente, kauban ang pagtugot sa sayup sa kliyente).

Tuchanka4 pagdumili

Pagmodelo sa failover clusters base sa PostgreSQL ug Pacemaker

Kung ang usa ka data center (pananglitan, duha ka server) mapakyas, ang saksi moboto sa ikaduha. Ingon usa ka sangputanan, adunay duha ka mga server nga nagdagan sa ikaduha nga sentro sa datos: ang usa nagpadagan sa usa ka agalon, ug ang master float IP nagpunting niini (alang sa pagdawat sa mga hangyo sa pagbasa-sulat); ug sa ikaduha nga server adunay usa ka ulipon nga nagdagan nga adunay dungan nga pagkopya, ug ang usa sa mga ulipon nga float IP nagpunting niini (alang sa mga hangyo nga basahon lamang).

Ang una nga butang nga matikdan mao nga dili tanan nga mga slave float IP mahimong mga trabahante, apan usa ra. Ug sa pagtrabaho uban niini sa husto nga kini mao ang gikinahanglan nga sql proxy gi-redirect ang tanan nga mga hangyo sa nahabilin nga float IP; ug kung sql proxy dili, unya mahimo nimong ilista ang tanan nga float IP nga mga ulipon nga gibulag sa mga koma sa URL sa koneksyon. Sa niini nga kaso, uban sa libpq ang koneksyon mao ang una nga nagtrabaho nga IP, kini gihimo sa awtomatikong sistema sa pagsulay. Tingali sa ubang mga librarya, pananglitan, JDBC, dili kini molihok ug kinahanglan sql proxy. Gihimo kini tungod kay ang mga float IP alang sa mga ulipon gidid-an nga dungan nga ipataas sa usa ka server, aron sila parehas nga iapod-apod sa mga slave server kung adunay daghan kanila nga nagdagan.

Ikaduha: bisan kung adunay pagkapakyas sa data center, ang dungan nga pagkopya ipadayon. Ug bisan kung mahitabo ang usa ka sekundaryong kapakyasan, nga mao, ang usa sa duha nga mga server sa nahabilin nga sentro sa datos napakyas, ang cluster, bisan kung kini mohunong sa paghatag serbisyo, magpabilin gihapon ang kasayuran bahin sa tanan nga nahimo nga mga transaksyon diin kini naghatag kumpirmasyon sa komit. (walay impormasyon sa pagkawala sa kaso sa ikaduha nga kapakyasan).

Tuchanka3 (3 data centers)

gambalay

Pagmodelo sa failover clusters base sa PostgreSQL ug Pacemaker

Kini usa ka cluster alang sa usa ka sitwasyon diin adunay tulo ka bug-os nga naglihok nga mga sentro sa datos, nga ang matag usa adunay hingpit nga naglihok nga database server. Niini nga kaso himan sa korum dili kinahanglan. Ang usa ka sentro sa datos adunay kawani sa usa ka agalon, ang laing duha gisangkapan sa mga ulipon. Ang replikasyon dungan, type ANY (slave1, slave2), nga mao, ang kliyente makadawat og commit confirmation kung ang bisan kinsa sa mga ulipon mao ang unang motubag nga iyang gidawat ang commit. Ang mga kapanguhaan gipakita sa usa ka float IP alang sa agalon ug duha alang sa mga ulipon. Dili sama sa Tuchanka4, ang tanan nga tulo ka float IPs kay fault-tolerant. Aron mabalanse ang read-only SQL nga mga pangutana nga imong magamit sql proxy (nga adunay lahi nga pagtugot sa sayup), o i-assign ang usa ka slave float IP sa katunga sa mga kliyente, ug ang laing katunga sa ikaduha.

Tuchanka3 pagdumili

Pagmodelo sa failover clusters base sa PostgreSQL ug Pacemaker

Kung ang usa sa mga data center mapakyas, duha ang magpabilin. Sa usa, ang master ug float IP gikan sa agalon gipataas, sa ikaduha - ang ulipon ug pareho nga ulipon float IPs (ang pananglitan kinahanglan nga adunay doble nga reserba sa mga kapanguhaan aron madawat ang tanan nga koneksyon gikan sa duha nga ulipon float IPs). Ang dungan nga pagkopya tali sa mga agalon ug mga ulipon. Usab, ang cluster magtipig og impormasyon mahitungod sa nahimo ug nakumpirma nga mga transaksyon (walay pagkawala sa impormasyon) sa panghitabo sa pagkaguba sa duha ka mga sentro sa datos (kung dili kini malaglag sa dungan).

Nakahukom ko nga dili iapil ang usa ka detalyado nga paghulagway sa istruktura sa file ug pag-deploy. Bisan kinsa nga gusto nga magdula-dula makabasa niini tanan sa README. Naghatag lang ako usa ka paghulagway sa awtomatiko nga pagsulay.

Awtomatikong sistema sa pagsulay

Aron masulayan ang pagtugot sa kasaypanan sa mga kumpol pinaagi sa pagsundog sa lainlaing mga sayup, usa ka awtomatikong sistema sa pagsulay ang gihimo. Gilunsad pinaagi sa script test/failure. Mahimong gamiton sa script isip mga parameter ang gidaghanon sa mga cluster nga gusto nimong sulayan. Pananglitan kini nga sugo:

test/failure 2 3

sulayan lang ang ikaduha ug ikatulo nga cluster. Kung ang mga parameter wala gitakda, nan ang tanan nga mga cluster pagasulayan. Ang tanan nga mga cluster gisulayan nga managsama, ug ang resulta gipakita sa tmux panel. Ang Tmux naggamit sa usa ka dedikado nga tmux server, aron ang script mahimong ipadagan gikan sa ubos sa default tmux, nga moresulta sa usa ka nested tmux. Girekomenda nako ang paggamit sa terminal sa usa ka dako nga bintana ug adunay gamay nga font. Sa wala pa magsugod ang pagsulay, ang tanan nga mga virtual nga makina ibalik sa usa ka snapshot sa oras nga makompleto ang script setup.

Pagmodelo sa failover clusters base sa PostgreSQL ug Pacemaker

Ang terminal gibahin sa mga kolum sumala sa gidaghanon sa mga cluster nga gisulayan; sa default (sa screenshot) adunay upat. Akong ihulagway ang mga sulod sa mga kolum gamit ang pananglitan sa Tuchanka2. Ang mga panel sa screenshot gi-numero:

  1. Ang mga estadistika sa pagsulay gipakita dinhi. Mga Kolum:
    • kapakyasan β€” ang ngalan sa pagsulay (function sa script) nga nagsunod sa sayup.
    • Reaksiyon β€” aritmetikong aberids nga oras sa mga segundo diin ang cluster nabawi ang pagpaandar niini. Gisukod kini gikan sa pagsugod sa script nga nagsundog sa usa ka sayup hangtod sa higayon nga ang cluster nagpabalik sa iyang gamit ug makapadayon sa paghatag serbisyo. Kung ang oras mubo ra, pananglitan, unom ka segundo (kini mahitabo sa mga pungpong nga adunay daghang mga ulipon (Tuchanka3 ug Tuchanka4)), kini nagpasabut nga ang sayup naa sa asynchronous nga ulipon ug wala makaapekto sa pasundayag sa bisan unsang paagi; wala’y mga switch sa estado sa cluster.
    • paglihay - nagpakita sa pagkaylap (tukma) sa bili Reaksiyon gamit ang standard deviation method.
    • ihap β€” kapila gihimo kini nga pagsulay.
  2. Ang usa ka mubo nga log nagtugot kanimo sa pagtimbang-timbang kung unsa ang karon nga gihimo sa cluster. Ang numero sa iteration (pagsulay), timestamp ug ngalan sa operasyon gipakita. Ang pagdagan nga taas kaayo (> 5 ka minuto) nagpaila sa usa ka problema.
  3. kasingkasing (kasingkasing) - kasamtangan nga panahon. Alang sa biswal nga pagsusi sa pasundayag agalon Ang kasamtangan nga oras kanunay nga gisulat sa lamesa niini gamit ang float IP master. Kung malampuson, ang resulta gipakita sa kini nga panel.
  4. gibunalan (pulso) - "kasamtangan nga panahon", nga kaniadto girekord sa script kasingkasing sa master, karon basaha gikan sa ulipon pinaagi sa float IP niini. Nagtugot kanimo sa biswal nga pagsusi sa pasundayag sa ulipon ug pagkopya. Sa Tuchanka1 walay mga ulipon nga adunay float IP (walay mga ulipon nga naghatag serbisyo), apan adunay duha ka mga higayon (DBs), mao nga dili kini ipakita dinhi. gibunalanug kasingkasing ikaduhang higayon.
  5. Pag-monitor sa kahimsog sa cluster gamit ang utility pcs mon. Nagpakita sa istruktura, pag-apod-apod sa mga kapanguhaan sa mga node ug uban pang mapuslanon nga kasayuran.
  6. Ang pagmonitor sa sistema gikan sa matag virtual machine sa cluster gipakita dinhi. Mahimong adunay daghang ingon nga mga panel depende kung pila ang mga virtual machine nga adunay cluster. Duha ka graph Pagkarga sa CPU (mga virtual nga makina adunay duha ka mga processor), ngalan sa virtual machine, System Load (gitawag nga Load Average tungod kay kini nag-average sa 5, 10 ug 15 minutos), pagproseso sa datos ug alokasyon sa memorya.
  7. Pagsubay sa script nga nagpahigayon sa pagsulay. Kung adunay usa ka malfunction - usa ka kalit nga paghunong sa operasyon o usa ka wala’y katapusan nga siklo sa paghulat - dinhi makita nimo ang hinungdan sa kini nga pamatasan.

Ang pagsulay gihimo sa duha ka yugto. Una, ang script moagi sa tanan nga mga matang sa mga pagsulay, random nga pagpili sa usa ka virtual nga makina diin magamit kini nga pagsulay. Pagkahuman usa ka walay katapusan nga siklo sa pagsulay ang gihimo, ang mga virtual nga makina ug ang sayup gipili nga random matag higayon. Ang kalit nga pagtapos sa script sa pagsulay (ubos nga panel) o usa ka walay katapusan nga loop sa paghulat alang sa usa ka butang (> 5 minuto nga oras sa pagpatuman alang sa usa ka operasyon, kini makita sa pagsubay) nagpakita nga ang pipila nga mga pagsulay sa kini nga cluster napakyas.

Ang matag pagsulay naglangkob sa mosunod nga mga operasyon:

  1. Ilunsad ang usa ka function nga nagsundog sa usa ka sayup.
  2. Andam? β€” paghulat sa cluster nga mapasig-uli (sa diha nga ang tanan nga mga serbisyo gihatag).
  3. Nagpakita sa cluster recovery timeout (Reaksiyon).
  4. Maayo - ang cluster "giayo." Human nga kini kinahanglan nga mobalik sa usa ka bug-os nga operational nga kahimtang ug andam alang sa sunod nga malfunction.

Ania ang usa ka lista sa mga pagsulay nga adunay paghulagway sa ilang gibuhat:

  • ForkBomb: Naghimo og "Out of memory" gamit ang fork bomb.
  • OutOfSpace: Puno ang hard drive. Apan ang pagsulay labi ka simbolo; uban ang dili hinungdanon nga pagkarga nga gihimo sa panahon sa pagsulay, ang PostgreSQL kasagaran dili mapakyas kung puno ang hard drive.
  • Postgres-PAPATAY: mipatay sa PostgreSQL gamit ang command killall -KILL postgres.
  • Postgres-STOP: nagbitay sa PostgreSQL nga sugo killall -STOP postgres.
  • Pagpatay: "de-energizes" ang virtual machine gamit ang command VBoxManage controlvm "Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΠΊΠ°" poweroff.
  • Reset: nag-overload sa virtual machine gamit ang command VBoxManage controlvm "Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΠΊΠ°" reset.
  • SBD-STOP: gisuspinde ang demonyo sa SBD sa mando killall -STOP sbd.
  • Pag-shutdown: nagpadala ug sugo sa virtual machine pinaagi sa SSH systemctl poweroff, ang sistema maayo nga nagsira.
  • Unlink: network isolation, command VBoxManage controlvm "Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΠΊΠ°" setlinkstate1 off.

Pagkompleto sa pagsulay gamit ang standard tmux "kill-window" nga sugo Ctrl-b &, o ang "detach-client" nga sugo Ctrl-b d: Niini nga punto ang pagsulay natapos, ang tmux nagsira, ang mga virtual nga makina gipalong.

Mga problema nga giila sa panahon sa pagsulay

  • Sa pagkakaron tigbantay nga demonyo sbd nagtrabaho sa pagpahunong sa mga naobserbahan nga mga daemon, apan dili sa pagyelo kanila. Ug, isip resulta, mga kasaypanan nga mosangpot sa pagyelo lamang Corosync ΠΈ pacemaker, pero dili nagbitay sbd. Alang sa pagsusi Corosync Naa na PR#83 (sa GitHub sa sbd), gidawat sa thread agalon. Sila misaad (sa PR#83) nga adunay usa ka butang nga susama sa Pacemaker, ako nanghinaut nga pinaagi sa PulaHat 8 buhaton. Apan ang ingon nga mga "malfunctions" mga pangagpas ug dali nga masundog sa artipisyal nga paggamit, pananglitan, killall -STOP corosync, pero dili gyud magkita sa tinuod nga kinabuhi.

  • Π£ pacemaker sa bersyon alang sa CentOS 7 sayop nga gitakda sync_timeout Ρƒ himan sa korum, isip resulta kung napakyas ang usa ka node, adunay posibilidad nga ang ikaduha nga node nag-reboot usab, diin ang agalon mobalhin unta. Giayo pinaagi sa pagpadako sync_timeout Ρƒ himan sa korum sa panahon sa pag-deploy (sa script setup/setup1). Kini nga pagbag-o wala gidawat sa mga nag-develop pacemaker, sa baylo sila misaad sa pagdesinyo pag-usab sa imprastraktura sa ingon nga paagi (sa pipila ka wala matino nga umaabot) nga kini nga timeout awtomatikong kalkulado.

  • Kung ang database configuration nagtino niana LC_MESSAGES (mga text message) Mahimong gamiton ang Unicode, e.g. ru_RU.UTF-8, unya sa pagsugod postgres sa usa ka palibot diin ang lokal dili UTF-8, ingon sa usa ka walay sulod nga palibot (dinhi pacemaker+pgsqlms(paf) midagan postgres) unya ang log adunay mga marka sa pangutana imbes nga mga letra nga UTF-8. Ang mga nag-develop sa PostgreSQL wala magkauyon kung unsa ang buhaton sa kini nga kaso. Kini gasto, kinahanglan nimo nga i-install LC_MESSAGES=en_US.UTF-8 kung nag-configure (naghimo) usa ka pananglitan sa database.

  • Kung gitakda ang wal_receiver_timeout (sa default kini 60s), unya sa panahon sa pagsulay sa PostgreSQL-STOP sa master sa tuchanka3 ug tuchanka4 clusters Ang pagkopya dili magkonektar pag-usab sa bag-ong agalon. Ang pagkopya didto nagkadungan, mao nga dili lamang ang ulipon mihunong, kondili usab ang bag-ong agalon. Naglihok pinaagi sa pagbutang sa wal_receiver_timeout=0 kung gi-configure ang PostgreSQL.

  • Usahay akong naobserbahan ang replikasyon nga nag-freeze sa PostgreSQL sa ForkBomb test (memory overflow). Pagkahuman sa ForkBomb, usahay ang mga ulipon mahimong dili magkonektar pag-usab sa bag-ong agalon. Nasugatan ra nako kini sa tuchanka3 ug tuchanka4 clusters, diin ang agalon nagyelo tungod sa dungan nga pagkopya. Ang problema nawala sa iyang kaugalingon pagkahuman sa taas nga panahon (mga duha ka oras). Dugang panukiduki ang gikinahanglan aron matul-id kini. Ang mga simtomas parehas sa miaging bug, nga gipahinabo sa lahi nga hinungdan, apan adunay parehas nga sangputanan.

Krogan nga hulagway gikuha gikan sa abnormal Art uban sa pagtugot sa tagsulat:

Pagmodelo sa failover clusters base sa PostgreSQL ug Pacemaker

Source: www.habr.com

Idugang sa usa ka comment