Modelu clystyrau methiant yn seiliedig ar PostgreSQL a Pacemaker

Cyflwyniad

Beth amser yn ôl cefais y dasg o ddatblygu clwstwr methu ar gyfer PostgreSQL, yn gweithredu mewn sawl canolfan ddata sydd wedi'u cysylltu gan ffibr optegol o fewn un ddinas, ac yn gallu gwrthsefyll methiant (er enghraifft, blacowt) un ganolfan ddata. Fel y meddalwedd sy'n gyfrifol am goddefgarwch bai, dewisais Crynhoadwroherwydd dyma'r ateb swyddogol gan RedHat ar gyfer creu clystyrau methiant. Mae'n dda oherwydd bod RedHat yn darparu cefnogaeth ar ei gyfer, ac oherwydd bod yr ateb hwn yn gyffredinol (modiwlaidd). Gyda'i help, bydd yn bosibl sicrhau goddefiad o ddiffygion nid yn unig PostgreSQL, ond hefyd gwasanaethau eraill, naill ai gan ddefnyddio modiwlau safonol neu eu creu ar gyfer anghenion penodol.

Cododd y penderfyniad hwn gwestiwn rhesymol: pa mor oddefgar o fai fydd clwstwr methiant? Er mwyn ymchwilio i hyn, datblygais fainc brawf sy'n efelychu methiannau amrywiol ar y nodau clwstwr, yn aros i'r gwasanaeth gael ei adfer, yn adennill y nod a fethwyd, ac yn parhau i brofi mewn dolen. Yr enw gwreiddiol ar y prosiect hwn oedd hapgsql, ond dros amser fe wnes i ddiflasu ar yr enw, a oedd â dim ond un llafariad. Felly, dechreuais alw cronfeydd data sy'n goddef namau (a arnofio IP yn pwyntio atynt) krogan (cymeriad o gêm gyfrifiadurol lle mae'r holl organau pwysig yn cael eu dyblygu), a nodau, clystyrau a'r prosiect ei hun yn tuchanka (y blaned lle mae'r croganau'n byw).

Nawr mae'r rheolwyr wedi caniatáu agor y prosiect i'r gymuned ffynhonnell agored o dan y drwydded MIT. Bydd y README yn cael ei gyfieithu i'r Saesneg yn fuan (oherwydd disgwylir mai'r prif ddefnyddwyr fydd datblygwyr Pacemaker a PostgreSQL), a phenderfynais gyflwyno'r hen fersiwn Rwsiaidd o'r README (yn rhannol) ar ffurf yr erthygl hon.

Modelu clystyrau methiant yn seiliedig ar PostgreSQL a Pacemaker

Defnyddir clystyrau ar beiriannau rhithwir VirtualBox. Bydd cyfanswm o 12 peiriant rhithwir (cyfanswm o 36GiB) yn cael eu defnyddio, sy'n ffurfio 4 clwstwr sy'n goddef diffygion (opsiynau gwahanol). Mae'r ddau glwstwr cyntaf yn cynnwys dau weinydd PostgreSQL, sydd wedi'u lleoli mewn gwahanol ganolfannau data, a gweinydd cyffredin Tystion c dyfais cworwm (wedi'i gynnal ar beiriant rhithwir rhad mewn trydydd canolfan ddata), sy'n datrys ansicrwydd 50% / 50%, gan roi eich pleidlais i un o’r pleidiau. Trydydd clwstwr mewn tair canolfan ddata: un meistr, dau gaethweision, dim dyfais cworwm. Mae'r pedwerydd clwstwr yn cynnwys pedwar gweinydd PostgreSQL, dau i bob canolfan ddata: un meistr, y gweddill replicas, ac mae hefyd yn defnyddio Tystion c dyfais cworwm. Gall y pedwerydd wrthsefyll methiant dau weinydd neu un ganolfan ddata. Gellir graddio'r datrysiad hwn i nifer fwy o atgynyrchiadau os oes angen.

Gwasanaeth amser cywir ntpd hefyd wedi'i ailgyflunio ar gyfer goddefgarwch bai, ond mae'n defnyddio'r dull ei hun ntpd (modd amddifad). Gweinydd a rennir Tystion yn gweithredu fel gweinydd NTP canolog, gan ddosbarthu ei amser i bob clwstwr, a thrwy hynny yn cydamseru pob gweinydd â'i gilydd. Os Tystion yn methu neu'n mynd yn ynysig, yna bydd un o'r gweinyddwyr clwstwr (o fewn y clwstwr) yn dechrau dosbarthu ei amser. Ccaching ategol HTTP dirprwy hefyd a godwyd i Tystion, gyda'i help, mae gan beiriannau rhithwir eraill fynediad i ystorfeydd Yum. Mewn gwirionedd, mae'n debyg y bydd gwasanaethau fel amser cywir a dirprwyon yn cael eu cynnal ar weinyddion pwrpasol, ond yn y bwth maent yn cael eu cynnal ar Tystion dim ond i arbed nifer y peiriannau rhithwir a gofod.

Fersiynau

v0. Yn gweithio gyda CentOS 7 a PostgreSQL 11 ar VirtualBox 6.1.

Strwythur clwstwr

Mae'r holl glystyrau wedi'u cynllunio i gael eu lleoli mewn canolfannau data lluosog, wedi'u cyfuno'n un rhwydwaith gwastad a rhaid iddynt wrthsefyll methiant neu ynysu rhwydwaith un ganolfan ddata. Dyna pam yn amhosib defnyddio ar gyfer amddiffyn yn erbyn hollt-ymennydd technoleg Pacemaker safonol o'r enw STONITH (Saethu Y Nod Arall Yn Y Pen) neu ffensys. Ei hanfod: os yw'r nodau yn y clwstwr yn dechrau amau ​​​​bod rhywbeth o'i le ar ryw nod, nad yw'n ymateb neu'n ymddwyn yn anghywir, yna maen nhw'n ei ddiffodd trwy ddyfeisiau “allanol”, er enghraifft, cerdyn rheoli IPMI neu UPS. . Ond dim ond mewn achosion lle, os bydd un methiant, y bydd y gweinydd IPMI neu UPS yn parhau i weithio y bydd hyn yn gweithio. Yma rydym yn bwriadu amddiffyn rhag methiant llawer mwy trychinebus, pan fydd y ganolfan ddata gyfan yn methu (er enghraifft, yn colli pŵer). A chyda gwrthodiad o'r fath, popeth stonith-devices (IPMI, UPS, ac ati) Ni fydd hefyd yn gweithio.

Yn hytrach, mae’r system yn seiliedig ar y syniad o gworwm. Mae gan bob nod lais, a dim ond y rhai sy'n gallu gweld mwy na hanner yr holl nodau sy'n gallu gweithio. Gelwir y swm hwn o “hanner + 1”. cworwm. Os na chyrhaeddir cworwm, yna mae’r nod yn penderfynu ei fod ar wahân i rwydwaith a rhaid iddo ddiffodd ei adnoddau, h.y. dyma beth ydyw amddiffyniad hollt-ymennydd. Os nad yw'r meddalwedd sy'n gyfrifol am yr ymddygiad hwn yn gweithio, yna bydd yn rhaid i gorff gwarchod, er enghraifft, yn seiliedig ar IPMI, weithio.

Os yw nifer y nodau yn wastad (clwstwr mewn dwy ganolfan ddata), yna gall ansicrwydd fel y'i gelwir godi 50% / 50% (pum deg pum deg) pan fydd ynysu rhwydwaith yn rhannu'r clwstwr yn union yn ei hanner. Felly, ar gyfer eilrif o nodau, rydym yn adio dyfais cworwm yn ellyll diymdrech y gellir ei lansio ar y peiriant rhithwir rhataf mewn trydydd canolfan ddata. Mae'n rhoi ei bleidlais i un o'r segmentau (a wêl), a thrwy hynny yn datrys yr ansicrwydd o 50%/50%. Enwais y gweinydd y bydd y ddyfais cworwm yn cael ei lansio arno Tystion (terminoleg o repmgr, roeddwn i'n ei hoffi).

Gellir symud adnoddau o le i le, er enghraifft, o weinyddion diffygiol i rai iach, neu ar orchymyn gweinyddwyr system. Fel bod cleientiaid yn gwybod ble mae'r adnoddau sydd eu hangen arnynt wedi'u lleoli (ble i gysylltu?), IP fel y bo'r angen (IP arnofio). Mae'r rhain yn IPs y gall Pacemaker eu symud o amgylch nodau (mae popeth ar rwydwaith gwastad). Mae pob un ohonynt yn symbol o adnodd (gwasanaeth) a byddant wedi'u lleoli lle mae angen i chi gysylltu er mwyn cael mynediad i'r gwasanaeth hwn (yn ein hachos ni, cronfa ddata).

Tuchanka1 (cylched gyda chywasgiad)

Strwythur

Modelu clystyrau methiant yn seiliedig ar PostgreSQL a Pacemaker

Y syniad oedd bod gennym lawer o gronfeydd data bach â llwyth isel, y mae'n amhroffidiol cynnal gweinydd caethweision pwrpasol yn y modd parod poeth ar gyfer trafodion darllen yn unig (nid oes angen cymaint o wastraff ar adnoddau).

Mae gan bob canolfan ddata un gweinydd. Mae gan bob gweinydd ddau achos PostgreSQL (yn nherminoleg PostgreSQL fe'u gelwir yn glystyrau, ond er mwyn osgoi dryswch byddaf yn eu galw'n enghreifftiau (trwy gydweddiad â chronfeydd data eraill), a byddaf yn galw clystyrau clystyrau Pacemaker yn unig). Mae un enghraifft yn gweithredu yn y modd meistr, a dim ond mae'n darparu gwasanaethau (dim ond IP arnofio sy'n arwain ato). Mae'r ail achos yn gweithio fel caethwas ar gyfer yr ail ganolfan ddata, a bydd yn darparu gwasanaethau dim ond os bydd ei feistr yn methu. Gan mai dim ond un enghraifft allan o ddau (y meistr) fydd yn darparu gwasanaethau y rhan fwyaf o'r amser (perfformio ceisiadau), mae holl adnoddau'r gweinydd wedi'u hoptimeiddio ar gyfer y meistr (mae cof yn cael ei ddyrannu ar gyfer y storfa shared_buffers, ac ati), ond fel bod yr ail enghraifft hefyd ddigon o adnoddau (er ar gyfer gweithrediad is-optimaidd trwy storfa'r system ffeiliau) rhag ofn y bydd un o'r canolfannau data yn methu. Nid yw'r caethwas yn darparu gwasanaethau (nid yw'n perfformio ceisiadau darllen yn unig) yn ystod gweithrediad arferol y clwstwr, fel nad oes rhyfel am adnoddau gyda'r meistr ar yr un peiriant.

Yn achos dau nod, dim ond gyda dyblygu asyncronig y mae goddefgarwch bai yn bosibl, oherwydd gyda dyblygu cydamserol, bydd methiant caethwas yn arwain at atal y meistr.

Methiant i dystio

Modelu clystyrau methiant yn seiliedig ar PostgreSQL a Pacemaker

Methiant i dyst (dyfais cworwm) Byddaf yn ystyried ar gyfer clwstwr Tuchanka1 yn unig, gyda'r holl eraill yr un stori fydd hi. Os bydd tyst yn methu, ni fydd dim yn newid yn strwythur y clwstwr, bydd popeth yn parhau i weithio yn yr un ffordd ag y gwnaeth. Ond bydd y cworwm yn dod yn 2 allan o 3, ac felly bydd unrhyw fethiant dilynol yn angheuol i’r clwstwr. Bydd yn rhaid ei drwsio ar frys o hyd.

Tuchanka1 gwrthod

Modelu clystyrau methiant yn seiliedig ar PostgreSQL a Pacemaker

Methiant un o'r canolfannau data ar gyfer Tuchanka1. Yn yr achos hwn Tystion yn bwrw ei phleidlais i ail nod mewn ail ganolfan ddata. Yno, mae'r cyn-gaethwas yn troi'n feistr, o ganlyniad, mae'r ddau feistr yn gweithio ar yr un gweinydd ac mae'r ddau IP arnofio yn pwyntio atynt.

Tuchanka2 (clasurol)

Strwythur

Modelu clystyrau methiant yn seiliedig ar PostgreSQL a Pacemaker

Cynllun clasurol o ddau nod. Mae'r meistr yn gweithio ar un, y caethwas ar yr ail. Gall y ddau gyflawni ceisiadau (darllenir y caethwas yn unig), felly mae'r ddau yn cael eu cyfeirio at arnofio IP: krogan2 yw'r meistr, krogan2s1 yw'r caethwas. Bydd gan y meistr a'r caethwas oddef bai.

Yn achos dau nod, dim ond gyda dyblygu asyncronig y mae goddefgarwch bai yn bosibl, oherwydd gyda dyblygu cydamserol, bydd methiant y caethwas yn arwain at atal y meistr.

Tuchanka2 gwrthod

Modelu clystyrau methiant yn seiliedig ar PostgreSQL a Pacemaker

Os bydd un o'r canolfannau data yn methu Tystion pleidleisiau ar gyfer yr ail. Ar yr unig ganolfan ddata sy'n gweithio, bydd y meistr yn cael ei godi, a bydd y ddau IP arnofio yn pwyntio ato: y meistr a'r caethwas. Wrth gwrs, rhaid i'r enghraifft gael ei ffurfweddu yn y fath fodd fel bod ganddo ddigon o adnoddau (terfynau cysylltiad, ac ati) i dderbyn ar yr un pryd yr holl gysylltiadau a chais gan yr IP arnofio meistr a chaethweision. Hynny yw, yn ystod gweithrediad arferol dylai fod â chyflenwad digonol o derfynau.

Tuchanka4 (llawer o gaethweision)

Strwythur

Modelu clystyrau methiant yn seiliedig ar PostgreSQL a Pacemaker

Eisoes pegwn arall. Mae yna gronfeydd data sy'n derbyn llawer o geisiadau darllen yn unig (achos nodweddiadol o safle llwyth uchel). Mae Tuchanka4 yn sefyllfa lle gall fod tri neu fwy o gaethweision i ymdrin â cheisiadau o'r fath, ond nid gormod o hyd. Gyda nifer fawr iawn o gaethweision, bydd angen dyfeisio system atgynhyrchu hierarchaidd. Yn yr achos lleiaf (yn y llun), mae gan bob un o'r ddwy ganolfan ddata ddau weinydd, pob un ag enghraifft PostgreSQL.

Nodwedd arall o'r cynllun hwn yw ei bod eisoes yn bosibl trefnu un atgynhyrchiad cydamserol. Mae wedi'i ffurfweddu i ddyblygu, os yn bosibl, i ganolfan ddata arall, yn hytrach nag i replica yn yr un ganolfan ddata â'r meistr. Mae'r meistr a phob caethwas yn cael eu pwyntio gan IP arnofio. Yn ffodus, rhwng caethweision bydd angen cydbwyso ceisiadau rywsut dirprwy sql, er enghraifft, ar ochr y cleient. Efallai y bydd angen gwahanol fathau o gleientiaid ar wahanol fathau o gleientiaid dirprwy sql, a dim ond datblygwyr cleientiaid sy'n gwybod pwy sydd angen pa un. Gellir gweithredu'r swyddogaeth hon naill ai gan ellyll allanol neu gan lyfrgell cleientiaid (pwll cysylltiad), ac ati. Mae hyn i gyd yn mynd y tu hwnt i bwnc clwstwr cronfa ddata methu (methiant). SQL dirprwy gellir ei weithredu'n annibynnol, ynghyd â goddefgarwch bai cleient).

Tuchanka4 gwrthod

Modelu clystyrau methiant yn seiliedig ar PostgreSQL a Pacemaker

Os bydd un ganolfan ddata (h.y., dau weinydd) yn methu, bydd tyst yn pleidleisio am yr ail. O ganlyniad, mae dau weinydd yn rhedeg yn yr ail ganolfan ddata: mae un yn rhedeg meistr, ac mae'r meistr arnofio IP yn pwyntio ato (ar gyfer derbyn ceisiadau darllen-ysgrifennu); ac ar yr ail weinydd mae caethwas yn rhedeg gydag atgynhyrchu cydamserol, ac mae un o'r IPs arnofio caethweision yn pwyntio ato (ar gyfer ceisiadau darllen yn unig).

Y peth cyntaf i'w nodi yw na fydd pob IP arnofio caethweision yn weithwyr, ond dim ond un. Ac i weithio ag ef yn gywir bydd angen hynny dirprwy sql ailgyfeirio pob cais i'r unig IP arnofio sy'n weddill; ac os dirprwy sql na, yna gallwch chi restru'r holl gaethweision IP arnofio wedi'u gwahanu gan atalnodau yn yr URL cysylltiad. Yn yr achos hwn, gyda libpq bydd y cysylltiad â'r IP gweithredol cyntaf, gwneir hyn yn y system brofi awtomatig. Efallai mewn llyfrgelloedd eraill, er enghraifft, JDBC, ni fydd hyn yn gweithio ac mae'n angenrheidiol dirprwy sql. Gwneir hyn oherwydd bod IPs arnofio ar gyfer caethweision yn cael eu gwahardd rhag cael eu codi ar yr un pryd ar un gweinydd, fel eu bod yn cael eu dosbarthu'n gyfartal ymhlith gweinyddwyr caethweision os oes sawl un ohonynt yn rhedeg.

Yn ail: hyd yn oed os bydd canolfan ddata yn methu, bydd atgynhyrchu cydamserol yn cael ei gynnal. A hyd yn oed os bydd methiant eilaidd yn digwydd, hynny yw, mae un o'r ddau weinydd yn y ganolfan ddata sy'n weddill yn methu, bydd y clwstwr, er y bydd yn rhoi'r gorau i ddarparu gwasanaethau, yn dal i gadw gwybodaeth am yr holl drafodion ymrwymedig y mae wedi rhoi cadarnhad o'r ymrwymiad ar eu cyfer. (ni fydd unrhyw wybodaeth am golled rhag ofn y bydd methiant eilaidd).

Tuchanka3 (3 canolfan ddata)

Strwythur

Modelu clystyrau methiant yn seiliedig ar PostgreSQL a Pacemaker

Mae hwn yn glwstwr ar gyfer sefyllfa lle mae tair canolfan ddata gwbl weithredol, ac mae gan bob un ohonynt weinydd cronfa ddata sy'n gweithredu'n llawn. Yn yr achos hwn dyfais cworwm dim angen. Mae un ganolfan ddata yn cael ei staffio gan feistr, mae'r ddwy arall yn cael eu staffio gan gaethweision. Mae dyblygu yn gydamserol, teipiwch UNRHYW (caethwas 1, caethwas2), hynny yw, bydd y cleient yn derbyn cadarnhad ymrwymiad pan fydd unrhyw un o'r caethweision y cyntaf i ymateb ei fod wedi derbyn yr ymrwymiad. Nodir adnoddau gan un IP arnofio ar gyfer y meistr a dau ar gyfer caethweision. Yn wahanol i Tuchanka4, mae pob un o'r tri IP arnofio yn gallu goddef diffygion. I gydbwyso ymholiadau SQL darllen yn unig y gallwch eu defnyddio dirprwy sql (gyda goddefgarwch fai ar wahân), neu neilltuo un IP arnofio caethweision i hanner y cleientiaid, a'r hanner arall i'r ail.

Tuchanka3 gwrthod

Modelu clystyrau methiant yn seiliedig ar PostgreSQL a Pacemaker

Os bydd un o'r canolfannau data yn methu, mae dwy ar ôl. Mewn un, mae'r meistr a'r IP arnofio gan y meistr yn cael eu codi, yn yr ail - yr IPs arnofio caethweision a'r ddau gaethweision (rhaid i'r achos fod â chronfa ddwbl o adnoddau er mwyn derbyn pob cysylltiad o'r ddau IP fflôt caethweision). Dyblygiad cydamserol rhwng meistri a chaethweision. Hefyd, bydd y clwstwr yn arbed gwybodaeth am drafodion ymrwymedig a chadarn (ni fydd unrhyw golli gwybodaeth) pe bai dwy ganolfan ddata yn cael eu dinistrio (os na chânt eu dinistrio ar yr un pryd).

Penderfynais beidio â chynnwys disgrifiad manwl o strwythur y ffeil a'r defnydd a wneir ohoni. Gall unrhyw un sydd eisiau chwarae o gwmpas ddarllen y cyfan yn y README. Dim ond disgrifiad o brofion awtomataidd yr wyf yn ei ddarparu.

System brofi awtomatig

Er mwyn profi goddefgarwch bai clystyrau trwy efelychu amrywiol ddiffygion, mae system brofi awtomatig wedi'i chreu. Wedi'i lansio gan sgript test/failure. Gall y sgript gymryd fel paramedrau nifer y clystyrau yr ydych am eu profi. Er enghraifft, y gorchymyn hwn:

test/failure 2 3

yn profi'r ail a'r trydydd clwstwr yn unig. Os na nodir paramedrau, yna bydd pob clwstwr yn cael ei brofi. Mae pob clwstwr yn cael ei brofi ochr yn ochr, ac mae'r canlyniad yn cael ei arddangos yn y panel tmux. Mae Tmux yn defnyddio gweinydd tmux pwrpasol, felly gellir rhedeg y sgript o dan tmux rhagosodedig, gan arwain at tmux nythu. Rwy'n argymell defnyddio'r derfynell mewn ffenestr fawr a gyda ffont bach. Cyn i'r profion ddechrau, mae pob peiriant rhithwir yn cael ei rolio'n ôl i giplun ar yr adeg y bydd y sgript yn cael ei chwblhau setup.

Modelu clystyrau methiant yn seiliedig ar PostgreSQL a Pacemaker

Rhennir y derfynell yn golofnau yn ôl nifer y clystyrau sy'n cael eu profi; yn ddiofyn (yn y sgrin) mae pedwar. Byddaf yn disgrifio cynnwys y colofnau gan ddefnyddio enghraifft Tuchanka2. Mae'r paneli yn y sgrin wedi'u rhifo:

  1. Dangosir ystadegau prawf yma. Colofnau:
    • methiant — enw'r prawf (swyddogaeth yn y sgript) sy'n efelychu'r nam.
    • adwaith — amser cyfartalog rhifyddol mewn eiliadau pan adferodd y clwstwr ei ymarferoldeb. Mae'n cael ei fesur o ddechrau'r sgript gan efelychu nam tan yr eiliad pan fydd y clwstwr yn adfer ei ymarferoldeb ac yn gallu parhau i ddarparu gwasanaethau. Os yw'r amser yn fyr iawn, er enghraifft, chwe eiliad (mae hyn yn digwydd mewn clystyrau gyda nifer o gaethweision (Tuchanka3 a Tuchanka4)), mae hyn yn golygu bod y bai ar y caethwas asyncronig ac nad oedd yn effeithio ar y perfformiad mewn unrhyw ffordd; nid oedd unrhyw switshis cyflwr clwstwr.
    • gwyriad — yn dangos lledaeniad (cywirdeb) y gwerth adwaith defnyddio'r dull gwyriad safonol.
    • cyfrif — sawl gwaith y cyflawnwyd y prawf hwn.
  2. Mae log byr yn caniatáu ichi werthuso'r hyn y mae'r clwstwr yn ei wneud ar hyn o bryd. Mae'r rhif iteriad (prawf), y stamp amser ac enw'r gweithrediad yn cael eu harddangos. Mae rhedeg yn rhy hir (> 5 munud) yn dynodi problem.
  3. galon (calon) - amser presennol. Ar gyfer asesiad gweledol o berfformiad meistri Mae'r amser presennol yn cael ei ysgrifennu'n gyson i'w fwrdd gan ddefnyddio'r meistr IP arnofio. Os bydd yn llwyddiannus, dangosir y canlyniad yn y panel hwn.
  4. curo (pwls) - “amser cyfredol”, a gofnodwyd yn flaenorol gan y sgript galon i feistr, darllener yn awr o caethwas trwy ei IP arnofio. Yn eich galluogi i asesu perfformiad y caethwas yn weledol ac atgynhyrchu. Yn Tuchanka1 nid oes unrhyw gaethweision ag IP arnofio (dim caethweision yn darparu gwasanaethau), ond mae dau achos (DBs), felly ni fydd yn cael ei ddangos yma curoAc galon ail enghraifft.
  5. Monitro iechyd clwstwr gan ddefnyddio'r cyfleustodau pcs mon. Yn dangos strwythur, dosbarthiad adnoddau ar draws nodau a gwybodaeth ddefnyddiol arall.
  6. Mae monitro system o bob peiriant rhithwir yn y clwstwr yn cael ei arddangos yma. Efallai y bydd mwy o baneli o'r fath yn dibynnu ar faint o beiriannau rhithwir sydd gan y clwstwr. Dau graff Llwyth CPU (mae gan beiriannau rhithwir ddau brosesydd), enw peiriant rhithwir, Llwyth System (a enwir Llwyth Cyfartaledd oherwydd ei fod yn gyfartaledd dros 5, 10 a 15 munud), data proses a dyraniad cof.
  7. Olion y sgript yn perfformio profion. Mewn achos o gamweithio - toriad sydyn ar y llawdriniaeth neu gylchred aros diddiwedd - yma gallwch weld y rheswm dros yr ymddygiad hwn.

Cynhelir y profion mewn dau gam. Yn gyntaf, mae'r sgript yn mynd trwy bob math o brofion, gan ddewis peiriant rhithwir ar hap i gymhwyso'r prawf hwn. Yna mae cylch diddiwedd o brofi yn cael ei berfformio, mae'r peiriannau rhithwir a'r nam yn cael eu dewis ar hap bob tro. Mae terfyniad sydyn y sgript brofi (panel gwaelod) neu ddolen ddiddiwedd o aros am rywbeth (> 5 munud o amser gweithredu ar gyfer un llawdriniaeth, gellir gweld hyn yn yr olrhain) yn dangos bod rhai o'r profion ar y clwstwr hwn wedi methu.

Mae pob prawf yn cynnwys y gweithrediadau canlynol:

  1. Lansio swyddogaeth sy'n efelychu nam.
  2. Yn barod? — aros i'r clwstwr gael ei adfer (pan fydd yr holl wasanaethau'n cael eu darparu).
  3. Yn dangos terfyn amser adfer clwstwr (adwaith).
  4. Atgyweiria - mae’r clwstwr yn cael ei “atgyweirio.” Ar ôl hynny, dylai ddychwelyd i gyflwr cwbl weithredol a bod yn barod ar gyfer y camweithio nesaf.

Dyma restr o brofion gyda disgrifiad o'r hyn maen nhw'n ei wneud:

  • FforchBom: Yn creu "Allan o gof" gan ddefnyddio bom fforc.
  • Allan o Ofod: Mae'r gyriant caled yn llawn. Ond mae'r prawf braidd yn symbolaidd; gyda'r llwyth di-nod sy'n cael ei greu yn ystod y profion, nid yw PostgreSQL fel arfer yn methu pan fydd y gyriant caled yn llawn.
  • Postgres-KILL: yn lladd PostgreSQL gyda'r gorchymyn killall -KILL postgres.
  • Postgres-STOP: yn hongian gorchymyn PostgreSQL killall -STOP postgres.
  • Pwer i ffwrdd: “dad-energizes” y peiriant rhithwir gyda'r gorchymyn VBoxManage controlvm "виртуалка" poweroff.
  • Ailosod: yn gorlwytho'r peiriant rhithwir gyda'r gorchymyn VBoxManage controlvm "виртуалка" reset.
  • SBD-STOP: yn atal y cythraul SBD gyda'r gorchymyn killall -STOP sbd.
  • Cau i Lawr: yn anfon gorchymyn i'r peiriant rhithwir trwy SSH systemctl poweroff, mae'r system yn cau i lawr yn osgeiddig.
  • Datgysylltu: ynysu rhwydwaith, gorchymyn VBoxManage controlvm "виртуалка" setlinkstate1 off.

Cwblhau profion naill ai gan ddefnyddio'r gorchymyn tmux safonol "kill-window" Ctrl-b &, neu'r gorchymyn "datgysylltu-client". Ctrl-b d: ar y pwynt hwn profi yn dod i ben, tmux yn cau, peiriannau rhithwir yn cael eu diffodd.

Problemau a nodwyd yn ystod y profion

  • Ar hyn o bryd gwyliadwriaeth cythraul sbd yn gweithio ar atal daemons a arsylwyd, ond nid eu rhewi. Ac, o ganlyniad, diffygion sy'n arwain at rewi yn unig Corosync и Crynhoadwr, ond nid hongian sbd. Am siec Corosync eisoes wedi CC#83 (ar GitHub yn sbd), derbyn i'r edau meistr. Fe wnaethon nhw addo (yn PR#83) y byddai rhywbeth tebyg i Pacemaker, gobeithio erbyn Het Goch 8 bydd yn gwneud. Ond mae “camweithrediadau” o'r fath yn hapfasnachol a gellir eu hefelychu'n hawdd yn artiffisial gan ddefnyddio, er enghraifft, killall -STOP corosync, ond byth yn cyfarfod mewn bywyd go iawn.

  • У Crynhoadwr yn y fersiwn ar gyfer CentOS 7 gosod yn anghywir terfyn amser cysoni у dyfais cworwm, fel canlyniad pe bai un nod yn methu, gyda pheth tebygolrwydd ailgychwynnodd yr ail nod hefyd, i'r hwn yr oedd y meistr i fod i symud. Wedi'i wella gan helaethiad terfyn amser cysoni у dyfais cworwm yn ystod y defnydd (mewn sgript setup/setup1). Ni dderbyniwyd y gwelliant hwn gan y datblygwyr Crynhoadwr, yn lle hynny fe wnaethant addo ailgynllunio’r seilwaith yn y fath fodd (ar ryw ddyfodol amhenodol) y byddai’r terfyn amser hwn yn cael ei gyfrifo’n awtomatig.

  • Os yw ffurfweddiad y gronfa ddata yn nodi hynny LC_MESSAGES (negeseuon testun) Gellir defnyddio Unicode, e.e. ru_RU.UTF-8, yna wrth gychwyn postgres mewn amgylchedd lle nad yw'r locale yn UTF-8, dyweder mewn amgylchedd gwag (yma rheoliadur+pgsqlms(paf) rhedeg postgres), yna bydd y log yn cynnwys marciau cwestiwn yn lle llythrennau UTF-8. Nid yw datblygwyr PostgreSQL wedi cytuno ar beth i'w wneud yn yr achos hwn. Mae'n costio, mae angen i chi osod LC_MESSAGES=en_US.UTF-8 wrth ffurfweddu (creu) enghraifft cronfa ddata.

  • Os yw wal_receiver_timeout wedi'i osod (yn ddiofyn mae'n 60au), yna yn ystod y prawf PostgreSQL-STOP ar y meistr yn y clystyrau tuchanka3 a tuchanka4 nid yw atgynhyrchu yn ailgysylltu â'r meistr newydd. Dyblygiad mae cydamserol, felly nid yn unig y caethwas yn stopio, ond hefyd y meistr newydd. Yn gweithio o gwmpas trwy osod wal_receiver_timeout=0 wrth ffurfweddu PostgreSQL.

  • O bryd i'w gilydd sylwais ar rewi atgynhyrchu yn PostgreSQL yn y prawf ForkBomb (gorlif cof). Ar ôl ForkBomb, weithiau efallai na fydd caethweision yn ailgysylltu â'r meistr newydd. Dim ond yn y clystyrau tuchanka3 a tuchanka4 yr wyf wedi dod ar eu traws, lle y rhewodd y meistr oherwydd atgynhyrchu cydamserol. Aeth y broblem i ffwrdd ar ei phen ei hun ar ôl amser hir (tua dwy awr). Mae angen mwy o ymchwil i gywiro hyn. Mae'r symptomau'n debyg i'r nam blaenorol, sy'n cael ei achosi gan reswm gwahanol, ond gyda'r un canlyniadau.

Llun Krogan wedi'i dynnu o Celf gwyrol gyda chaniatâd yr awdur:

Modelu clystyrau methiant yn seiliedig ar PostgreSQL a Pacemaker

Ffynhonnell: hab.com

Ychwanegu sylw