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

рдРрд╕рд╛ рд╣реБрдЖ рдХрд┐ рдПрд░рд▓рд╛рдВрдЧ , рдЬрд┐рд╕реЗ рд╣рдордиреЗ рдЗрд╕рдХреЗ рдЕрдЪреНрдЫреЗ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдФрд░ рдкреНрд░рдЪрд╛рд░ рдХреЗ рд▓рд┐рдП рдЪреБрдирд╛, рд╡рд┐рддрд░рд┐рдд рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд▓рд┐рдП рдкреНрд░рдердо рд╢реНрд░реЗрдгреА рдХрд╛ рд╕рдорд░реНрдерди рд╣реИ ред рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ, рдпрд╣ рдЖрдо рддреМрд░ рдкрд░ рддреБрдЪреНрдЫ рд▓рдЧрддрд╛ рд╣реИ:
рд╡рд┐рднрд┐рдиреНрди рдиреЛрдбреНрд╕ рдкрд░ рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЗ рдмреАрдЪ рдореИрд╕реЗрдЬрд┐рдВрдЧ, рд╕рд╛рде рд╣реА рд▓рд┐рдВрдХ рдФрд░ рдореЙрдирд┐рдЯрд░ рдХреЗ рдмреАрдЪ рдкрд╛рд░рджрд░реНрд╢реА рд╣реИ [...]
рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ, рдЪреАрдЬреЗрдВ рдереЛрдбрд╝реА рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рд╣реИрдВред рд╡рд┐рддрд░рд┐рдд рдПрд░реНрдЧреИрдВрдЧ рддрдм рд╡рд┐рдХрд╕рд┐рдд рд╣реБрдИ рдереА рдЬрдм "рдХрдВрдЯреЗрдирд░" рдХрд╛ рдорддрд▓рдм рдкрд░рд┐рд╡рд╣рди рдХреЗ рд▓рд┐рдП рдЗрддрдиреЗ рдмрдбрд╝реЗ рд▓реЛрд╣реЗ рдХреЗ рдмрдХреНрд╕реЗ рд╕реЗ рдерд╛, рдФрд░ "рдбреЙрдХрдЯрд░" рдХреЗрд╡рд▓ рдПрдХ рдкреЛрд░реНрдЯ рд▓реЛрдбрд░ рдХрд╛ рдкрд░реНрдпрд╛рдп рдерд╛ред 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",
consensus: 3,
listener: MyApp.Listener
: 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
, , . , , , -.
рдиреЛрдЯ: рдореВрд▓ рдореЗрдВ рдЗрд╕ рдмрд┐рдВрджреБ рдкрд░ рд╡рд╛рдХреНрдпрд╛рдВрд╢ "рд╣реИрдкреНрдкреА рдХреНрд▓рд╕реНрдЯрд░рд┐рдВрдЧ!", рдФрд░ рдпреИрдВрдбреЗрдХреНрд╕, рдЬрд┐рд╕реЗ рдореИрдВ рдЕрдиреБрд╡рд╛рдж рдХрд░рддрд╛ рд╣реВрдВ (рдЦреБрдж рдХреЛ рд╢рдмреНрджрдХреЛрд╢реЛрдВ рдкрд░ рдЪрдврд╝рд╛рдИ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ), рдореБрдЭреЗ "рдЦреБрд╢ рдХреНрд▓рд╕реНрдЯрд░" рд╡рд┐рдХрд▓реНрдк рдХреА рдкреЗрд╢рдХрд╢ рдХреА! рд╢рд╛рдпрдж рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рдЕрдиреБрд╡рд╛рдж, рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рд╡рд░реНрддрдорд╛рди рднреВ рд░рд╛рдЬрдиреАрддрд┐рдХ рд╕реНрдерд┐рддрд┐ рдХреЗ рдкреНрд░рдХрд╛рд╢ рдореЗрдВ, рдХрд▓реНрдкрдирд╛ рдХрд░рдирд╛ рдЕрд╕рдВрднрд╡ рд╣реИред