Cloister → taolo e bonolo ea lihlopha tsa OTP

Hoo e ka bang kopo e 'ngoe le e 'ngoe e atlehileng ea khoebo kapele kapa hamorao e kena boemong boo ho hlokahalang hore ho be le sekhahla se otlolohileng. Maemong a mangata, o ka qala mohlala o mocha mme oa fokotsa karolelano ea mojaro. Empa ho boetse ho na le linyeoe tse sa reng letho moo re hlokang ho netefatsa hore li-node tse fapaneng lia tsebana le ho aba mosebetsi ka hloko.

Cloister → taolo e bonolo ea lihlopha tsa OTP

E ile ea bonahala e le lehlohonolo hoo erlang, eo re e khethileng bakeng sa syntax ea eona e monate le hype e potolohileng eona, e na le boemo ba pele tšehetso bakeng sa litsamaiso tse ajoang. Ka khopolo, sena se utloahala e le ntho e sa reng letho:

Molaetsa o fetang lipakeng tsa lits'ebetso ho li-node tse fapaneng, hammoho le lipakeng tsa likhokahano le li-monitor, o hlakile […]

Ka ts'ebetso, ntho e 'ngoe le e' ngoe e rarahane haholoanyane. E ajoa erlang e ile ea hlahisoa ha "container" e ne e bolela lebokose le leholo la tšepe bakeng sa ho romelloa, 'me "docker" e ne e mpa e le lentsoe le tšoanang le la longshoreman. IN IP4 ho ne ho e-na le liaterese tse ngata tse sa sebelisoeng, ho tima marang-rang hangata ho ne ho bakoa ke likhoto tse hlafunang ka lithapo, 'me nako e tloaelehileng ea nako ea tlhahiso ea tlhahiso e ne e lekantsoe ka lilemo tse mashome.

Hona joale kaofela re khona ho itlhokomela ka mokhoa o makatsang, re pakiloeng, 'me re ajoa erlang tikolohong eo ho eona liaterese tsa IP tse matla li fanoang ka molao-motheo oa ho se sebetse ho hoholo, 'me li-node li ka hlaha' me tsa nyamela ka serethe se letšehali sa kemiso. Ho qoba liqubu tsa khoutu ea boilerplate morerong o mong le o mong o tsamaisoang erlang, ho loantša tikoloho e tletseng bora, ho hlokahala thuso.

mantsoe: Kea tseba hore ho na le libcluster. E monate ruri, e na le linaleli tse fetang sekete, mongoli o tumme sechabeng, le tseo tsohle. Haeba mekhoa e fanoang ke sephutheloana sena bakeng sa ho theha le ho boloka sehlopha e lekane bakeng sa hau, kea u thabela. Ka bomalimabe, ke hloka tse ling tse ngata. Ke batla ho laola litlhophiso ka botlalo 'me ke se ke ka ba moshebelli oa ka ntle ho theater ea ho hlophisa bocha lihlopha.

litlhokahalo

Seo ke neng ke se hloka ka bonna ke laeborari e neng e tla nka taolo ea sehlopha mme e tla ba le thepa e latelang:

  • mosebetsi o pepeneneng o nang le lethathamo le thata la li-node le ho sibolloa ho matla ka lits'ebeletso erlang;
  • callback e sebetsang ka botlalo bakeng sa phetoho e 'ngoe le e' ngoe ea topology (node ​​moo, node mona, ho se tsitse ha marang-rang, ho arohana);
  • segokanyimmediamentsi sa sebolokigolo sa ho qala sehlopha se nang le mabitso a malelele le a makgutshwane, jwalo ka :nonode@nohost;
  • Ts'ehetso ea Docker ka ntle ho lebokose, ntle le ho ngola khoutu ea litšebeletso.

Ea ho qetela e bolela hore ka mor'a hore ke leke kopo sebakeng sa heno ka :nonode@nohost, kapa tikolohong e ajoang ka maiketsetso ho sebelisoa test_cluster_task, ke batla ho matha feela docker-compose up --scale my_app=3 'me u bone hore na e etsa liketsahalo tse tharo joang ho docker ntle le liphetoho tsa khoutu. Ke boetse ke batla likopo tse itšetlehileng ka tsona joalo ka mnesia - ha topology e fetoha, ka morao ho liketsahalo ba haha ​​​​sehlopha bocha ntle le ho raha ho eketsehileng ho tsoa ts'ebelisong.

Cloister e ne e sa rereloa hore e be laebrari e khonang ho etsa ntho e ’ngoe le e ’ngoe ho tloha ka ho tšehetsa sehlopha ho isa ho ho etsa kofi. Ha se bullet ea silevera e ikemiselitseng ho koahela linyeoe tsohle tse ka khonehang, kapa ho ba tharollo e felletseng ea thuto ka kutloisiso ea hore litsebi CS beha nakong ena. Laeborari ena e etselitsoe ho sebeletsa morero o hlakileng, empa e etsa mosebetsi oa eona o seng moholo haholo ka mokhoa o phethahetseng. Sepheo sena e tla ba ho fana ka ponaletso e felletseng lipakeng tsa tikoloho ea ntlafatso ea lehae le tikoloho e ajoang e rekere e tletseng lijana tse tletseng bora.

Mokhoa o khethiloeng

Cloister e reretsoe ho tsamaisoa e le kopo, leha basebelisi ba tsoetseng pele ba ka sebetsa ka ho kopanya le ho hlokomela sehlopha ka letsoho ka ho sebetsa ka kotloloho. Cloister.Manager sefateng sa mookameli oa ts'ebeliso e lebeletsoeng.

Ha e tsamaisoa e le sesebelisoa, laebrari e itšetlehile ka config, moo e balang lintlha tsa motheo tse latelang:

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

Li-parameter tse ka holimo li bolela tse latelang: Cloister e sebelisoa bakeng sa ts'ebeliso ea OTP :my_app, lisebelisoa ho sibolloa ha tšebeletso ea erlang ho hokahanya nodes, bonyane tse tharo, le MyApp.Listener mojule (ho kenya tshebetsong @behaviour Cloister.Listener) e lokiselitsoe ho amohela litsebiso mabapi le liphetoho tsa topology. Tlhaloso e qaqileng ea tlhophiso e feletseng e ka fumanoa ho litokomane.

Ka tlhophiso ena, sesebelisoa Cloister tla ba qala ka mekhahlelo, ho liehisa mokhoa oa ho qala kopo e kholo ho fihlela tumellano e fihletsoe (li-node tse tharo li kopantsoe 'me li kopantsoe, joalo ka mohlala o ka holimo.) Sena se fa kopo e kholo monyetla oa ho nahana hore ha e qala, sehlopha se se se ntse se le teng. Nako le nako ha topology e fetoha (ho tla ba le tse ngata tsa tsona, hobane li-node ha li qale ka ho feletseng), mohlokomeli o tla bitsoa. MyApp.Listener.on_state_change/2. Hangata re etsa ketso ha re fumana boemo ba molaetsa %Cloister.Monitor{status: :up}, e bolelang: “Lumela, sehlopha se kopane.”

Maemong a mangata, ho kenya consensus: 3 e nepahetse hobane leha re lebelletse hore li-node tse ngata li hokahane, mohala o tla feta status: :rehashingstatus: :up sebakeng sefe kapa sefe se sa tsoa eketsoa kapa se tlositsoeng.

Ha o qala ka mokhoa oa nts'etsopele, o hloka feela ho seta consensus: 1 и Cloister o tla tlola ka thabo ho emela kopano ea cluster ha a bona :nonode@nohostkapa :node@hostkapa :[email protected] - ho latela hore na node e hlophisitsoe joang (:none | :shortnames | :longnames).

Tsamaiso ea Ts'ebetso e Ajoang

Lisebelisoa tse ajoang tse se nang vacuum hangata li kenyelletsa litšepeho tse ajoang, joalo ka mnesia. Ho bonolo ho rona ho sebetsana le tlhophiso ea bona hape ka mohala o tšoanang on_state_change/2. Mona, mohlala, ke tlhaloso e qaqileng ea mokhoa oa ho lokisa bocha mnesia ka fofa ka litokomane Cloister.

Molemo o ka sehloohong oa ho sebelisa Cloister ke hore e etsa lits'ebetso tsohle tse hlokahalang ho aha sehlopha bocha kamora phetoho ea topology tlasa hood. Kopo e sebetsa feela tikolohong e seng e lokisitsoe, e nang le li-node tsohle tse hokahaneng, ho sa tsotelehe hore na re tseba liaterese tsa IP mme ka hona mabitso a node esale pele, kapa a abetsoe / a fetotsoe ka matla. Sena ha se hloke litlhophiso tse khethehileng tsa tlhophiso ea li-docker mme ho ea ka pono ea moqapi oa kopo, ha ho na phapang lipakeng tsa ho sebetsa sebakeng se ajoang kapa ho sebetsa sebakeng sa lehae. :nonode@nohost. U ka bala haholoanyane ka sena ho litokomane.

Leha ho le thata ho sebetsana le liphetoho tsa topology ho ka khoneha ka ts'ebetsong ea tloaelo MyApp.Listener, ho ka 'na ha e-ba le maemo a mangata moo mefokolo ena ea laebrari le litlhophiso tse fapaneng li ipakang e le motheo oa ts'ebetsong. Ho lokile, nka feela tse ka holimo libcluster, e leng sepheo se akaretsang, kapa esita le ho sebetsana le sehlopha sa boemo bo tlase ka bouena. Sepheo sa laebrari ena ea khoutu ha se ho akaretsa boemo bo bong le bo bong bo ka khonehang, empa ke ho sebelisa boemo bo atileng ka ho fetesisa ntle le bohloko bo sa hlokahaleng le khopi-peista e boima.

Ela hloko: ka nako ena qalong ho ne ho e-na le poleloana e reng "Happy clustering!", 'Me Yandex, eo ke fetolelang ka eona (ha ho hlokahale hore ke fete ka lidikishinari ka bonna), e ile ea mpha khetho ea "Happy clustering!" Mohlomong ha ho khonehe ho nahana ka phetolelo e betere, haholo-holo ho latela maemo a hajoale a lipolotiki.

Source: www.habr.com

Eketsa ka tlhaloso