рдХреНрд▓рд┐рд╕реНрдЯрд░ -> рдЖрд╕рд╛рди рдУрдЯреАрдкреА рдХреНрд▓рд╕реНрдЯрд░ рдкреНрд░рдмрдВрдзрди

рд▓рдЧрднрдЧ рд╣рд░ рд╕рдлрд▓ рд╡реНрдпрд╡рд╕рд╛рдп рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЬрд▓реНрдж рдпрд╛ рдмрд╛рдж рдореЗрдВ рдПрдХ рдЪрд░рдг рдореЗрдВ рдкреНрд░рд╡реЗрд╢ рдХрд░рддрд╛ рд╣реИ рдЬрдм рдХреНрд╖реИрддрд┐рдЬ рд╕реНрдХреЗрд▓рд┐рдВрдЧ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдХрдИ рдорд╛рдорд▓реЛрдВ рдореЗрдВ, рдЖрдк рдмрд╕ рдПрдХ рдирдпрд╛ рдЙрджрд╛рд╣рд░рдг рд╢реБрд░реВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдФрд╕рдд рд▓реЛрдб рдХреЛ рдХрдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рдХрдо рддреБрдЪреНрдЫ рдорд╛рдорд▓реЗ рд╣реИрдВ рдЬрдм рд╣рдореЗрдВ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рд╡рд┐рднрд┐рдиреНрди рдиреЛрдбреНрд╕ рдПрдХ-рджреВрд╕рд░реЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирддреЗ рд╣реИрдВ рдФрд░ рдХрд╛рд░реНрдпрднрд╛рд░ рдХреЛ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рд╡рд┐рддрд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВред


рдорда


рдРрд╕рд╛ рд╣реБрдЖ рдХрд┐ рдПрд░рд▓рд╛рдВрдЧ , рдЬрд┐рд╕реЗ рд╣рдордиреЗ рдЗрд╕рдХреЗ рдЕрдЪреНрдЫреЗ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдФрд░ рдкреНрд░рдЪрд╛рд░ рдХреЗ рд▓рд┐рдП рдЪреБрдирд╛, рд╡рд┐рддрд░рд┐рдд рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд▓рд┐рдП рдкреНрд░рдердо рд╢реНрд░реЗрдгреА рдХрд╛ рд╕рдорд░реНрдерди рд╣реИ ред рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ, рдпрд╣ рдЖрдо рддреМрд░ рдкрд░ рддреБрдЪреНрдЫ рд▓рдЧрддрд╛ рд╣реИ:


рд╡рд┐рднрд┐рдиреНрди рдиреЛрдбреНрд╕ рдкрд░ рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЗ рдмреАрдЪ рдореИрд╕реЗрдЬрд┐рдВрдЧ, рд╕рд╛рде рд╣реА рд▓рд┐рдВрдХ рдФрд░ рдореЙрдирд┐рдЯрд░ рдХреЗ рдмреАрдЪ рдкрд╛рд░рджрд░реНрд╢реА рд╣реИ [...]

рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ, рдЪреАрдЬреЗрдВ рдереЛрдбрд╝реА рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рд╣реИрдВред рд╡рд┐рддрд░рд┐рдд рдПрд░реНрдЧреИрдВрдЧ рддрдм рд╡рд┐рдХрд╕рд┐рдд рд╣реБрдИ рдереА рдЬрдм "рдХрдВрдЯреЗрдирд░" рдХрд╛ рдорддрд▓рдм рдкрд░рд┐рд╡рд╣рди рдХреЗ рд▓рд┐рдП рдЗрддрдиреЗ рдмрдбрд╝реЗ рд▓реЛрд╣реЗ рдХреЗ рдмрдХреНрд╕реЗ рд╕реЗ рдерд╛, рдФрд░ "рдбреЙрдХрдЯрд░" рдХреЗрд╡рд▓ рдПрдХ рдкреЛрд░реНрдЯ рд▓реЛрдбрд░ рдХрд╛ рдкрд░реНрдпрд╛рдп рдерд╛ред IP4 рдореЗрдВ рдиреЗрдЯрд╡рд░реНрдХ рдХреЗ рдЕрдВрддрд░рд╛рд▓ рдореЗрдВ рдХрдИ рдЕрдиреБрдкрдпреЛрдЧреА рдкрддреЗ рдереЗ - рдЬрд┐рди рдЪреВрд╣реЛрдВ рдХреЛ рдХреБрддрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рд╡реЗ рдЖрдорддреМрд░ рдкрд░ рджреЛрд╖ рджреЗрддреЗ рдереЗ, рдФрд░ рдЙрддреНрдкрд╛рджрди рдкреНрд░рдгрд╛рд▓реА рдХреЗ рдФрд╕рдд рдЕрдкрдЯрд╛рдЗрдо рдХреЛ рджрд╢рдХреЛрдВ рддрдХ рдорд╛рдкрд╛ рдЬрд╛рддрд╛ рдерд╛ред


, , erlang , IP- , . , erlang, , .


: libcluster. , ,  тАФ , .  тАФ  . , , . .



, , :


  • , erlang;
  • ( , , , );
  • , :nonode@nohost;
  • , .

, , :nonode@nohost, - test_cluster_task, docker-compose up --scale my_app=3 , - . , , mnesia тАФ , - .


Cloister , : . , , , CS . , . , .



Cloister , (assembly and maintainance) , Cloister.Manager .


, config, :


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

: Cloister OTP :my_app, erlang service discovery , , MyApp.Listener ( @behaviour Cloister.Listener) . .


, Cloister , ( , .) , , . ( , ), MyApp.Listener.on_state_change/2. , %Cloister.Monitor{status: :up}, : ┬л, ┬╗.


consensus: 3 , , , status: :rehashing тЖТ status: :up .


, consensus: 1 Cloister , :nonode@nohost, :node@host, :node@host.domain тАФ , (:none | :shortnames | :longnames).



, mnesia. on_state_change/2. , , , mnesia Cloister.


Cloister , . , , , IP- , , , /. , :nonode@nohost. .


, MyApp.Listener, , . , libcluster, , . , , , -.




рдиреЛрдЯ: рдореВрд▓ рдореЗрдВ рдЗрд╕ рдмрд┐рдВрджреБ рдкрд░ рд╡рд╛рдХреНрдпрд╛рдВрд╢ "рд╣реИрдкреНрдкреА рдХреНрд▓рд╕реНрдЯрд░рд┐рдВрдЧ!", рдФрд░ рдпреИрдВрдбреЗрдХреНрд╕, рдЬрд┐рд╕реЗ рдореИрдВ рдЕрдиреБрд╡рд╛рдж рдХрд░рддрд╛ рд╣реВрдВ (рдЦреБрдж рдХреЛ рд╢рдмреНрджрдХреЛрд╢реЛрдВ рдкрд░ рдЪрдврд╝рд╛рдИ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ), рдореБрдЭреЗ "рдЦреБрд╢ рдХреНрд▓рд╕реНрдЯрд░" рд╡рд┐рдХрд▓реНрдк рдХреА рдкреЗрд╢рдХрд╢ рдХреА! рд╢рд╛рдпрдж рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рдЕрдиреБрд╡рд╛рдж, рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рд╡рд░реНрддрдорд╛рди рднреВ рд░рд╛рдЬрдиреАрддрд┐рдХ рд╕реНрдерд┐рддрд┐ рдХреЗ рдкреНрд░рдХрд╛рд╢ рдореЗрдВ, рдХрд▓реНрдкрдирд╛ рдХрд░рдирд╛ рдЕрд╕рдВрднрд╡ рд╣реИред


All Articles