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.
Tsara vintana tokoa izany erlang, izay nofidianay noho ny fehezanteny mahafinaritra sy ny hype manodidina azy, dia manana kilasy voalohany
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
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
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
Miaraka amin'ity fanamafisana ity, ny fampiharana cloister dia ho MyApp.Listener.on_state_change/2
%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
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
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