Cishe zonke izicelo zebhizinisi eziphumelelayo ngokushesha noma kamuva zingena esigabeni lapho kudingeka khona ukukala okuvundlile. Ezimweni eziningi, ungavele uqale isibonelo esisha futhi wehlise isilinganiso somthwalo. Kodwa futhi kukhona amacala amancane lapho kudingeka siqinisekise ukuthi ama-node ahlukene ayazana futhi asabalalisa ngokucophelela umthwalo womsebenzi.
Kwavela inhlanhla ukuthi erlang, esiyikhethele i-syntax yayo emnandi ne-hype ezungezile, inesigaba sokuqala
Umlayezo odlula phakathi kwezinqubo kuma-node ahlukene, kanye naphakathi kwezixhumanisi nabaqaphi, usobala [β¦]
Ngokwenza, konke kuyinkimbinkimbi kancane. Kusatshalaliswe erlang yathuthukiswa lapho "isitsha" sisho ibhokisi lensimbi elikhulu lokuthutha, futhi elithi "docker" lalimane liyigama elifanayo le-longshoreman. IN IP4 kwakukhona amakheli amaningi angahlali muntu, ukunqamuka kwenethiwekhi ngokuvamile kwakubangelwa amagundane ahlafuna ngekhebula, futhi isilinganiso sesikhathi sokuphumula sohlelo lokukhiqiza sasilinganiswa emashumini eminyaka.
Manje sonke sesizimele ngokumangalisayo, sipakishiwe, futhi siyasebenza sisabalalisiwe erlang endaweni lapho amakheli e-IP ashintshayo anikezwa khona ngomgomo wokungahleliwe okukhulu, futhi amanodi angavela futhi anyamalale ngokuthanda kwesithende sangakwesokunxele somhleli. Ukuze ugweme izinqwaba zekhodi ye-boilerplate kuwo wonke amaphrojekthi asebenzisa isabalalisiwe erlang, ukulwa nemvelo enobutha, usizo luyadingeka.
Ukubhala: Ngiyazi ukuthi ukhona libcluster
izidingo
Engangikudinga mathupha kwakuwumtapo wolwazi ozothatha izintambo zokuphatha iqoqo futhi ozoba nezinto ezilandelayo:
- umsebenzi osobala ngakho kokubili uhlu olunamakhodi aqinile lwamanodi nokutholwa okuguquguqukayo ngamasevisi erlang;
- Ukubuyela emuva okusebenza ngokugcwele kulo lonke ushintsho lwe-topology (i-node lapho, indawo lapha, ukungazinzi kwenethiwekhi, ukuhlukana);
- isixhumi esibonakalayo esisobala sokwethula iqoqo elinamagama amade namafushane, njengawo
:nonode@nohost
; - Ukusekelwa kwe-Docker ngaphandle kwebhokisi, ngaphandle kokubhala ikhodi yengqalasizinda.
Okwakamuva kusho ukuthi ngemuva kokuhlola uhlelo lokusebenza endaweni :nonode@nohost
, noma endaweni esatshalaliswe ngokwenziwa kusetshenziswa test_cluster_task
docker-compose up --scale my_app=3
futhi ubone ukuthi yenza kanjani izimo ezintathu ku-docker ngaphandle kokushintshwa kwekhodi. Ngifuna nezinhlelo zokusebenza ezincikile njenge mnesia
- uma i-topology ishintsha, ngemuva kwenkundla bakha kabusha iqoqo bukhoma ngaphandle kokukhahlela okwengeziwe okuvela kuhlelo lokusebenza.
I-Cloister wawungahloselwe ukuba umtapo okwazi ukwenza yonke into kusukela ekusekeleni iqoqo kuye ekwenzeni ikhofi. Akuyona inhlamvu yesiliva ehlose ukumboza zonke izimo ezingaba khona, noma kube yisixazululo esiphelele ngokwemfundo ngendlela ososayensi abasuka kuyo. CS ifakwe kuleli gama. Lo mtapo wezincwadi uklanyelwe ukufeza injongo ecace kakhulu, kodwa wenze umsebenzi wawo ongemkhulu kakhulu ngendlela efanele. Lo mgomo kuzoba ukuhlinzeka ngokusobala okuphelele phakathi kwendawo yokuthuthukiswa kwendawo kanye nendawo enwebekayo esabalalisiwe egcwele iziqukathi ezinobutha.
Indlela ekhethiwe
I-Cloister ihloselwe ukusebenza njengohlelo lokusebenza, nakuba abasebenzisi abathuthukile bangasebenza ngokuhlanganisa nokugcinwa kweqoqo mathupha ngokusebenza ngokuqondile. Cloister.Manager
esihlahleni somphathi wohlelo oluqondiwe.
Uma isetshenziswa njengohlelo lokusebenza, umtapo wezincwadi uthembele kuwo config
, lapho ifunda khona amanani ayisisekelo alandelayo:
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
Amapharamitha angenhla asho lokhu okulandelayo: I-Cloister isetshenziselwa uhlelo lwe-OTP :my_app
, isebenzisa ukutholwa kwe-erlang service ukuxhuma amanodi, okungenani amathathu, kanye MyApp.Listener
module (ukusebenzisa @behaviour Cloister.Listener
Nalokhu ukucushwa, isicelo I-Cloister kuyoba MyApp.Listener.on_state_change/2
%Cloister.Monitor{status: :up}
, okusho ukuthi: βSawubona, iqoqo lihlangene.β
Ezimweni eziningi, ukufakwa consensus: 3
kulungile ngoba noma silindele amanodi amaningi ukuthi axhumeke, ukuphinda ushayele kuzodlula status: :rehashing
β status: :up
kunoma iyiphi i-node esanda kufakwa noma ekhishiwe.
Uma uqala kumodi yokuthuthukisa, udinga nje ukusetha consensus: 1
ΠΈ I-Cloister uzokweqa ngenjabulo ukulinda ukuhlanganiswa kweqoqo lapho ebona :nonode@nohost
, noma :node@host
, noma :[email protected]
- kuye ngokuthi i-node yakhiwe kanjani (:none | :shortnames | :longnames
).
Ukuphathwa Kwesicelo Esisabalalisiwe
Izinhlelo zokusebenza ezisabalalisiwe ezingekho esikhaleni ngokuvamile zihlanganisa okuncikile okusabalalisiwe, njengalokhu mnesia
. Kulula ngathi ukuthi siphathe ukulungiselelwa kabusha kwabo kusukela ekushayeleni emuva okufanayo on_state_change/2
. Nansi, isibonelo, incazelo eningiliziwe yendlela yokulungisa kabusha mnesia
endizeni phakathi
Inzuzo eyinhloko yokusebenzisa I-Cloister ukuthi lenza yonke imisebenzi edingekayo ukuze kwakhiwe kabusha iqoqo ngemva koshintsho lwe-topology ngaphansi kwesigqoko. Uhlelo lokusebenza lusebenza nje endaweni esabalalisiwe esesilungisiwe, nawo wonke ama-node axhunyiwe, kungakhathaliseki ukuthi siyawazi amakheli e-IP ngakho-ke amagama e-node kusengaphambili, noma anikezwe/ashintshiwe. Lokhu akudingi nhlobo izilungiselelo ezikhethekile zokumisa idokha futhi ngokombono womthuthukisi wohlelo lokusebenza, awukho umehluko phakathi kokusebenza endaweni esabalalisiwe noma ukusebenza endaweni. :nonode@nohost
. Ungafunda kabanzi ngalokhu ku
Nakuba ukuphathwa okuyinkimbinkimbi kwezinguquko ze-topology kungenzeka ngokusebenzisa ukuqaliswa ngokwezifiso MyApp.Listener
, kungase kuhlale kunezimo lapho le mikhawulo yelabhulali kanye nokuchema kokucushwa kuba yisisekelo sokusebenzisa. Kulungile, vele uthathe okungenhla libcluster
, okuyinhloso evamile, noma uzibambele ngokwakho iqoqo lezinga eliphansi. Umgomo walo mtapo wezincwadi wekhodi awukona ukuhlanganisa zonke izimo ezingaba khona, kodwa ukusebenzisa isimo esivame kakhulu ngaphandle kobuhlungu obungadingekile kanye ne-copy-paste enzima.
Qaphela: kuleli qophelo koqobo bekukhona umusho othi βHappy clustering!β, kanye neYandex, engihumusha ngayo (akudingeki ngidlule kwizichazamazwi ngokwami), inginikeze inketho βUkuhlanganisa okujabulisayo!β Mhlawumbe akunakwenzeka ukucabanga ukuhumusha okungcono, ikakhulukazi uma kubhekwa isimo samanje se-geopolitical.
Source: www.habr.com