Cloister → riaghladh brabhsair OTP sìmplidh

Bidh cha mhòr a h-uile tagradh gnìomhachais soirbheachail luath no mall a’ dol a-steach gu ìre far a bheil feum air sgèileadh còmhnard. Ann an iomadh cùis, faodaidh tu dìreach eisimpleir ùr a thòiseachadh agus cuibheasachd luchdan a lughdachadh. Ach tha cùisean nach eil cho beag ann cuideachd far am feum sinn dèanamh cinnteach gu bheil fios aig diofar nodan mu dheidhinn a chèile agus a bhith a’ cuairteachadh an eallach obrach gu faiceallach.

Cloister → riaghladh brabhsair OTP sìmplidh

Thionndaidh e a-mach cho fortanach sin erlang, a thagh sinn airson a cho-chòrdadh tlachdmhor agus hype timcheall air, tha den chiad ìre aige taic airson siostaman sgaoilte. Ann an teòiridh, tha seo a 'fuaimeachadh gu tur beag:

Tha teachdaireachd a’ dol eadar pròiseasan air diofar nodan, a bharrachd air eadar ceanglaichean agus sgrùdairean, follaiseach […]

Ann an cleachdadh, tha a h-uile dad beagan nas iom-fhillte. Air a chuairteachadh erlang chaidh a leasachadh nuair a bha “container” a’ ciallachadh bogsa mòr iarainn airson luingearachd, agus cha robh ann an “docker” ach co-fhacal airson longshoreman. ANNS IP4 bha mòran sheòlaidhean falamh ann, mar as trice bha briseadh lìonra air adhbhrachadh le radain a’ cagnadh tron ​​​​chàball, agus chaidh ùine chuibheasach an t-siostam toraidh a thomhas ann an deicheadan.

A-nis tha sinn uile gu math fèin-fhoghainteach, air am pacadh, agus a’ ruith air a chuairteachadh erlang ann an àrainneachd far a bheil seòlaidhean IP fiùghantach air an toirt seachad air prionnsapal fìor thuairmeas, agus faodaidh nodan nochdadh agus a dhol à sealladh aig sàilean clì a’ chlàr-ama. Gus cruachan de chòd boilerplate a sheachnadh anns a h-uile pròiseact a tha a’ ruith cuairteachadh sgaoilte erlang, gus cuir an-aghaidh na h-àrainneachd nàimhdeil, tha feum air cuideachadh.

thuirt: Tha fios agam gu bheil libcluster. Tha e fìor fhionnar, tha còrr air mìle rionnag ann, tha an t-ùghdar ainmeil anns a’ choimhearsnachd, agus sin uile. Ma tha na dòighean a tha air an tabhann leis a’ phacaid seo airson cruinneachadh agus cumail suas cruinneachadh gu leòr dhut, tha mi toilichte dhut. Gu mì-fhortanach, tha feum agam air tòrr a bharrachd. Tha mi airson smachd mionaideach a chumail air an stèidheachadh agus gun a bhith nad neach-amhairc bhon taobh a-muigh ann an taigh-cluiche ath-eagrachadh brabhsair.

riatanasan

B’ e an rud a bha a dhìth orm gu pearsanta leabharlann a ghabhadh thairis riaghladh a’ bhuidheann agus aig am biodh na feartan a leanas:

  • obair fhollaiseach le gach cuid liosta le còd cruaidh de nodan agus lorg fiùghantach tro sheirbheisean erlang;
  • gairm air ais làn-ghnìomhach airson gach atharrachadh topology (nòta an sin, nód an seo, neo-sheasmhachd lìonra, sgoltadh);
  • eadar-aghaidh follaiseach airson buidheann a chuir air bhog le ainmean fada is goirid, mar a tha :nonode@nohost;
  • Taic docker a-mach às a’ bhogsa, gun a bhith agad ri còd bun-structair a sgrìobhadh.

Tha an tè mu dheireadh a’ ciallachadh, às deidh dhomh deuchainn a dhèanamh air an tagradh gu h-ionadail :nonode@nohost, no ann an àrainneachd a tha air a chuairteachadh gu h-ealanta a’ cleachdadh test_cluster_task, tha mi dìreach airson ruith docker-compose up --scale my_app=3 agus faic mar a chuireas e an gnìomh trì suidheachaidhean ann an docker gun atharrachadh còd sam bith. Tha mi cuideachd ag iarraidh tagraidhean eisimeileach mar mnesia - nuair a dh’ atharraicheas an topology, air cùl na seallaidhean bidh iad ag ath-thogail a’ bhuidheann beò gun bhreab a bharrachd bhon tagradh.

Clobhsa Cha robh dùil gum biodh e na leabharlann comasach air a h-uile càil bho bhith a’ toirt taic do bhuidheann gu bhith a’ dèanamh cofaidh. Chan e peilear airgid a th’ ann a tha ag amas air a h-uile cùis a dh’ fhaodadh a bhith ann, no a bhith na fhuasgladh iomlan gu h-acadaimigeach san fhaireachdainn a tha luchd-teòiridh bho CS chur san teirm so. Tha an leabharlann seo air a dhealbhadh gus adhbhar fìor shoilleir a fhrithealadh, ach dèan an obair nach eil ro mhòr gu foirfe. Is e an t-amas seo soilleireachd iomlan a thoirt seachad eadar an àrainneachd leasachaidh ionadail agus àrainneachd elastagach sgaoilte làn de shoithichean nàimhdeil.

Dòigh-obrach air a thaghadh

Clobhsa an dùil a bhith air a ruith mar thagradh, ged as urrainn do luchd-cleachdaidh adhartach obrachadh le bhith a’ co-chruinneachadh agus a’ cumail suas a’ chnuasaich le làimh le bhith a’ ruith gu dìreach Cloister.Manager ann an craobh stiùiridh an tagraidh targaid.

Nuair a thèid a ruith mar thagradh, bidh an leabharlann an urra config, às an leugh e na luachan bunaiteach 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

Tha na paramadairean gu h-àrd a’ ciallachadh gu litireil na leanas: Clobhsa air a chleachdadh airson tagradh OTP :my_app, cleachdadh lorg seirbheis erlang gus nodan a cheangal, co-dhiù trì, agus MyApp.Listener modal (cur an gnìomh @behaviour Cloister.Listener) air a rèiteachadh gus fios fhaighinn mu atharrachaidhean topology. Gheibhear tuairisgeul mionaideach air an rèiteachadh iomlan ann an sgrìobhainnean.

Leis an rèiteachadh seo, an tagradh Clobhsa Bidh cur air bhog ann an ìrean, a’ cur dàil air a’ phròiseas airson a’ phrìomh iarrtas a thòiseachadh gus an ruigear co-aontachd (tha trì nodan ceangailte agus ceangailte, mar a chithear san eisimpleir gu h-àrd.) Bheir seo cothrom don phrìomh thagradh gabhail ris, nuair a thòisicheas e, gu bheil am brabhsair ri fhaighinn mu thràth. Nuair a dh’ atharraicheas an topology (bidh mòran dhiubh ann, leis nach bi na nodan a’ tòiseachadh gu tur gun choimeas), thèid an inneal-làimhseachaidh a ghairm MyApp.Listener.on_state_change/2. A’ mhòr-chuid den ùine bidh sinn a’ dèanamh gnìomh nuair a gheibh sinn teachdaireachd inbhe %Cloister.Monitor{status: :up}, a tha a’ ciallachadh: “Hello, tha an cruinneachadh air a chruinneachadh.”

Anns a 'mhòr-chuid de chùisean, stàladh consensus: 3 tha e nas fheàrr oir eadhon ged a tha sinn an dùil gum bi barrachd nodan ceangailte, thèid an gairm air ais troimhe status: :rehashingstatus: :up air nód sam bith a chaidh a chur ris no a thoirt air falbh.

Nuair a thòisicheas tu ann am modh leasachaidh, chan fheum thu ach suidheachadh consensus: 1 и Clobhsa leumaidh e gu toileach am feitheamh airson co-chruinneachadh brais nuair a chì e :nonode@nohost, No :node@host, No :[email protected] - a rèir mar a chaidh an nód a rèiteachadh (:none | :shortnames | :longnames).

Riaghladh Iarrtas Sgaoilte

Mar as trice bidh tagraidhean sgaoilte nach eil ann am falamh a’ toirt a-steach eisimeileachd sgaoilte, leithid mnesia. Tha e furasta dhuinn an ath-dhealbhadh aca a làimhseachadh bhon aon ghairm air ais on_state_change/2. An seo, mar eisimpleir, tha tuairisgeul mionaideach air mar a nì thu ath-dhealbhadh mnesia air an iteig a steach sgrìobhainnean Clobhsa.

Tha a 'phrìomh bhuannachd a bhith a' cleachdadh Clobhsa is e gu bheil e a’ dèanamh a h-uile gnìomh riatanach gus am buidheann ath-thogail às deidh atharrachadh topology fon chochall. Bidh an tagradh dìreach a’ ruith ann an àrainneachd sgaoilte a chaidh ullachadh mar-thà, leis a h-uile nod ceangailte, ge bith a bheil fios againn air na seòlaidhean IP agus mar sin ainmean nan nód ro-làimh, no an deach an sònrachadh / atharrachadh gu dinamach. Chan fheum seo suidheachadh rèiteachaidh docker sònraichte sam bith agus bho shealladh leasaiche tagraidh, chan eil eadar-dhealachadh sam bith eadar ruith ann an àrainneachd sgaoilte no ruith ann an àrainneachd ionadail. :nonode@nohost. Faodaidh tu barrachd a leughadh mu dheidhinn seo ann an sgrìobhainnean.

Ged a tha e comasach làimhseachadh iom-fhillte air atharrachaidhean topology tro bhuileachadh àbhaisteach MyApp.Listener, dh’ fhaodadh gum bi cùisean iomaill ann an-còmhnaidh far a bheil na crìochan leabharlainn sin agus claonaidhean rèiteachaidh nan clachan-oisinn buileachaidh. Tha e ceart gu leòr, dìreach gabh na tha gu h-àrd libcluster, a tha nas adhbhar coitcheann, no eadhon a’ làimhseachadh a’ bhuidheann aig ìre ìosal thu fhèin. Chan e amas an leabharlann còd seo a bhith a’ còmhdach a h-uile suidheachadh a dh’ fhaodadh a bhith ann, ach an suidheachadh as cumanta a chleachdadh às aonais pian neo-riatanach agus leth-bhreac trom.

Note: Aig an ìre seo anns an dreach thùsail bha an abairt “Happy clustering!”, agus Yandex, leis a bheil mi ag eadar-theangachadh (chan fheum mi a dhol tro fhaclairean mi-fhìn), thug e dhomh an roghainn “Happy clustering!” Is dòcha gu bheil e do-dhèanta smaoineachadh air eadar-theangachadh nas fheàrr, gu sònraichte ri linn an t-suidheachaidh geo-poilitigeach a th’ ann an-dràsta.

Source: www.habr.com

Cuir beachd ann