Cloister β†’ yano nga pagdumala sa cluster sa OTP

Hapit tanan nga malampuson nga aplikasyon sa negosyo sa madugay o sa madali mosulod sa usa ka yugto diin gikinahanglan ang pinahigda nga pag-scale. Sa daghang mga kaso, mahimo ka lang magsugod sa usa ka bag-ong instance ug pakunhuran ang average nga load. Apan adunay usab dili kaayo hinungdanon nga mga kaso diin kinahanglan naton nga masiguro nga ang lainlaing mga node nahibal-an bahin sa usag usa ug mabinantayon nga ipanghatag ang mga buluhaton.

Cloister β†’ yano nga pagdumala sa cluster sa OTP

Nahimong swerte kaayo kana erlang, nga among gipili tungod sa iyang nindot nga syntax ug hype sa palibot niini, adunay una nga klase suporta alang sa gipang-apod-apod nga mga sistema. Sa teoriya, kini morag walay hinungdan:

Ang pagpasa sa mensahe tali sa mga proseso sa lainlaing mga node, ingon man usab sa taliwala sa mga link ug mga monitor, transparent […]

Sa praktis, ang tanan medyo mas komplikado. Giapod-apod erlang naugmad sa dihang ang "container" nagpasabot ug dakong puthaw nga kahon para sa pagpadala, ug ang "docker" kay pareho lang sa longshoreman. SA IP4 adunay daghang wala'y trabaho nga mga adres, ang pagkaguba sa network kasagaran tungod sa mga ilaga nga nag-chewing sa cable, ug ang kasagaran nga oras sa pagtrabaho sa sistema sa produksiyon gisukod sa mga dekada.

Karon kitang tanan igo na sa kaugalingon, giputos, ug giapod-apod erlang sa usa ka palibot diin ang dinamikong mga IP adres gihatag sa prinsipyo sa dako nga randomness, ug ang mga node mahimong makita ug mawala sa kapritso sa wala nga tikod sa scheduler. Aron malikayan ang mga tapok sa boilerplate code sa matag proyekto nga nagdagan sa usa ka gipang-apod-apod erlang, aron mabuntog ang dili maayong palibot, gikinahanglan ang tabang.

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅: Kahibalo ko nga naa libcluster. Nindot kaayo, kini adunay sobra sa usa ka libo nga mga bituon, ang tagsulat bantog sa komunidad, ug uban pa. Kung ang mga pamaagi nga gitanyag sa kini nga pakete alang sa paghimo ug pagpadayon sa usa ka kumpol igo na alang kanimo, nalipay ako kanimo. Ikasubo, kinahanglan nako ang labi pa. Gusto nako nga kontrolon ang setup sa detalye ug dili mahimong usa ka gawas nga tumatan-aw sa teatro sa cluster reorganization.

mga kinahanglanon

Ang akong personal nga gikinahanglan mao ang usa ka librarya nga mopuli sa pagdumala sa cluster ug adunay mosunod nga mga kabtangan:

  • transparent nga trabaho nga adunay usa ka hard-coded nga lista sa mga node ug dinamikong pagkadiskobre pinaagi sa mga serbisyo erlang;
  • bug-os nga magamit nga callback alang sa matag pagbag-o sa topology (node ​​didto, node dinhi, pagkawalay kalig-on sa network, pagbahin);
  • transparent interface alang sa paglansad sa usa ka cluster nga adunay taas ug mubo nga mga ngalan, sama sa :nonode@nohost;
  • Ang suporta sa Docker gikan sa kahon, nga dili kinahanglan nga isulat ang code sa imprastraktura.

Ang ulahi nagpasabut nga pagkahuman nako gisulayan ang aplikasyon sa lokal :nonode@nohost, o sa usa ka artipisyal nga gipang-apod-apod nga palibot gamit ang test_cluster_task, modagan lang ko docker-compose up --scale my_app=3 ug tan-awa kung giunsa kini nagpatuman sa tulo ka mga higayon sa docker nga wala’y mga pagbag-o sa code. Gusto usab nako ang mga nagsalig nga aplikasyon sama mnesia - kung ang topology mausab, luyo sa mga talan-awon ilang gitukod pag-usab ang cluster mabuhi nga walay bisan unsa nga dugang nga sipa gikan sa aplikasyon.

Cloister wala gituyo nga usa ka librarya nga makahimo sa tanan gikan sa pagsuporta sa usa ka cluster hangtod sa paghimo og kape. Dili kini usa ka pilak nga bala nga nagtumong sa pagtabon sa tanan nga posible nga mga kaso, o mahimong usa ka kompleto nga solusyon sa akademiko sa kahulugan nga ang mga teorista gikan sa CS gibutang niini nga termino. Kini nga librarya gidesinyo sa pag-alagad sa usa ka tin-aw kaayo nga katuyoan, apan sa pagbuhat sa iyang dili kaayo dako nga trabaho sa hingpit. Kini nga tumong mao ang paghatag og hingpit nga transparency tali sa lokal nga kalamboan nga palibot ug sa usa ka apod-apod pagkamaunat-unat nga palibot nga puno sa kontra nga mga sudlanan.

Gipili nga pamaagi

Cloister gituyo nga ipadagan ingon usa ka aplikasyon, bisan kung ang mga advanced nga tiggamit mahimo’g magtrabaho sa pag-assemble ug pagmentinar sa cluster nga mano-mano pinaagi sa direkta nga pagdagan Cloister.Manager sa punoan sa superbisor sa target nga aplikasyon.

Kung nagdagan ingon usa ka aplikasyon, ang librarya nagsalig config, diin mabasa niini ang mosunod nga sukaranang mga bili:

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

Ang mga parametro sa ibabaw nagpasabot sa literal sa mosunod: Cloister gigamit alang sa OTP aplikasyon :my_app, mga gamit erlang pagdiskobre sa serbisyo sa pagkonektar sa mga node, labing menos tulo, ug MyApp.Listener module (pagpatuman @behaviour Cloister.Listener) gi-configure aron makadawat mga pahibalo bahin sa mga pagbag-o sa topology. Ang usa ka detalyado nga paghulagway sa kompleto nga pag-configure makita sa dokumentasyon.

Uban niini nga pag-configure, ang aplikasyon Cloister mahimong paglansad sa mga yugto, paglangan sa proseso sa pagsugod sa nag-unang aplikasyon hangtud nga maabot ang consensus (tulo ka nodes ang konektado ug konektado, sama sa pananglitan sa ibabaw.) Kini naghatag sa nag-unang aplikasyon sa oportunidad sa paghunahuna nga sa diha nga kini magsugod, ang cluster anaa na. Sa matag higayon nga ang topology mausab (adunay daghan niini, tungod kay ang mga node dili magsugod sa hingpit nga dungan), ang handler tawgon MyApp.Listener.on_state_change/2. Kadaghanan sa mga panahon naghimo kami usa ka aksyon kung makadawat kami usa ka mensahe sa status %Cloister.Monitor{status: :up}, nga nagkahulogang: β€œKumusta, ang pungpong natigom na.”

Sa kadaghanan nga mga kaso, pag-instalar consensus: 3 mao ang kamalaumon tungod kay bisan kon kita magdahom nga mas node nga magkonektar, ang callback moagi status: :rehashing β†’ status: :up sa bisan unsang bag-ong gidugang o gikuha nga node.

Kung magsugod sa mode sa pag-uswag, kinahanglan nimo nga itakda consensus: 1 ΠΈ Cloister malipayong molaktaw sa paghulat sa cluster assembly kung makakita na siya :nonode@nohost, o :node@host, o :[email protected] - depende kung giunsa pag-configure ang node (:none | :shortnames | :longnames).

Giapod-apod nga Pagdumala sa Aplikasyon

Ang gipang-apod-apod nga mga aplikasyon nga wala sa usa ka haw-ang kasagaran naglakip sa gipang-apod-apod nga mga dependency, sama sa mnesia. Sayon alang kanamo ang pagdumala sa ilang pag-configure gikan sa parehas nga callback on_state_change/2. Dinhi, pananglitan, usa ka detalyado nga paghulagway kung giunsa ang pag-reconfigure mnesia sa langaw sa dokumentasyon Cloister.

Ang nag-unang bentaha sa paggamit Cloister mao nga kini naghimo sa tanan nga gikinahanglan nga mga operasyon sa pagtukod pag-usab sa cluster human sa usa ka topology kausaban sa ilalum sa hood. Ang aplikasyon yano nga nagdagan sa usa ka naandam na nga gipang-apod-apod nga palibot, nga ang tanan nga mga node konektado, bisan kung nahibal-an namon ang mga adres sa IP ug busa ang mga ngalan sa node nang daan, o kini dinamikong gi-assign / giusab. Nagkinahanglan kini og hingpit nga walay espesyal nga mga setting sa pag-configure sa docker ug gikan sa punto sa panglantaw sa developer sa aplikasyon, walay kalainan tali sa pagdagan sa usa ka gipang-apod-apod nga palibot o pagdagan sa usa ka lokal. :nonode@nohost. Mahimo nimong mabasa ang dugang bahin niini sa dokumentasyon.

Bisan kung ang komplikado nga pagdumala sa mga pagbag-o sa topology posible pinaagi sa usa ka naandan nga pagpatuman MyApp.Listener, mahimo nga adunay kanunay nga mga kaso diin kini nga mga limitasyon sa librarya ug mga pagpihig sa pag-configure napamatud-an nga mga sukaranan sa pagpatuman. Okay ra, kuhaa lang ang naa sa taas libcluster, nga mas kinatibuk-ang katuyoan, o bisan ang pagdumala sa ubos nga lebel nga cluster sa imong kaugalingon. Ang tumong niini nga code library dili ang pagtabon sa tanang posibleng senaryo, apan ang paggamit sa labing komon nga senaryo nga walay wala kinahanglana nga kasakit ug hago nga pagkopya-paste.

Mubo nga sulat: Niini nga punto sa orihinal adunay hugpong sa mga pulong nga "Malipayon nga clustering!", ug Yandex, nga akong gihubad (dili na kinahanglan nga moagi sa mga diksyonaryo sa akong kaugalingon), nagtanyag kanako sa kapilian nga "Malipayon nga clustering!" Tingali imposible nga mahanduraw ang usa ka labi ka maayo nga paghubad, labi na sa kahayag sa karon nga kahimtang sa geopolitikal.

Source: www.habr.com

Idugang sa usa ka comment