Clochar → bainistíocht braisle OTP simplí

Luath nó mall téann beagnach gach iarratas gnó rathúil isteach i gcéim ina bhfuil gá le scálaithe cothrománach. I go leor cásanna, ní féidir leat ach cás nua a thosú agus an meán ualaigh a laghdú. Ach tá cásanna nach bhfuil chomh fánach chomh maith nuair is gá dúinn a chinntiú go bhfuil nóid éagsúla ar an eolas faoina chéile agus an t-ualach oibre a dháileadh go cúramach.

Clochar → bainistíocht braisle OTP simplí

Iompaigh sé amach chomh-ádh sin erlang, a roghnaigh muid as a chomhréir taitneamhach agus hype timpeall air, tá scoth tacaíocht do chórais dáilte. Go teoiriciúil, fuaimeanna seo go hiomlán fánach:

Tá an teachtaireacht a chuirtear ar aghaidh idir próisis ar nóid éagsúla, agus idir naisc agus monatóirí, trédhearcach […]

Go praiticiúil, tá gach rud beagán níos casta. Dáilte erlang Forbraíodh nuair a chiallaigh "coimeádán" bosca iarainn mór le haghaidh loingseoireachta, agus bhí "docker" ach synonym do longshoreman. IN IP4 bhí go leor seoltaí neamháitithe, de ghnáth ba chúis le briseadh líonra de bharr francaigh a bheith ag coganta tríd an gcábla, agus rinneadh meán-aga fónaimh an chórais táirgthe a thomhas i mblianta.

Anois táimid go léir thar a bheith féin-leordhóthanach, pacáistithe, agus ag rith scaipthe erlang i dtimpeallacht ina dtugtar seoltaí IP dinimiciúla amach ar phrionsabal na randamachta mór, agus is féidir le nóid a bheith le feiceáil agus imithe as radharc ar sháil chlé an sceidileora. Chun chairn de chód boilerplate a sheachaint i ngach tionscadal a reáchtáil dáilte erlang, chun dul i ngleic leis an timpeallacht naimhdeach, tá cabhair ag teastáil.

Tabhair faoi deara: Tá a fhios agam go bhfuil libcluster. Tá sé fíor-fhionnuar, tá os cionn míle réalta ann, tá cáil ar an údar sa phobal, agus sin ar fad. Más leor duit na modhanna a thairgeann an pacáiste seo chun braisle a chruthú agus a chothabháil, táim sásta duit. Ar an drochuair, tá i bhfad níos mó ag teastáil uaim. Ba mhaith liom an socrú a rialú go mion agus gan a bheith i mo lucht féachana ón taobh amuigh in amharclann an atheagrú braisle.

Riachtanais

Ba é an rud a bhí ag teastáil uaim go pearsanta ná leabharlann a ghlacfadh cúram bainistíochta an bhraisle agus a mbeadh na hairíonna seo a leanas aici:

  • obair thrédhearcach le liosta crua-chódaithe de nóid agus fionnachtain dhinimiciúil trí sheirbhísí erlang;
  • glao ar ais go hiomlán feidhme le haghaidh gach athrú topology (nód ann, nód anseo, éagobhsaíocht líonra, scoilteanna);
  • comhéadan trédhearcach chun braisle a sheoladh le hainmneacha fada agus gearra, mar atá :nonode@nohost;
  • Tacaíocht docker as an mbosca, gan a bheith a scríobh cód bonneagair.

Ciallaíonn an dara ceann gur tar éis dom an t-iarratas a thástáil go háitiúil i :nonode@nohost, nó i dtimpeallacht a dháileadh go saorga ag baint úsáide as test_cluster_task, Níl uaim ach rith docker-compose up --scale my_app=3 agus féach conas a fhorghníomhaíonn sé trí chás i docker gan aon athruithe cód. Ba mhaith liom freisin iarratais spleách cosúil mnesia - nuair a athraíonn an topology, taobh thiar de na cásanna atógáil siad an bhraisle beo gan aon cic breise ón bhfeidhmchlár.

clabhstra Ní raibh sé i gceist go mbeadh sé ina leabharlann a bheadh ​​in ann gach rud ó thacú le braisle go dtí caife a dhéanamh. Ní piléar airgid é a bhfuil sé mar aidhm aige gach cás féideartha a chlúdach, nó a bheith ina réiteach iomlán acadúil sa chiall a thugann teoiricí ó CS chur isteach sa téarma seo. Tá an leabharlann seo deartha chun freastal ar chuspóir an-soiléir, ach déan a post nach bhfuil ró-mhór go foirfe. Is é a bheidh sa sprioc seo ná trédhearcacht iomlán a sholáthar idir an timpeallacht forbartha áitiúla agus timpeallacht leaisteacha dáilte atá lán de choimeádáin naimhdeacha.

Cur chuige roghnaithe

clabhstra Tá sé beartaithe é a rith mar fheidhmchlár, cé gur féidir le hardúsáideoirí oibriú le cóimeáil agus cothabháil an bhraisle de láimh trí rith go díreach Cloister.Manager i gcrann maoirseoirí an iarratais sprice.

Nuair a reáchtáiltear é mar fheidhmchlár, braitheann an leabharlann air config, óna léann sé na bunluachanna seo a leanas:

config :cloister,
  otp_app: :my_app,
  sentry: :"cloister.local", # or ~w|n1@foo n2@bar|a
  consensus: 3,              # number of nodes to consider
                             #    the cluster is up
  listener: MyApp.Listener   # listener to be called when
                             #    the ring has changed

Ciallaíonn na paraiméadair thuas go litriúil na nithe seo a leanas: clabhstra a úsáidtear le haghaidh iarratas OTP :my_app, úsáidí fionnachtain seirbhíse erlang chun nóid a nascadh, ar a laghad trí, agus MyApp.Listener modúl (cur i bhfeidhm @behaviour Cloister.Listener) atá cumraithe chun fógraí a fháil faoi athruithe topology. Is féidir cur síos mionsonraithe ar an gcumraíocht iomlán a fháil i doiciméadú.

Leis an chumraíocht seo, an t-iarratas clabhstra Beidh seoladh i gcéimeanna, moill a chur ar an bpróiseas chun an príomh-iarratas a thosú go dtí go mbaintear comhaontú amach (tá trí nód ceangailte agus ceangailte, mar atá sa sampla thuas.) Tugann sé seo deis don phríomhiarratas glacadh leis go bhfuil an braisle ar fáil cheana féin nuair a thosaíonn sé. Aon uair a athraíonn an topology (beidh go leor acu, toisc nach dtosaíonn na nóid go hiomlán go sioncrónach), cuirfear an láimhseálaí ar a dtugtar MyApp.Listener.on_state_change/2. An chuid is mó den am a dhéanaimid gníomh nuair a fhaighimid teachtaireacht stádais %Cloister.Monitor{status: :up}, a chiallaíonn: "Dia duit, tá an braisle le chéile."

I bhformhór na gcásanna, suiteáil consensus: 3 is fearr mar gheall ar fiú má táimid ag súil le níos mó nóid nascadh, beidh an glaoch ar ais dul tríd status: :rehashingstatus: :up ar aon nód nua-chur leis nó bainte.

Nuair a thosaíonn tú i mód forbartha, ní mór duit ach a shocrú consensus: 1 и clabhstra scipfidh sé go sona sásta an fanacht le haghaidh cóimeála braisle nuair a fheiceann sé :nonode@nohost:node@host:[email protected] - ag brath ar conas a cumraíodh an nód (:none | :shortnames | :longnames).

Bainistíocht Feidhmchlár Dáilte

Is gnách go n-áirítear le hiarratais dáileacháin nach bhfuil i bhfolús spleáchais dáilte, mar shampla mnesia. Tá sé éasca dúinn a n-athchumrú a láimhseáil ón aisghlaoch céanna on_state_change/2. Anseo, mar shampla, tá cur síos mionsonraithe ar conas a athchumrú mnesia ar an eitilt isteach doiciméadú clabhstra.

An buntáiste is mó a bhaineann le húsáid clabhstra is é sin go ndéanann sé na hoibríochtaí go léir is gá chun an braisle a atógáil tar éis athrú topology faoi ​​na cochall. Ritheann an feidhmchlár go simplí i dtimpeallacht dháilte ullmhaithe cheana féin, agus na nóid go léir ceangailte, is cuma an bhfuil na seoltaí IP ar eolas againn agus dá bhrí sin na hainmneacha nód roimh ré, nó ar sannadh/athraíodh go dinimiciúil iad. Ní theastaíonn aon socruithe speisialta cumraíochta docker leis seo agus ó thaobh fhorbróra feidhmchláir de, níl aon difríocht idir rith i dtimpeallacht dháilte nó reáchtáil i dtimpeallacht áitiúil. :nonode@nohost. Is féidir leat tuilleadh a léamh faoi seo i doiciméadú.

Cé gur féidir athruithe toipeolaíochta a láimhseáil go casta trí chur chun feidhme saincheaptha MyApp.Listener, d’fhéadfadh cásanna imeallacha a bheith ann i gcónaí ina gcruthaíonn na teorainneacha leabharlainne agus na laofachtaí cumraíochta seo mar bhunchlocha an chur i bhfeidhm. Tá sé ceart go leor, ní gá ach an méid thuas a ghlacadh libcluster, a bhfuil cuspóir níos ginearálta, nó fiú láimhseáil an bhraisle íseal-leibhéal tú féin. Ní hé sprioc na leabharlainne cóid seo gach cás féideartha a chlúdach, ach an cás is coitianta a úsáid gan pian gan ghá agus cóip-ghreamú achrannach.

Tabhair faoi deara: ag an bpointe seo sa bhunleagan bhí an frása “Happy clustering!”, agus thairg Yandex, a aistrím leis (ní chaithfidh mé dul trí fhoclóirí mé féin), an rogha “Happy cnuasú!” B’fhéidir go bhfuil sé dodhéanta aistriúchán níos fearr a shamhlú, go háirithe i bhfianaise na staide geopolitical reatha.

Foinse: will.com

Add a comment