Modeling failover clusters secundum PostgreSQL et Pacemaker

introduction

Dudum mihi negotium datum est ut botrum portassent enucleandi defectorem PostgreSQLoperantem in pluribus centris notitiis opticis intra unam urbem connexis, et sustineri posse unius centri defectionem (exempli gratia niger). Ut programmata culpae tolerantiae author est, delegi pacemakerquia haec est solutio officialis ex RedHat ad creandum racemos failover. Bonum est quod RedHat providet ei, et quia haec solutio universalis est (modular). Hac ope praestabitur tolerantia culpae non solum vitae PostgreSQL, sed etiam aliorum officiorum, vel modulis modulis utendi vel pro certis necessitatibus faciendis.

Hoc consilium rationabilem quaestionem movit: quomodo culpa patientis botrus erit? Ad hoc explorandum, scamnum testium elaboravi, quod varias defectiones in nodi nodis simulat, servitium observat ut restituatur, nodi deficientem recuperat, et in ansa pergit tentans. Hoc consilium primum hapgsql appellatum est, sed nomine temporis perforaretur, quod solum vocali erat. Ideo incepi databases culpabiles tolerantes (et supernatat IP eis demonstrans) krogan (character e ludus computatrali in quo duplicantur omnia gravia organa), et nodi, racemi et ipsum exertus sunt tuchanka (Planeta ubi krogans vivunt).

Nunc procuratio permisit aperire project in aperto fonte civitatem sub licentia MIT. README mox in Anglicam transferetur (quia expectatur principales usores Pacemaker et PostgreSQL tincidunt fore), et decrevi veterem versionem Russicam README (ex parte) in forma huius articuli exhibere.

Modeling failover clusters secundum PostgreSQL et Pacemaker

Racemi explicantur in virtualis machinis VirtualBox. In summa 12 machinis virtualis (36GiB in total) explicandae erunt, quae 4 racemos vitiosos tolerantes (optiones diversas). Primae duae ligaturae constant ex duobus servientibus PostgreSQL, quae in diversis centris notitiis collocantur et servo communi. testimonium c quorum fabrica (in vili machina virtualis hosted in tertia notitia centrum), quae dubitationem resolvit 50% /% 50suffragium tuum alteri parti dando. Botrus tertius in tribus centris data: unus dominus, duo servi, n quorum fabrica. Quartus botrus constat ex quatuor servientibus PostgreSQL, duobus per centri datis, unus dominus, reliqui replicationes, et etiam usus. testimonium c quorum fabrica. Quartus potest sustinere defectum duorum servientium vel unius Mauris interdum. Haec solutio ad plures replicationes, si opus sit, attingi potest.

Tempus accurate officium ntpd etiam ad culpam tolerantiae figuratur, sed ipsa methodo utitur ntpd (pupillus modus). Shared server testimonium tamquam centralis NTP ministrator agit, tempus suum omnibus racemis distribuens, omnes servientes inter se congruentes. Si testimonium deficiat vel semotus, tunc unus ex servientibus botri (intra botrum) tempus suum distribuere incipiet. Auxilia caching HTTP ineundo et erexit to testimoniumcum eius auxilio, aliae virtuales machinae ad repositoria Yum accessum habent. Re quidem vera officia sicut tempus accurate et procuratores maxime verisimile est ut servientibus dicatis hostedantur, sed in umbraculo quae in hospitio sunt. testimonium tantum numerum conservare virtualis machinis et spatii.

versiones

v0. Opera cum CentOS 7 et PostgreSQL 11 in VirtualBox 6.1.

Botrus compages

Omnes racemi ordinantur in centris multiplicibus notitiis collocari, in unum retis planis collatis et defectus vel reticularium unius centri notitiarum solitationem sustinere debent. Ille est cur potest uti ad praesidium contra split-cerebrum vexillum Pacemaker technology vocatur STONITH (Iace Alius Nodi in capite) vel rudium. Essentia eius: si nodi in botro incipiunt suspicari aliquid mali aliqua nodo esse, non respondet vel male se gerere, tum per cogitationes "externas" eum violenter avertunt, exempli gratia, card vel IPMI vel UPS imperium. . Sed hoc solum operabitur in casibus in quibus, in casu unius defectus, IPMI vel UPS ministrans operari pergit. Hic cogitamus contra defectum multo calamitosiorem tueri, cum tota notitia centri deficit (exempli gratia vim amittit). Et tali recusante, omnia stonith-devices (IPMI, UPS, etc.) etiam non operatur.

Sed ratio sumitur ex ratione quorum. Omnes nodi vocem habent, et solum illae quae plus quam dimidium omnium nodi laborare possunt videre possunt. Haec quantitas "dimidii + 1" appellatur quorum. Si quorum non attingitur, nodi decernit esse in retis solitario ac suas facultates arcere debere, i.e. hoc est quod est split-cerebrum praesidium. Si programmata huius agendi ratio est quae non operatur, vigil, exempli gratia, IPMI fundatur, laborare debebit.

Si numerus nodi est vel (botrus in binis centris notitiis), tunc dubitatio sic dicta oriri potest 50% /% 50 (quinquaginta et quinquaginta) cum retiacula solitudo botrum prorsus in medium dividit. Parem igitur numerum nodis addimus quorum fabrica indecens daemon est qui in vilissima virtualis machina in tertia notitia centri deduci potest. Suffragium dat uni e segmentis (quam videt), et inde dubitationem 50%/50% resolvit. Servum nominavi in ​​quo quorum fabrica deducentur testimonium (terminology from repmgr, amavi).

Facultates de loco ad locum moveri possunt, exempli gratia, a servitoribus vitiosis ad sanos, vel ex mandato administratorum systematis. Ita ut clientes cognoscant ubi sitae facultates indigent (where connect ?); tristique IP (supernatet IP). Haec sunt IPS quae Pacemaker circa nodos movere possunt (omnia in retis planis est). Uterque eorum significat opum (servitium) et locabitur ubi opus est connectere ut accessum ad hoc servitium (in nostro casu database) accedat.

Tuchanka1 (circuitu compaction)

structure

Modeling failover clusters secundum PostgreSQL et Pacemaker

Idea erat quod multa parva databases habemus cum parvo onere, propter quod inutile est conservare servum devotum in calido standi modo ad solum negotiorum legere (non opus est ad tam perditio opum).

Quisque interdum mauris ut ante. Unusquisque ministrans habet duas instantias PostgreSQL (in terminologia PostgreSQL botri vocati sunt, sed ad evitandam confusionem instantias appellabo (per analogiam cum aliis databases), et tantum botri Pacemaker vocabo. Una instantia in modum domini operatur, et solum officia praebet (tantum ad IP fluitantia ducit). In secunda instantia servitutem facit ad centrum notitiae secundae, et servitia praestabit si dominus eius deficit. Cum plerique temporis tantum unum instantia e duobus (dominum) officia praebent (precationes praestare), omnes facultates servientium optimized pro domino sunt (memoria partita est pro cache shared_buffers, etc.), sed ita ut in secunda instantia. etiam facultates satis habet (licet pro suboptimal operatione per cinematographicae tabulae) in casu defectio unius centri notitiarum. Servus servitia (legis tantum petitiones non praestat) in normali botri operatione non est bellum, ut cum domino in eadem machina non sit bellum.

In duobus nodis, culpa tolerantia non potest nisi cum replicatione asynchrona, quia per synchronum replicationem servi defectus ad finem domini deducet.

Defectum testis

Modeling failover clusters secundum PostgreSQL et Pacemaker

Defectum testis (quorum fabrica) solum considerabo pro botro Tuchanka1, cum omnibus aliis eadem fabula erit. Si testis defecerit, nihil in botro structura mutabit, omnia opera perseverabit eodem modo quo fecit. Sed quorum- cunque fiet 2 ex 3, et ideo quodlibet defectum sequens erit pro botro fatale. Res autem certas instanter adhuc habebis.

Tuchanka1 recusatio

Modeling failover clusters secundum PostgreSQL et Pacemaker

Defectum unius notitiae centra Tuchanka1. In hoc casu testimonium suffragium fert ad alterum nodi in notitia secunda centrum. Ibi ille servus in dominum vertit, inde ambo domini in eodem servo laborant, et ambo IPS eorum fluitant.

Tuchanka2 (classical)

structure

Modeling failover clusters secundum PostgreSQL et Pacemaker

Ordo classicorum duorum nodis. Dominus in uno, servus in altero operatur. Uterque petitiones exequi potest (servus tantum legitur), ut utrumque per IP supernatet: krogan2 dominus est, krogan2s1 servus est. Et dominus et servus culpae tolerantiam habebunt.

In duobus nodis, culpa tolerantia non est nisi per replicationem asynchronam, quia per replicationem synchronam servi cessationem domini perducent.

Tuchanka2 recusatio

Modeling failover clusters secundum PostgreSQL et Pacemaker

Si unus de notitia centers non testimonium suffragatur pro secundo. In solo notitia centrum operante, dominus suscitabitur, et ambo IPS monstrabunt: dominus et servus. Utique, instantia configurari debet ita, ut satis habeat facultates (connexiones limites, etc.) ut simul omnes hospites et petitiones a domino et servo enatant IP recipiant. Hoc est, in operatione normali sufficientem limitum copiam habere debet.

Tuchanka4 (servos multos)

structure

Modeling failover clusters secundum PostgreSQL et Pacemaker

iam aliud extremum. Databases sunt quae multum legunt solum petitiones accipiunt (casus typicus summi oneris situs). Tuchanka4 condicio est ubi tres vel plures servi possunt esse ut petitiones eiusmodi tractant, sed tamen non plures. Cum permagnus servorum numerus, hierarchicam replicationem excogitare oportebit. In minimo casu (in pictura) singula centra data duos ministros habet, utrumque cum instantia PostgreSQL.

Alia notatio huius schematis est quod iam unam replicationem synchronam instituere potest. configuratur replicare, si fieri potest, ad aliud centrum datae, quam ad replicam in eodem centri datarum domino. Dominus et quilibet servus per IP nare monstratur. Fortunate inter servos oportebit aliquo modo petitiones paria facere sql procuratoremexempli gratia in parte huius. Diversa genera clients possunt requirere diversa genera sql procuratoremtincidunt ac nisi quis quam. Haec functionalitas perfici potest sive per daemonem externum sive per bibliothecam clientem (connexionem piscinae) etc. Haec omnia excedit locum botrus datorum failover (failover SQL procuratorem independenter effici potest, una cum culpa clientis tolerantiae).

Tuchanka4 recusatio

Modeling failover clusters secundum PostgreSQL et Pacemaker

Si unus Mauris interdum (i.e., duo servientes) deficiat, testis suffragatur pro secundo. Quam ob rem duo ministri currunt in notitia media secunda: unus dominus currit, et dominus ad IP puncta fluitant (pro petitionibus recipiendis legere-scribe); et in secundo servo currit servus cum synchrono replicatione, et unus servus IPS fluitant demonstrat (pro solum petitiones legunt).

In primis notandum est, quod non omnes servi IPS erit operarii, sed unus tantum. Et cum hoc recte operari oportebit sql procuratorem redirected omnes petitiones IP solae reliquiae supernatant; et si sql procuratorem Minime, tunc omnia enumerare potes IP servis per commatibus separatis in nexu URL. In hoc casu, cum libpq Connexio erit primae operationis IP, hoc fit in ratio probationis automaticae. Fortasse in aliis bibliothecis, e.g. JDBC, hoc opus non erit et est necessarium sql procuratorem. Hoc factum est, quia innatant IPS pro servis prohibentur simul ab uno servo levari, ita ut aequaliter distribuantur servis, si plures sint currendi.

Secundo: etiam in eventu centri deficiendi, replicatio synchrona servabitur. Et etiam si secundarius defectus inciderit, id est unus ex duobus servientibus in reliquo Mauris interdum deficiat, botrus, quamvis officia praestandi cessabit, retinebit tamen informationes de omnibus negotiis commissis, pro quibus confirmationem commisit. (nullae detrimenti erunt notitiae in casu secundae defectio).

Tuchanka3 (data centra III)

structure

Modeling failover clusters secundum PostgreSQL et Pacemaker

Botrus pro condicione est ubi tria sunt centra plene operantia data, quorum unumquodque ministrum datorum plene muneris habet. In hoc casu quorum fabrica non opus. Mauris interdum a domino, haec duo servi per virgam. Replicatio est synchrona, cuiuslibet generis (servi1, servi2), id est, clientis confirmationem recipiet, cum quis servus primum responderit se commisisse se committere. Opes indicantur uno fluitant IP domino ac duobus servis. Dissimilis Tuchanka4, omnes tres innatat IPs culpa-patientes. Paria legere solum SQL queries uti potes sql procuratorem (singulis culpae tolerantiae) vel unum mancipium IP dimidium clientium enatantem, alterum dimidium secundo tribue.

Tuchanka3 recusatio

Modeling failover clusters secundum PostgreSQL et Pacemaker

Si unum de centris defecerit, duo remanent. In uno, dominus et fluitant IP a domino eriguntur, in secundo - servus et uterque servus IPS fluitant (instantia duplex subsidiorum subsidiorum habere debet ut omnes nexus ab utroque servo IPS accipiant). Synchrona replicatio inter dominos et servos. Item, botrus salvabit informationes de transactionibus commissis et confirmatis (nulla deminutio notitiarum) in eventu destructionis duarum centra notitiarum (si simul non destruuntur).

Accurate descriptionem tabellae structurae et instruere non decrevi. Qui circum ludere vult, omnia in README legere potest. Tantum descriptionem probationis automated ego praebeo.

Lorem probatio ratio

Ut probetur culpam tolerantiam botri, variis vitiis simulantibus, systema probatio latae sententiae creata est. Deducti a scriptor test/failure. Scriptum capere potest pro parametris numerorum botri quos probare velis. Exempli gratia hoc praeceptum;

test/failure 2 3

modo probare secundum ac tertium botrum portassent. Si parametri non sunt specificati, omnes ligaturae probentur. Omnes ligaturae parallelae probantur, et effectus in tabula tmux monstratur. Tmux dicato tmux utitur servo, ita scriptum esse potest ex tmux sub defectn, unde fit in nido tmux. Commendo uti termino in magna fenestra et cum parva fonte. Ante probationem incipit, omnes virtuales machinis ad snapshotum revolvuntur tempore scripto completo setup.

Modeling failover clusters secundum PostgreSQL et Pacemaker

Terminus in columnas dividitur secundum numerum botri probatum, ex defectu (in tortor) quattuor sunt. Summa columnarum exemplo Tuchanka2 describo. Tabulae in screenshot numerantur:

  1. Test statistica hic monstrantur. Columnae:
    • defectum, β€” nomen test (munus in scripto) quod culpam emulat.
    • reactionem β€” arithmetica mediocris temporis in secundis in quibus botrus suam functionem recepit. Mensuratur ab initio scriptionis culpae aemulantis usque ad momentum quo botrus suam officiatitatem restituit et officia continuare potest. Si tempus brevissimum est, exempli gratia sex secundis (hoc fit in racemis cum pluribus servis (Tuchanka3 et Tuchanka4)), hoc significat culpam esse in servi asynchrono nec ullo modo afficit exsecutionem, nullae erant. botrum civitatis virgas.
    • hue circuitus - ostendit propagationem (accuratio) de valore reactionem vexillum digredior utens modum.
    • numerare β€” Quotiens hoc experimentum factum est.
  2. Brevis truncus permittit vos aestimare quid botrus in actu est. Iteratio (test) numerus, indicatione et nomen operationis monstrantur. Nimis longum currit (>5 minuta) problema indicat.
  3. cor (Cor) - Tempus Praesens. Pro visual aestimationem perficientur dominus Tempus Praesens constanter scribetur ad suam mensam utens in tabula IP magistro suo. Si bene, eventus in hac tabula monstratur.
  4. beat - "Tempus current", quod antea scriptum erat cor ad dominum, nunc legitur a servus ria ejus natant ip. Permittit tibi ut uisum perpendas executionem servi et replicationis. In Tuchanka1 nullae sunt servi cum fluctu IP (no servi officia praestantes), sed duae instantiae sunt (DBs), quare hic non ostendetur. beatquod cor secundae instantiae.
  5. Cras botrum portassent uti ad utilitatem pcs mon. Monstrat structuram, distributionem facultatum per nodos et alia utilia indicia.
  6. Ratio vigilantia e qualibet machina virtuali in botro hic ostenditur. Plures tabulae tales esse possunt secundum quot machinis virtualis botrus habet. Duo graphs CPU Load (machina virtualis duos processus habent), apparatus virtualis nomen; Ratio Load (Locus Mediocris nominatus quia supra 5, 10 et 15 minuta est), notitia processus et destinatio memoriae.
  7. Vestigium scriptionis faciendo experimentum. In eventu malfunction - repentina intermissio operationis vel cycli sine fine exspectatio - hic rationem huius agendi videre potes.

Testis in duobus gradibus exercetur. Primum, scriptum pertractat omnia genera tentationum, passim eligens machinam virtualem cui hoc experimentum applicandum est. Inde sine fine cyclus temptationis peragitur, machinae virtuales et culpae passim singulis diebus eliguntur. Subita terminationis scripturae probationis (panulae ima) vel ansa infinita exspectationis aliquid (>5 minuta executionis tempus unius operationis, hoc in vestigio videri potest) indicat aliquas probationes in hoc botro defecisse.

Unumquodque examen ex sequentibus operationibus consistit:

  1. Lorem munus, quod culpae aemulatur.
  2. Promptus? β€” expectans botrum restituendum (cum omnia officia praebeantur).
  3. Botrus recuperatio ostendit timeout (reactionem).
  4. fix - botrus est "refici." Post quem redire debet ad statum plene operationale et ad proximum malfunctionem paratus.

Hic est index probatorum cum descriptione eorum quae faciunt;

  • ForkBomb: Facit "Ex memoria" utens bomba furca.
  • OutOfSpace: dura coegi plenum est. Sed probatio magis est symbolica, cum parvo onere quod in tentatione creatum est, PostgreSQL plerumque non deficit cum coegi ferreus plenus est.
  • Postgres-OCIDOPostgreSQL necat cum imperio killall -KILL postgres.
  • Postgres-STOP: pendere PostgreSQL mandatum killall -STOP postgres.
  • De potentia: "de-operatur" virtualis apparatus cum imperio VBoxManage controlvm "Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΠΊΠ°" poweroff.
  • Reset: Rectum apparatus onerat cum imperio VBoxManage controlvm "Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΠΊΠ°" reset.
  • SBD-STOP: SBD daemonium cum imperio suspendit killall -STOP sbd.
  • Shutdown: Mandatum ad virtualem apparatus per SSH systemctl poweroffratio lepide claudit.
  • UnLink: retis solitudo, mandatum VBoxManage controlvm "Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΠΊΠ°" setlinkstate1 off.

Perficiens probationem vel utens vexillum tmux mandatum "fenestram nece" Ctrl-b &aut "absurgere clientem" imperium Ctrl-b d*: hic extrema tentatio, tmux claudit, machinae virtuales avertuntur.

Difficultates identified in temptationem

  • In statu watchdog daemonium sbd opera cessandi observabant daemones, sed non torporeos illos. Et consequenter, vitia quae inducunt ad congelationem Corosync ΠΈ pacemakersed non tentorium sbd *... Nam reprehendo Corosync iam tenes PR#83 (Ad GitHub in * sbd *), ad sequelam acceptus dominus. Promiserunt (in PR#83) aliquid simile fore Pacemaker, spero fore VII RedHat ille faciebo. Huiusmodi autem technologiae speculativae sunt, et de facili ficti possunt artificialiter uti, ut puta. killall -STOP corosyncsed numquam in vita.

  • Π£ pacemaker in versionem for CentOS 7 male set sync_timeout Ρƒ quorum fabrica, igitur si unus nodi defecit, probabiliter etiam secundus nodi rebootedad quem dominus movendum putabatur. Curatus per amplificationem sync_timeout Ρƒ quorum fabrica in deployment (in scriptor setup/setup1). Haec emendatio non recipitur ab developers pacemakerpromiserunt autem infrastructuram tali modo (in futuro aliquo non specificato) redintegrare, ut hoc tempus automatice computaretur.

  • Si database configuratione cificat LC_MESSAGES Unicode adhiberi potest, e.g. ru_RU.UTF-8Ergo ad startup Postgres in ambitu ubi locus non est utf-8, dicite in inani ambitu (hic pacemaker+pgsqlms(Paf) decurrit Postgres) tum iniuriarum non habet quaestionem notas pro UTF-VIII litteris. Tincimenta PostgreSQL in hoc casu quid facere non convenit. Constat, vos postulo ut install LC_MESSAGES=en_US.UTF-8 Cum Vestibulum (creando) database exempli.

  • Si wal_receiver_timeout ponitur (defaltam 60s), tunc in PostgreSQL-STOP test dominum in tuchanka3 et tuchanka4 botri replicatio non reconnect ad novum dominum. Replicatio synchrona est, ideo non solum servus cessat, sed etiam novus dominus. Opera circum ponendo wal_receiver_timeout=0 cum configurans PostgreSQL.

  • Aliquando observavi replicationem constringentem in PostgreSQL in ForkBomb experimenti (refluentiae memoriae). Post ForkBomb, interdum servi ad novum dominum reiungere non possunt. Hoc solum in racemis tuchanka3 et tuchanka4 offendit, ubi dominus ob synchronam replicationem adligat. Problema post longum tempus seipsam abiit (circiter duas horas). Pluribus investigationibus opus est ut hanc corrigam. Signa similia sunt priori cimex, qui causatur ex alia ratione, sed eadem consequentia.

Krogan imago ex deviant Art permissu auctoris;

Modeling failover clusters secundum PostgreSQL et Pacemaker

Source: www.habr.com