Cloister β†’ fitantanana cluster OTP tsotra

Saika ny fampiharana ara-barotra mahomby rehetra na ho ela na ho haingana dia miditra amin'ny dingana iray izay ilana fanamafisam-peo marindrano. Amin'ny tranga maro, azonao atao ny manomboka ohatra vaovao fotsiny ary mampihena ny salan'isa entana. Saingy misy ihany koa ny tranga tsy dia misy dikany loatra izay ilaintsika hahazoana antoka fa mifankahalala sy mizara amim-pitandremana ny enta-mavesatra ny nodes samihafa.

Cloister β†’ fitantanana cluster OTP tsotra

Tsara vintana tokoa izany erlang, izay nofidianay noho ny fehezanteny mahafinaritra sy ny hype manodidina azy, dia manana kilasy voalohany fanohanana ny rafitra zaraina. Raha ny teoria dia toa tsy misy dikany izany:

Ny hafatra mandalo eo anelanelan'ny dingana amin'ny node samihafa, ary koa eo amin'ny rohy sy ny mpanara-maso, dia mangarahara [...]

Amin'ny fampiharana, ny zava-drehetra dia somary sarotra kokoa. nozaraina erlang dia novolavolaina rehefa midika hoe boaty vy lehibe ho an'ny fandefasana ny "container", ary ny "docker" dia teny mitovy amin'ny hoe longshoreman. IN IP4 maro ny adiresy tsy misy olona, ​​ny fahatapahan'ny tambajotra dia matetika vokatry ny voalavo mitsako amin'ny telegrama, ary ny salan'isan'ny fotoana fiasan'ny rafitra famokarana dia norefesina tao anatin'ny am-polony taona maro.

Amin'izao fotoana izao isika rehetra dia tena mahaleo tena, feno fonosana ary zaraina erlang amin'ny tontolo iray izay atolotra ny adiresy IP mavitrika amin'ny foto-kevitry ny kisendrasendra lehibe, ary ny nodes dia mety hiseho sy hanjavona amin'ny alΓ lan'ny ombelahin-tongony havia amin'ny fandaharam-potoana. Mba hialana amin'ny fitambaran'ny kaody boilerplate amin'ny tetikasa rehetra mandeha amin'ny fizarana erlang, mba hiadiana amin'ny tontolo feno fankahalana dia ilaina ny fanampiana.

fanamarihana: Fantatro fa misy libcluster. Tena mahafinaritra, manana kintana mihoatra ny arivo, malaza eo amin'ny fiarahamonina ny mpanoratra, sy ny sisa. Raha ampy ho anao ny fomba atolotr'ity fonosana ity amin'ny famoronana sy fikojakojana cluster, dia faly ho anao aho. Indrisy fa mila zavatra betsaka kokoa aho. Te-hifehy ny fametrahana amin'ny antsipiriany aho fa tsy ho mpijery ivelany ao amin'ny teatra amin'ny fanavaozana cluster.

fepetra takiana

Ny zavatra nilaiko manokana dia tranomboky iray izay handray ny fitantanana ny cluster ary hanana ireto fananana manaraka ireto:

  • miasa mangarahara miaraka amin'ny lisitry ny node misy kaody sarotra sy ny fikarohana mavitrika amin'ny alΓ lan'ny serivisy erlang;
  • callback miasa tanteraka ho an'ny fanovana topologie rehetra (node ​​any, node eto, tsy fandriam-pahalemana tambajotra, fisarahana);
  • interface tsara mangarahara amin'ny fandefasana cluster misy anarana lava sy fohy, toy ny amin'ny :nonode@nohost;
  • Manohana ny Docker ivelan'ny boaty, tsy mila manoratra kaody fotodrafitrasa.

Ity farany dia midika fa rehefa avy nanandrana ny fampiharana teo an-toerana aho :nonode@nohost, na ao anaty tontolo zaraina artifisialy mampiasa test_cluster_task, te-hihazakazaka fotsiny aho docker-compose up --scale my_app=3 ary jereo ny fomba fanatanterahana tranga telo ao amin'ny docker tsy misy fanovana code. Mila fampiharana miankina toy izany koa aho mnesia - rehefa miova ny topologie, ao ambadiky ny sehatra dia manangana ny cluster velona izy ireo tsy misy daka fanampiny avy amin'ny fampiharana.

cloister Tsy natao ho trano famakiam-boky mahavita ny zava-drehetra manomboka amin'ny fanohanana vondron'olona ka hatramin'ny fanaovana kafe. Tsy bala volafotsy izay mikendry ny handrakotra ny tranga rehetra mety hitranga, na ho vahaolana feno amin'ny akademika amin'ny heviny izay ny teorista avy amin'ny CS apetraka amin'io teny io. Ity trano famakiam-boky ity dia natao hanatontosana tanjona mazava tsara, saingy manao ny asany tsy dia lehibe loatra. Ity tanjona ity dia ny hanomezana mangarahara tanteraka eo amin'ny tontolon'ny fampandrosoana eo an-toerana sy ny tontolo elastika zaraina feno kaontenera feno fankahalana.

Fomba nisafidianana

cloister natao ho fampiharana, na dia afaka miasa amin'ny fanangonana sy fikojakojana ny cluster amin'ny alΓ lan'ny fampandehanana mivantana aza ireo mpampiasa efa mandroso Cloister.Manager ao amin'ny hazo mpanara-maso ny fampiharana kendrena.

Rehefa mihazakazaka ho fampiharana dia miankina amin'ny tranomboky config, izay ahitana ireto soatoavina fototra manaraka ireto:

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

Ireo paramètre etsy ambony dia midika ara-bakiteny ireto manaraka ireto: cloister ampiasaina amin'ny fampiharana OTP :my_app, fampiasana erlang service discovery mampifandray nodes, fara fahakeliny, telo, ary MyApp.Listener Module (fampiharana @behaviour Cloister.Listener) dia namboarina handraisana fampandrenesana momba ny fiovan'ny topolojia. Ny famaritana amin'ny antsipiriany momba ny fanamafisana feno dia azo jerena ao tahirin-kevitra.

Miaraka amin'ity fanamafisana ity, ny fampiharana cloister dia ho fanombohana tsikelikely, fanemorana ny fizotran'ny fanombohana ny fampiharana lehibe mandra-pahatongan'ny marimaritra iraisana (nodes telo no mifandray sy mifandray, toy ny amin'ny ohatra etsy ambony.) Izany dia manome ny fampiharana lehibe ny fahafahana mihevitra fa rehefa manomboka izy dia efa misy ny cluster. Isaky ny miova ny topologie (hisy maro amin'izy ireo, satria tsy manomboka mifanandrify tanteraka ny node), dia hantsoina ny mpitantana. MyApp.Listener.on_state_change/2. Amin'ny ankamaroan'ny fotoana dia manao hetsika isika rehefa mahazo hafatra momba ny sata %Cloister.Monitor{status: :up}, izay midika hoe: β€œManahoana, tafangona ny cluster”.

Amin'ny ankamaroan'ny tranga, fametrahana consensus: 3 dia tsara indrindra satria na dia manantena node maro kokoa aza isika hifandray, dia handeha ny antso status: :rehashing β†’ status: :up amin'ny node vao nampiana na nesorina.

Rehefa manomboka amin'ny fomba fampandrosoana ianao dia mila mametraka fotsiny consensus: 1 ΠΈ cloister dia ho faly handalo ny fiandrasana ny fivorian'ny cluster rehefa mahita izy :nonode@nohost, na :node@host, na :[email protected] - miankina amin'ny fomba nanamboarana ny node (:none | :shortnames | :longnames).

Fitantanana fampiharana zaraina

Ny fampiharana zaraina tsy ao anaty banga dia matetika ahitana fiankinan-doha zaraina, toy ny mnesia. Mora ho anay ny mitantana ny fanamboarana azy ireo avy amin'ny antso miverina on_state_change/2. Eto, ohatra, ny famaritana amin'ny antsipiriany ny fomba fanamboarana mnesia amin'ny sidina tahirin-kevitra cloister.

Ny tombony lehibe amin'ny fampiasana cloister dia ny manao ny asa rehetra ilaina amin'ny fananganana indray ny cluster aorian'ny fiovan'ny topolojia ambanin'ny hood. Ny fampiharana dia mandeha amin'ny tontolo efa voaomana fotsiny, miaraka amin'ny nodes rehetra mifandray, na inona na inona fantatsika ny adiresy IP ary noho izany ny anaran'ny node mialoha, na efa voatendry / niova izy ireo. Izany dia tsy mitaky fikandrana manokana docker manokana ary avy amin'ny fomba fijerin'ny mpamorona fampiharana dia tsy misy fahasamihafana eo amin'ny fandehanana amin'ny tontolo zaraina na ny fandehanana any an-toerana. :nonode@nohost. Afaka mamaky bebe kokoa momba izany ianao ao amin'ny tahirin-kevitra.

Na dia azo atao aza ny fikarakarana sarotra ny fanovana topolojia amin'ny alΓ lan'ny fampiharana mahazatra MyApp.Listener, mety misy foana ny trangan-javatra izay manaporofo fa ireo fetran'ny tranomboky sy ny fitongilanana fanamafisam-peo ireo no fototry ny fampiharana. Tsy maninona fa raiso ny etsy ambony libcluster, izay tanjona ankapobeny kokoa, na ianao ihany no mitantana ny cluster ambany. Ny tanjon'ity tranomboky kaody ity dia tsy ny handrakotra ny toe-javatra rehetra azo atao, fa ny fampiasana ny toe-javatra mahazatra indrindra tsy misy fanaintainana tsy ilaina sy mametaka kopia sarotra.

Fanamarihana: Tamin'io fotoana io tao amin'ny tany am-boalohany dia nisy ny andian-teny hoe "Sambatra ny clustering!", ary Yandex, izay nandikako (tsy mila mamaky diksionera ny tenako), dia nanolotra ahy ny safidy "Happy clustering!" Tsy azo atao angamba ny maka sary an-tsaina ny dikanteny tsara kokoa, indrindra manoloana ny toe-draharaha ara-jeopolitika ankehitriny.

Source: www.habr.com

Add a comment