Cloister → fudud oo maaraynta kooxda OTP

Ku dhawaad ​​codsi kasta oo ganacsi oo guulaysta mar dhow ama hadhow waxa uu galaa marxalad loo baahan yahay miisaan toosan. Xaalado badan, waxaad si fudud u bilaabi kartaa tusaale cusub oo aad yareyn kartaa celceliska culeyska. Laakiin waxa kale oo jira kiisas aan fududayn oo aan u baahannahay in aan hubinno in qanjidhada kala duwani ay ogaadaan midba midka kale oo si taxadar leh u qaybiyo culeyska shaqada.

Cloister → fudud oo maaraynta kooxda OTP

Waxay noqotay mid nasiib leh khaldamay, oo aan u dooranay eray-bixinteeda wacan iyo buunbuuninteeda ku xeeran, waxay leedahay heerka koowaad taageerada nidaamyada la qaybiyey. Aragti ahaan, tani waxay gabi ahaanba u muuqataa wax aan fududayn:

Farriinta u dhexeysa hababka qanjidhada kala duwan, iyo sidoo kale inta u dhaxaysa xiriiriyeyaasha iyo kormeerayaasha, waa mid hufan [...]

Ficil ahaan, wax walba waa xoogaa dhib badan. Qaybiyay khaldamay waxa la sameeyay markii "konteenar" loola jeedo sanduuq weyn oo bir ah oo lagu raro, iyo "docker" waxay si fudud ula mid ahayd Longshoreman. IN IP4 waxaa jiray ciwaanno badan oo aan cidna ku jirin, kala go'a shabakada waxaa badanaa sababa jiirarka ku ruuga fiilada, celceliska wakhtiga nidaamka wax soo saarkana waxaa la qiyaasay tobanaan sano.

Hadda waxaan dhammaanteen si cajiib ah isku filan nahay, baakadeysannahay, oo loo qaybinay khaldamay jawiga ciwaanka IP-ga ee firfircoon waxaa lagu bixiyaa mabda'a randomness weyn, iyo noodes muuqan karaan oo baaba'aan rabitaanka ciribta bidix ee jadwalka. Si looga fogaado tuulmada koodka kululeeyaha ee mashruuc kasta oo socodsiinaya qaybsan khaldamay, si loola dagaallamo deegaanka colaadeed, waxaa loo baahan yahay gargaar.

tacliiq: Waan ka warqabaa inay jirto libcluster. Runtii aad bay u qurux badan tahay, waxay leedahay in ka badan kun xiddigood, qoraagu caan ayuu ku yahay bulshada dhexdeeda, iyo waxaas oo dhan. Haddii hababka ay bixiso xirmadan ee abuurista iyo ilaalinta kooxdu ay kugu filan yihiin, waan kugu faraxsanahay. Nasiib darro, wax badan ayaan u baahanahay. Waxaan rabaa inaan si faahfaahsan u xakameeyo habaynta oo aanan noqon daawade dibadda ka ah masraxa dib u habeynta kooxda.

shuruudaha

Waxa aan shakhsi ahaan u baahnaa waxay ahayd maktabad la wareegaysa maamulka kutlada oo yeelan doonta guryahan soo socda:

  • shaqo hufan oo leh liis adag oo noodhka ah iyo helitaanka firfircoon ee adeegyada khaldamay;
  • dib u soo celinta si buuxda u shaqeyneysa ee isbeddel kasta oo topology ah (node ​​halkaas, noode halkan, xasillooni la'aanta shabakadda, kala-baxa);
  • interface hufan oo lagu soo saarayo koox magacyo dheer iyo kuwo gaaban leh, sida :nonode@nohost;
  • Taageerada Docker ka baxsan sanduuqa, adoon qorin koodka kaabayaasha.

Tan dambe waxay ka dhigan tahay ka dib markii aan tijaabiyay codsiga gudaha gudaha :nonode@nohost, ama deegaan si macmal ah loo qaybiyey iyadoo la isticmaalayo test_cluster_taskKaliya waxaan rabaa inaan ordo docker-compose up --scale my_app=3 oo arag sida ay u fuliso saddex xaaladood oo docker ah iyada oo aan wax kood ah isbeddelin. Waxaan sidoo kale rabaa codsiyo ku tiirsan sida mnesia - marka topology-ga isbeddelo, muuqaalka gadaashiisa waxay dib u dhisaan kutlada si toos ah iyada oo aan wax laad dheeraad ah ka helin codsiga.

Cloister looguma talogelin inay noqoto maktabad awood u leh wax kasta laga bilaabo taageeridda koox ilaa samaynta kafeega. Ma aha xabbad qalin ah oo ujeeddadeedu tahay in ay daboosho dhammaan kiisaska suurtagalka ah, ama ay noqoto xal tacliimeed dhammaystiran marka la eego dareenka ay ka soo jeedaan aragtiyaha. CS geli ereygan. Maktabaddan waxa loogu talagalay inay u adeegto ujeeddo aad u cad, laakiin shaqadeeda aan aadka u weyn u qabin si dhammaystiran. Hadafkani wuxuu noqon doonaa in la bixiyo daah-furnaan dhammaystiran oo ka dhexeeya deegaanka horumarinta deegaanka iyo deegaan dabacsan oo la qaybiyey oo ay ka buuxaan weelal colaadeed.

Habka la doortay

Cloister waxaa loogu talagalay in loo socodsiiyo codsi ahaan, in kasta oo isticmaaleyaasha horumarsan ay la shaqayn karaan isku-ururinta iyo dayactirka kooxda iyagoo si toos ah u ordaya Cloister.Manager geedka kormeeraha codsiga ee bartilmaameedka.

Marka loo shaqeeyo sidii codsi, maktabaddu waxay ku tiirsan tahay config, kaas oo ay ka akhrido qiyamka aasaasiga ah ee soo socda:

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

Halbeegyada sare waxay macno ahaan ka dhigan yihiin kuwan: Cloister loo isticmaalo codsiga OTP :my_app, isticmaal Helitaanka adeegga erlang in lagu xidho noodhka, ugu yaraan saddex, iyo MyApp.Listener module (fulinta @behaviour Cloister.Listener) waxaa loo habeeyey inuu helo ogaysiisyada ku saabsan isbeddellada topology-ga. Sharaxaad faahfaahsan oo ku saabsan qaabaynta dhamaystiran ayaa laga heli karaa dukumentiyo.

Qaabayntan, codsiga Cloister noqon doonaa bilaabista marxalado, dib u dhigista habka bilaabista codsiga ugu muhiimsan ilaa la isku raacsan yahay (saddex qandho ayaa isku xiran oo isku xiran, sida tusaalaha kore.) Tani waxay siinaysaa codsiga ugu weyn fursad uu u qaato in marka uu bilowdo, kooxdu waa la heli karaa. Mar kasta oo topology-ga isbeddelo (waxaa jiri doona qaar badan oo iyaga ka mid ah, sababtoo ah noodhyadu si buuxda uma bilaabaan), maamulaha ayaa loo yeedhi doonaa MyApp.Listener.on_state_change/2. Inta badan waxaanu samaynaa fal marka aanu helno fariinta xaalada %Cloister.Monitor{status: :up}, oo macneheedu yahay: "Hello, kooxdu waa la ururiyey."

Inta badan, rakibidda consensus: 3 waa mid aad u fiican sababtoo ah xitaa haddii aan fileyno in noono badan ay isku xiraan, dib-u-celinta ayaa soo bixi doonta status: :rehashingstatus: :up meel kasta oo cusub oo lagu daray ama laga saaray.

Markaad bilowdo habka horumarinta, kaliya waxaad u baahan tahay inaad dejiso consensus: 1 и Cloister wuxuu si farxad leh uga boodi doonaa sugidda kulanka kooxda markuu arko :nonode@nohost, ama :node@host, ama :[email protected] - waxay kuxirantahay sida loo habeeyey noodhka (:none | :shortnames | :longnames).

Maareynta Codsiga Qaybsan

Codsiyada la qaybiyay ee aan ku jirin meel faaruq ah sida caadiga ah waxaa ka mid ah ku tiirsanaanta qaybsan, sida mnesia. Way noo fududahay inaan dib u habayntooda ka qabanno isla dib-u-soo-warid la mid ah on_state_change/2. Halkan, tusaale ahaan, waa sharraxaad faahfaahsan oo ku saabsan sida dib loo habeynayo mnesia duulista dukumentiyo Cloister.

Faa'iidada ugu weyn ee isticmaalka Cloister waa in ay fuliso dhammaan hawlgallada lagama maarmaanka u ah dib-u-dhiska kooxda ka dib isbeddelka topology-ga daboolka hoostiisa. Codsigu wuxuu si fudud ugu shaqeeyaa jawi hore loo diyaariyey, iyadoo dhammaan qanjidhada ku xidhan yihiin, iyadoon loo eegin haddii aan hore u naqaano ciwaannada IP-yada iyo sidaas darteed magacyada noodhka hore, ama si firfircoon ayaa loo qoondeeyey/la beddelay. Tani waxay gabi ahaanba u baahan tahay ma jiro habayn gaar ah oo qaabaynta docker-ka iyo marka laga eego aragtida horumariyaha arjiga, ma jiro farqi u dhexeeya ku socodsiinta deegaan qaybsan ama ku socodsiinta mid maxalli ah. :nonode@nohost. Waxaad wax badan oo arrintan ku saabsan ka akhriyi kartaa gudaha dukumentiyo.

In kasta oo wax ka qabashada adag ee isbeddellada topology ay suurtagal tahay iyada oo loo marayo dhaqan-galin gaar ah MyApp.Listener, waxa laga yaabaa inay had iyo jeer jiraan kiisas cidhiidhi ah oo xaddidan maktabadahan iyo eexda qaabeynta ay caddeeyaan inay yihiin rukunnada hirgelinta. Waa ok, kaliya qaado kuwa sare libcluster, taas oo ah ujeedo guud oo badan, ama xitaa laftaadu gacanta ku hayso kooxda heerka hoose. Hadafka maktabadda code-kani maaha in la daboolo xaalad kasta oo suurtagal ah, laakiin waa in la isticmaalo seenyada ugu caansan iyada oo aan la helin xanuun aan loo baahnayn iyo koobi-koobi dhib badan.

Fiiro gaar ah: Halkaa marka ay marayso asal ahaan waxaa jiray weedha "Koox farxad leh!", iyo Yandex, oo aan ku turjumay (ma aha inaan ku dhex maro qaamuus lafteyda), waxay i siisay ikhtiyaarka "Koox farxad leh!" Waxaa laga yaabaa inay tahay wax aan macquul aheyn in la qiyaaso tarjumaad ka wanaagsan, gaar ahaan marka la eego xaaladda juqraafiyeed ee hadda jirta.

Source: www.habr.com

Add a comment