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.
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
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
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
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
Leis an rèiteachadh seo, an tagradh Clobhsa Bidh MyApp.Listener.on_state_change/2
%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: :rehashing
→ status: :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
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
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