Phantse zonke izicelo zeshishini eziphumeleleyo ngokukhawuleza okanye kamva zingena kwinqanaba apho kufuneka ukulinganisa okuthe tye. Kwiimeko ezininzi, unokuqalisa nje umzekelo omtsha kwaye unciphise umndilili womthwalo. Kodwa kukho iimeko ezincinci apho kufuneka siqinisekise ukuba iindawo ezahlukeneyo ziyazi malunga nomnye kwaye zisasaze ngononophelo umthwalo womsebenzi.
Kwavela ngethamsanqa ukuba erlang, esiyikhethileyo ngenxa ye-syntax yayo emnandi kunye ne-hype ejikeleze kuyo, inodidi lokuqala
Umyalezo odlulayo phakathi kweenkqubo kwiindawo ezahlukeneyo, kunye naphakathi kwamakhonkco kunye nabahloli, uyabonakala [β¦]
Enyanisweni, yonke into inzima ngakumbi. Kusasazwe erlang yaphuhliswa xa igama elithi "container" lithetha ibhokisi yentsimbi enkulu yokuthunyelwa ngenqanawa, kwaye "docker" yayisisithethantonye selongshoreman. IN IP4 kwakukho iidilesi ezininzi ezingasetyenziswanga, ukucinywa kwenethiwekhi ngokuqhelekileyo kwakubangelwa ngamagundane ahlafuna ngeentambo, kunye nexesha eliqhelekileyo lenkqubo yokuvelisa imilinganiselo yamashumi eminyaka.
Ngoku sonke sizimele ngokumangalisayo, sipakishwe, kwaye sisebenza sisasazwa erlang kwindawo apho iidilesi ze-IP eziguquguqukayo zinikezelwa kumgaqo wokungakhethi okukhulu, kunye neendawo ezinokuthi zivele kwaye zinyamalale kwi-whim yesithende sasekhohlo somcwangcisi. Ukunqanda imfumba yekhowudi yeboilerplate kwiprojekthi nganye eqhuba ukuhanjiswa erlang, ukulwa nemekobume enobutshaba, uncedo luyafuneka.
Qaphela:: Ndiyazi ukuba ukhona libcluster
iimfuno
Into ebendiyidinga ngokwam yayilithala leencwadi elaliza kuthatha ulawulo lweqela kwaye lizakuba nezi propati zilandelayo:
- umsebenzi ocacileyo kunye noluhlu olunzima lwekhowudi kunye nokufumanisa okuguquguqukayo ngeenkonzo erlang;
- Ukufowunelwa okusebenzayo ngokupheleleyo kulo lonke utshintsho lwe-topology (indawo apho, indawo apha, ukungazinzi kwenethiwekhi, ukwahlula);
- ujongano olucacileyo lokwazisa iqela elinamagama amade namafutshane, njengaku
:nonode@nohost
; - Inkxaso yeDocker ngaphandle kwebhokisi, ngaphandle kokubhala ikhowudi yeziseko zophuhliso.
Le yokugqibela ithetha ukuba emva kokuba ndivavanye isicelo ekuhlaleni :nonode@nohost
, okanye kwindawo esasazwe ngokwenziwa kusetyenziswa test_cluster_task
docker-compose up --scale my_app=3
kwaye ubone ukuba iqhuba njani iimeko ezintathu kwi-docker ngaphandle kotshintsho lwekhowudi. Ndifuna kwakhona izicelo ezixhomekeke njenge mnesia
-Xa i-topology itshintsha, emva kwemidlalo bayakha kwakhona iqela ngaphandle kokukhaba okongeziweyo kwisicelo.
UCloister kwakungenzelwanga ukuba ibe lithala leencwadi elikwaziyo ukwenza yonke into ukusuka ekuxhaseni iqela ukuya ekwenzeni ikofu. Ayiyombumbulu yesilivere ejonge ukugubungela zonke iimeko ezinokubakho, okanye ibe sisisombululo esipheleleyo ngokwemfundo ngokwengqiqo yokuba iithiyori ezivela CS ibekwe kweli xesha. Eli thala leencwadi lenzelwe ukukhonza injongo ecacileyo, kodwa lenze umsebenzi walo ongemkhulu kakhulu ngokugqibeleleyo. Le njongo iya kuba kukubonelela ngokungafihlisi okupheleleyo phakathi kwemekobume yophuhliso lwengingqi kunye nemekobume enwebekayo esasaziweyo ezele zizikhongozeli ezinobutshaba.
Indlela ekhethiweyo
UCloister yenzelwe ukuba iqhutywe njengesicelo, nangona abasebenzisi abaphambili banokusebenza ngokuhlanganisa kunye nokugcinwa kweqela ngesandla ngokuqhuba ngokuthe ngqo. Cloister.Manager
kumthi womphathi wesicelo ekujoliswe kuko.
Xa iqhutywa njengesicelo, ithala leencwadi lixhomekeke kuyo config
, apho ifunda khona la maxabiso asisiseko 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
Iiparamitha ezingasentla zithetha ngokuthe ngqo oku kulandelayo: UCloister isetyenziselwa usetyenziso lwe-OTP :my_app
, isebenzisa ukufunyanwa kwenkonzo yeerlang ukudibanisa iindawo, ubuncinane ezintathu, kunye MyApp.Listener
imodyuli (ukuphumeza @behaviour Cloister.Listener
Ngolu qwalaselo, isicelo UCloister iya kuba MyApp.Listener.on_state_change/2
%Cloister.Monitor{status: :up}
, okuthetha ukuthi: "Molo, iqela lihlangene."
Kwiimeko ezininzi, ukufakela consensus: 3
yeyona nto ilungileyo kuba nokuba silindele ukuba iindawo ezininzi ziqhagamshelane, i-callback iya kudlula status: :rehashing
β status: :up
kuyo nayiphi na indawo entsha yokongeza okanye esusiweyo.
Xa uqala kwimo yophuhliso, kufuneka nje ukuseta consensus: 1
ΠΈ UCloister izakutsiba ngovuyo ukulinda indibano yeqela xa ibona :nonode@nohost
okanye :node@host
okanye :[email protected]
- kuxhomekeke kwindlela i node yamiselwa ngayo (:none | :shortnames | :longnames
).
ULawulo lweSicelo esiSasaziwe
Izicelo ezisasaziweyo ezingekho kwi-vacuum zihlala zibandakanya ukuxhomekeka kokusasazwa, njenge mnesia
. Kulula kuthi ukuba siphathe uhlengahlengiso lwabo kwi-callback efanayo on_state_change/2
. Apha, umzekelo, inkcazo eneenkcukacha yendlela yokuqwalasela kwakhona mnesia
kubhabho ungene
Inzuzo ephambili yokusebenzisa UCloister kukuba yenza yonke imisebenzi eyimfuneko yokwakha ngokutsha iqela emva kotshintsho lwe-topology phantsi kwentloko. Isicelo siqhuba ngokulula kwindawo esele ilungisiwe esasaziweyo, nazo zonke iindawo eziqhagamshelweyo, kungakhathaliseki ukuba siyazazi iidilesi ze-IP kwaye ngoko ke amagama eendawo eziphambili kwangaphambili, okanye ziye zabelwa/zitshintshiwe. Oku kufuna ukuba akukho mahluko okhethekileyo woqwalaselo lwedocker kwaye ukusuka kwindawo yembono yomphuhlisi wesicelo, akukho mahluko phakathi kokusebenza kwindawo esasaziweyo okanye ukusebenza kwindawo yendawo. :nonode@nohost
. Unokufunda ngakumbi malunga noku kwi
Nangona ukuphathwa okuntsonkothileyo kotshintsho lwe-topology kunokwenzeka ngokuphunyezwa kwesiko MyApp.Listener
, kunokuhlala kukho iimeko apho le mida yethala leencwadi kunye nokuthambekela koqwalaselo kubonakala kusisiseko sokuphunyezwa. Kulungile, thatha nje oku kungasentla libcluster
, eyona njongo-jikelele ngakumbi, okanye nokubamba iqela elikumgangatho ophantsi ngokwakho. Injongo yale khowudi yelayibrari ayikokugubungela yonke imeko enokwenzeka, kodwa kukusebenzisa eyona meko iqhelekileyo ngaphandle kweentlungu ezingeyomfuneko kunye nekopi-uncamathisele enzima.
Qaphela: ngeli xesha kwi-original kwakukho ibinzana elithi "Iqela elonwabileyo!", Kwaye i-Yandex, endiyiguqulela ngayo (akufuneki ndihambe ngezichazi-magama ngokwam), yandinika ukhetho "Ukudibanisa okuvuyisayo!" Mhlawumbi akunakwenzeka ukucinga inguqulelo engcono, ngakumbi xa kujongwa imeko yangoku ye-geopolitical.
umthombo: www.habr.com