рд▓рдЧрднрдЧ рд╣рд░реЗрдХ рд╕рдлрд▓ рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХ рдЕрдиреБрдкреНрд░рдпреЛрдЧрд▓реЗ рдврд┐рд▓реЛ рд╡рд╛ рдкрдЫрд┐ рдПрдХ рдЪрд░рдгрдорд╛ рдкреНрд░рд╡реЗрд╢ рдЧрд░реНрджрдЫ рдЬрд╣рд╛рдБ рддреЗрд░реНрд╕реЛ рд╕реНрдХреЗрд▓рд┐рдВрдЧ рдЖрд╡рд╢реНрдпрдХ рд╣реБрдиреНрдЫред рдзреЗрд░реИ рдЕрд╡рд╕реНрдерд╛рдорд╛, рддрдкрд╛рдИрдВ рдХреЗрд╡рд▓ рдирдпрд╛рдБ рдЙрджрд╛рд╣рд░рдг рд╕реБрд░реБ рдЧрд░реНрди рд░ рд▓реЛрдб рдФрд╕рдд рдШрдЯрд╛рдЙрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫред рддрд░ рддреНрдпрд╣рд╛рдБ рдкрдирд┐ рдХрдо рдорд╛рдореВрд▓реА рдХреЗрд╕рд╣рд░реВ рдЫрдиреН рдЬрд╣рд╛рдБ рд╣рд╛рдореАрд▓реЗ рд╡рд┐рднрд┐рдиреНрди рдиреЛрдбрд╣рд░реВ рдПрдХрдЕрд░реНрдХрд╛рдХреЛ рдмрд╛рд░реЗрдорд╛ рдЬрд╛рдиреНрди рд░ рдХрд╛рдордХреЛ рднрд╛рд░рд▓рд╛рдИ рд╕рд╛рд╡рдзрд╛рдиреАрдкреВрд░реНрд╡рдХ рд╡рд┐рддрд░рдг рдЧрд░реНрдиреЗ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдЫред
рдпреЛ рдзреЗрд░реИ рднрд╛рдЧреНрдпрд╢рд╛рд▓реА рдмрд╛рд╣рд┐рд░ рднрдпреЛ рдПрд░рд▓рд╛lang, рдЬреБрди рд╣рд╛рдореАрд▓реЗ рдпрд╕рдХреЛ рд╕реБрдЦрдж рд╕рд┐рдиреНрдЯреНрдпрд╛рдХреНрд╕ рд░ рдпрд╕рдХреЛ рд╡рд░рд┐рдкрд░рд┐ рд╣рд╛рдЗрдкрдХреЛ рд▓рд╛рдЧрд┐ рд░реЛрдЬреНрдпреМрдВ, рдкрд╣рд┐рд▓реЛ-рдХрдХреНрд╖рд╛ рдЫ
рд╡рд┐рднрд┐рдиреНрди рдиреЛрдбрд╣рд░реВрдорд╛ рдкреНрд░рдХреНрд░рд┐рдпрд╛рд╣рд░реВ, рд╕рд╛рдереИ рд▓рд┐рдЩреНрдХрд╣рд░реВ рд░ рдореЛрдирд┐рдЯрд░рд╣рд░реВ рдмреАрдЪрдХреЛ рд╕рдиреНрджреЗрд╢ рдкрд╛рд░рджрд░реНрд╢реА рдЫ [тАж]
рд╡реНрдпрд╡рд╣рд╛рд░рдорд╛, рд╕рдмреИ рдХреБрд░рд╛ рдЕрд▓рд┐ рдмрдвреА рдЬрдЯрд┐рд▓ рдЫред рд╡рд┐рддрд░рдг рдЧрд░рд┐рдпреЛ рдПрд░рд▓рд╛lang рдЬрдм "рдХрдиреНрдЯреЗрдирд░" рдХреЛ рдЕрд░реНрде рдвреБрд╡рд╛рдиреАрдХреЛ рд▓рд╛рдЧрд┐ рдареВрд▓реЛ рдлрд▓рд╛рдордХреЛ рдмрдХреНрд╕ рд╣реЛ, рд░ "рдбрдХрд░" рдХреЗрд╡рд▓ рд▓рд╛рдореЛ рд╢реЛрд░рдореНрдпрд╛рдирдХреЛ рдкрд░реНрдпрд╛рдпрд╡рд╛рдЪреА рд╢рдмреНрдж рдерд┐рдпреЛред IN IP4 рддреНрдпрд╣рд╛рдБ рдзреЗрд░реИ рдЕрд╡реНрдпрд╡рд╕реНрдерд┐рдд рдареЗрдЧрд╛рдирд╛рд╣рд░реВ рдерд┐рдП, рдиреЗрдЯрд╡рд░реНрдХ рдмреНрд░реЗрдХрд╣рд░реВ рд╕рд╛рдорд╛рдиреНрдпрддрдпрд╛ рдХреЗрдмрд▓ рдЪрдкрд╛рдЙрдиреЗ рдореБрд╕рд╛рдХреЛ рдХрд╛рд░рдгрд▓реЗ рднрдПрдХреЛ рдерд┐рдпреЛ, рд░ рдЙрддреНрдкрд╛рджрди рдкреНрд░рдгрд╛рд▓реАрдХреЛ рдФрд╕рдд рдЕрдкрдЯрд╛рдЗрдо рджрд╢рдХрд╣рд░реВрдорд╛ рдорд╛рдкрди рдЧрд░рд┐рдПрдХреЛ рдерд┐рдпреЛред
рдЕрдм рд╣рд╛рдореА рд╕рдмреИ рдЕрд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рд░реВрдкрдорд╛ рдЖрддреНрдордирд┐рд░реНрднрд░, рдкреНрдпрд╛рдХреЗрдЬ рдЧрд░рд┐рдПрдХреЛ, рд░ рд╡рд┐рддрд░рд┐рдд рд╡рд┐рддрд░рд┐рдд рдЫреМрдВ рдПрд░рд▓рд╛lang рдПрдХ рд╡рд╛рддрд╛рд╡рд░рдгрдорд╛ рдЬрд╣рд╛рдБ рдЧрддрд┐рд╢реАрд▓ IP рдареЗрдЧрд╛рдирд╛рд╣рд░реВ рдЙрддреНрдХреГрд╖реНрдЯ рдЕрдирд┐рдпрдорд┐рддрддрд╛рдХреЛ рд╕рд┐рджреНрдзрд╛рдиреНрддрдорд╛ рд╣рд╕реНрддрд╛рдиреНрддрд░рдг рдЧрд░рд┐рдиреНрдЫ, рд░ рдиреЛрдбрд╣рд░реВ рджреЗрдЦрд╛ рдкрд░реНрди рд░ рд╢реЗрдбреНрдпреВрд▓рд░рдХреЛ рдмрд╛рдпрд╛рдБ рд╣рд┐рд▓рдХреЛ рд▓рд╣рд░рдорд╛ рдЧрд╛рдпрдм рд╣реБрди рд╕рдХреНрдЫрдиреНред рд╡рд┐рддрд░рдг рдЧрд░рд┐рдПрдХреЛ рдкреНрд░рддреНрдпреЗрдХ рдкрд░рд┐рдпреЛрдЬрдирд╛рдорд╛ тАЛтАЛрдмреЙрдпрд▓рд░рдкреНрд▓реЗрдЯ рдХреЛрдбрдХреЛ рдвреЗрд░рдмрд╛рдЯ рдмрдЪреНрди рдПрд░рд▓рд╛langрдкреНрд░рддрд┐рдХреВрд▓ рд╡рд╛рддрд╛рд╡рд░рдгрд╕рдБрдЧ рд▓рдбреНрди рдорджреНрджрдд рдЪрд╛рд╣рд┐рдиреНрдЫред
рднрдиреНрдиреБ: рдорд▓рд╛рдИ рдерд╛рд╣рд╛ рдЫ рдХрд┐ рддреНрдпрд╣рд╛рдБ рдЫ libcluster
рдЖрд╡рд╢реНрдпрдХрддрд╛рд╣рд░реВ
рдорд▓рд╛рдИ рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдкрдорд╛ рдПрдЙрдЯрд╛ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдЪрд╛рд╣рд┐рдиреНрдЫ рдЬрд╕рд▓реЗ рдХреНрд▓рд╕реНрдЯрд░рдХреЛ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрди рд▓рд┐рдиреНрдЫ рд░ рдирд┐рдореНрди рдЧреБрдгрд╣рд░реВ рд╣реБрдиреЗрдЫ:
- рдиреЛрдбрд╣рд░реВрдХреЛ рд╣рд╛рд░реНрдб-рдХреЛрдб рдЧрд░рд┐рдПрдХреЛ рд╕реВрдЪреА рд░ рд╕реЗрд╡рд╛рд╣рд░реВ рдорд╛рд░реНрдлрдд рдЧрддрд┐рд╢реАрд▓ рдЦреЛрдЬ рджреБрд╡реИрдХреЛ рд╕рд╛рде рдкрд╛рд░рджрд░реНрд╢реА рдХрд╛рд░реНрдп рдПрд░рд▓рд╛lang;
- рдкреНрд░рддреНрдпреЗрдХ рдЯреЛрдкреЛрд▓реЛрдЬреА рдкрд░рд┐рд╡рд░реНрддрдирдХреЛ рд▓рд╛рдЧрд┐ рдкреВрд░реНрдг рд░реВрдкрдорд╛ рдХрд╛рд░реНрдпрд╛рддреНрдордХ рдХрд▓рдмреНрдпрд╛рдХ (рдиреЛрдб рддреНрдпрд╣рд╛рдБ, рдиреЛрдб рдпрд╣рд╛рдБ, рдиреЗрдЯрд╡рд░реНрдХ рдЕрд╕реНрдерд┐рд░рддрд╛, рд╡рд┐рднрд╛рдЬрди);
- рд▓рд╛рдореЛ рд░ рдЫреЛрдЯреЛ рдирд╛рдорд╣рд░реВрдХреЛ рд╕рд╛рде рдХреНрд▓рд╕реНрдЯрд░ рд╕реБрд░реБ рдЧрд░реНрдирдХреЛ рд▓рд╛рдЧрд┐ рдкрд╛рд░рджрд░реНрд╢реА рдЗрдиреНрдЯрд░рдлреЗрд╕, рдЬрд╕реНрддреИ
:nonode@nohost
; - рдбрдХрд░ рд╕рдорд░реНрдерди рдмрд╛рдХрд╕ рдмрд╛рд╣рд┐рд░, рдкреВрд░реНрд╡рд╛рдзрд╛рд░ рдХреЛрдб рд▓реЗрдЦреНрди рдмрд┐рдирд╛ред
рдкрдЫрд┐рд▓реНрд▓реЛрдХреЛ рдорддрд▓рдм рдореИрд▓реЗ рд╕реНрдерд╛рдиреАрдп рд░реВрдкрдорд╛ рдПрдкреНрд▓рд┐рдХреЗрд╕рди рдкрд░реАрдХреНрд╖рдг рдЧрд░реЗрдкрдЫрд┐ :nonode@nohost
, рд╡рд╛ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рдХреГрддреНрд░рд┐рдо рд░реВрдкрдорд╛ рд╡рд┐рддрд░рд┐рдд рд╡рд╛рддрд╛рд╡рд░рдгрдорд╛ test_cluster_task
docker-compose up --scale my_app=3
рд░ рд╣реЗрд░реНрдиреБрд╣реЛрд╕реН рдХрд┐ рдпрд╕рд▓реЗ рдХрд╕рд░реА рдХреБрдиреИ рдХреЛрдб рдкрд░рд┐рд╡рд░реНрддрди рдмрд┐рдирд╛ рдбрдХрд░рдорд╛ рддреАрдирд╡рдЯрд╛ рдЙрджрд╛рд╣рд░рдгрд╣рд░реВ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЧрд░реНрджрдЫред рдо рдкрдирд┐ рдЬрд╕реНрддреИ рдирд┐рд░реНрднрд░ рдЕрдиреБрдкреНрд░рдпреЛрдЧрд╣рд░реВ рдЪрд╛рд╣рдиреНрдЫреБ mnesia
- рдЬрдм рдЯреЛрдкреЛрд▓реЛрдЬреА рдкрд░рд┐рд╡рд░реНрддрди рд╣реБрдиреНрдЫ, рдкрд░реНрджрд╛ рдкрдЫрд╛рдбрд┐ рддрд┐рдиреАрд╣рд░реВрд▓реЗ рдПрдкреНрд▓рд┐рдХреЗрд╕рдирдмрд╛рдЯ рдХреБрдиреИ рдЕрддрд┐рд░рд┐рдХреНрдд рдХрд┐рдХ рдмрд┐рдирд╛ рдХреНрд▓рд╕реНрдЯрд░ рд▓рд╛рдЗрдн рдкреБрди: рдирд┐рд░реНрдорд╛рдг рдЧрд░реНрдЫрдиреНред
рдХреНрд▓рд╕реНрдЯрд░ рдХреНрд▓рд╕реНрдЯрд░рд▓рд╛рдИ рд╕рдорд░реНрдерди рдЧрд░реНрдиреЗрджреЗрдЦрд┐ рдХрдлреА рдмрдирд╛рдЙрдиреЗ рд╕рдмреИ рдХреБрд░рд╛рдорд╛ рд╕рдХреНрд╖рдо рдкреБрд╕реНрддрдХрд╛рд▓рдп рдмрдиреНрдиреЗ рдЙрджреНрджреЗрд╢реНрдп рдерд┐рдПрдиред рдпреЛ рдЪрд╛рдБрджреАрдХреЛ рдЧреЛрд▓реА рд╣реЛрдЗрди рдЬрд╕рд▓реЗ рд╕рдмреИ рд╕рдореНрднрд╛рд╡рд┐рдд рдХреЗрд╕рд╣рд░реВрд▓рд╛рдИ рд╕рдореЗрдЯреНрдиреЗ рд▓рдХреНрд╖реНрдп рд░рд╛рдЦреНрдЫ, рд╡рд╛ рдпрд╕ рдЕрд░реНрдердорд╛ рдПрдХ рд╢реИрдХреНрд╖рд┐рдХ рд░реВрдкрдорд╛ рдкреВрд░реНрдг рд╕рдорд╛рдзрд╛рди рд╣реЛ рдХрд┐ рд╕рд┐рджреНрдзрд╛рдиреНрддрдХрд╛рд░рд╣рд░реВ CS рдпрд╕ рдЕрд╡рдзрд┐рдорд╛ рд░рд╛рдЦреНрдиреБрд╣реЛрд╕реНред рдпреЛ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдПрдХрджрдо рд╕реНрдкрд╖реНрдЯ рдЙрджреНрджреЗрд╢реНрдп рдкреВрд░рд╛ рдЧрд░реНрди рдбрд┐рдЬрд╛рдЗрди рдЧрд░рд┐рдПрдХреЛ рд╣реЛ, рддрд░ рдпрд╕рдХреЛ рдзреЗрд░реИ рдареВрд▓реЛ рдХрд╛рдо рдкреВрд░реНрдг рд░реВрдкрдорд╛ рдЧрд░реНрдиред рдпреЛ рд▓рдХреНрд╖реНрдп рд╕реНрдерд╛рдиреАрдп рд╡рд┐рдХрд╛рд╕ рд╡рд╛рддрд╛рд╡рд░рдг рд░ рдкреНрд░рддрд┐рдХреВрд▓ рдХрдиреНрдЯреЗрдирд░рд╣рд░реВрд▓реЗ рднрд░рд┐рдПрдХреЛ рд╡рд┐рддрд░рд┐рдд рд▓реЛрдЪрджрд╛рд░ рд╡рд╛рддрд╛рд╡рд░рдг рдмреАрдЪ рдкреВрд░реНрдг рдкрд╛рд░рджрд░реНрд╢рд┐рддрд╛ рдкреНрд░рджрд╛рди рдЧрд░реНрди рд╣реБрдиреЗрдЫред
рдЫрдиреМрдЯ рдЧрд░рд┐рдПрдХреЛ рджреГрд╖реНрдЯрд┐рдХреЛрдг
рдХреНрд▓рд╕реНрдЯрд░ рдПрдкреНрд▓рд┐рдХреЗрд╕рдирдХреЛ рд░реВрдкрдорд╛ рдЪрд▓рд╛рдЙрдирдХреЛ рд▓рд╛рдЧрд┐ рдЗрд░рд╛рджрд╛ рд░рд╛рдЦрд┐рдПрдХреЛ рдЫ, рдпрджреНрдпрдкрд┐ рдЙрдиреНрдирдд рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛рд╣рд░реВрд▓реЗ рд╕реАрдзрд╛ рджреМрдбрд┐рдПрд░ рдореНрдпрд╛рдиреБрдЕрд▓ рд░реВрдкрдорд╛ рдХреНрд▓рд╕реНрдЯрд░рдХреЛ рдЕрд╕реЗрдВрдмрд▓реА рд░ рдорд░реНрдорддрдХрд╛ рд╕рд╛рде рдХрд╛рдо рдЧрд░реНрди рд╕рдХреНрдЫрдиреНред 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
рдорд╛рдерд┐рдХрд╛ рдкреНрдпрд╛рд░рд╛рдорд┐рдЯрд░рд╣рд░реВ рд╢рд╛рдмреНрджрд┐рдХ рд░реВрдкрдорд╛ рдирд┐рдореНрди рд╣реБрдиреН: рдХреНрд▓рд╕реНрдЯрд░ OTP рдЕрдиреБрдкреНрд░рдпреЛрдЧрдХреЛ рд▓рд╛рдЧрд┐ рдкреНрд░рдпреЛрдЧ рдЧрд░рд┐рдиреНрдЫ :my_app
, рдЙрдкрдпреЛрдЧрд╣рд░реБ Erlang рд╕реЗрд╡рд╛ рдЦреЛрдЬ рдиреЛрдбрд╣рд░реВ рдЬрдбрд╛рди рдЧрд░реНрди, рдХрдореНрддрд┐рдорд╛ рддреАрди, рд░ MyApp.Listener
рдореЛрдбреНрдпреБрд▓ (рд▓рд╛рдЧреВ рдЧрд░реНрджреИ @behaviour Cloister.Listener
рдпреЛ рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рди рд╕рдВрдЧ, рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдХреНрд▓рд╕реНрдЯрд░ рд╣реБрдиреЗрдЫ MyApp.Listener.on_state_change/2
%Cloister.Monitor{status: :up}
, рдЬрд╕рдХреЛ рдЕрд░реНрде рд╣реЛ: "рдирдорд╕реНрддреЗ, рдХреНрд▓рд╕реНрдЯрд░ рднреЗрд▓рд╛ рднрдпреЛред"
рдЕрдзрд┐рдХрддрд░ рдЕрд╡рд╕реНрдерд╛рдорд╛, рд╕реНрдерд╛рдкрдирд╛ consensus: 3
рдЗрд╖реНрдЯрддрдо рдЫ рдХрд┐рдирднрдиреЗ рд╣рд╛рдореАрд▓реЗ рдердк рдиреЛрдбрд╣рд░реВ рдЬрдбрд╛рди рд╣реБрдиреЗ рдЕрдкреЗрдХреНрд╖рд╛ рдЧрд░реЗ рдкрдирд┐, рдХрд▓рдмреНрдпрд╛рдХ рдорд╛рд░реНрдлрдд рдЬрд╛рдиреЗрдЫ status: :rehashing
тЖТ status: :up
рдХреБрдиреИ рдирдпрд╛рдБ рдердкрд┐рдПрдХреЛ рд╡рд╛ рд╣рдЯрд╛рдЗрдПрдХреЛ рдиреЛрдбрдорд╛ред
рд╡рд┐рдХрд╛рд╕ рдореЛрдбрдорд╛ рд╕реБрд░реБ рдЧрд░реНрджрд╛, рддрдкрд╛рдИрдВрд▓реЗ рдорд╛рддреНрд░ рд╕реЗрдЯ рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдЫ consensus: 1
╨╕ рдХреНрд▓рд╕реНрдЯрд░ рдЙрд╕рд▓реЗ рджреЗрдЦреНрджрд╛ рдЦреБрд╕реАрд╕рд╛рде рдХреНрд▓рд╕реНрдЯрд░ рдЕрд╕реЗрдВрдмрд▓реАрдХреЛ рдкреНрд░рддреАрдХреНрд╖рд╛ рдЫреЛрдбреНрдиреЗрдЫ :nonode@nohost
, рд╡рд╛ :node@host
, рд╡рд╛ :[email protected]
- рдиреЛрдб рдХрд╕рд░реА рдХрдиреНрдлрд┐рдЧрд░ рдЧрд░рд┐рдПрдХреЛ рдерд┐рдпреЛ рднрдиреНрдиреЗ рдЖрдзрд╛рд░рдорд╛ (:none | :shortnames | :longnames
).
рд╡рд┐рддрд░рд┐рдд рдЖрд╡реЗрджрди рд╡реНрдпрд╡рд╕реНрдерд╛рдкрди
рднреНрдпрд╛рдХреБрдордорд╛ рдирднрдПрдХрд╛ рд╡рд┐рддрд░рд┐рдд рдЕрдиреБрдкреНрд░рдпреЛрдЧрд╣рд░реВрдорд╛ рд╕рд╛рдорд╛рдиреНрдпрддрдпрд╛ рд╡рд┐рддрд░рд┐рдд рдирд┐рд░реНрднрд░рддрд╛рд╣рд░реВ рд╕рдорд╛рд╡реЗрд╢ рд╣реБрдиреНрдЫрдиреН, рдЬрд╕реНрддреИ mnesia
ред рд╣рд╛рдореАрд▓рд╛рдИ рдЙрд╣реА рдХрд▓рдмреНрдпрд╛рдХрдмрд╛рдЯ рддрд┐рдиреАрд╣рд░реВрдХреЛ рдкреБрди: рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рди рд╣реНрдпрд╛рдиреНрдбрд▓ рдЧрд░реНрди рд╕рдЬрд┐рд▓реЛ рдЫ on_state_change/2
ред рдпрд╣рд╛рдБ, рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐, рдХрд╕рд░реА рдкреБрди: рдХрдиреНрдлрд┐рдЧрд░ рдЧрд░реНрдиреЗ рд╡рд┐рд╕реНрддреГрдд рд╡рд┐рд╡рд░рдг рдЫ mnesia
рдорд╛ рдЙрдбрд╛рди рдорд╛
рдкреНрд░рдпреЛрдЧ рдХреЛ рдореБрдЦреНрдп рд▓рд╛рдн рдХреНрд▓рд╕реНрдЯрд░ рдпреЛ рд╣реЛ рдХрд┐ рдпрд╕рд▓реЗ рдЯреЛрдкреЛрд▓реЛрдЬреА рдкрд░рд┐рд╡рд░реНрддрди рдкрдЫрд┐ рдХреНрд▓рд╕реНрдЯрд░ рдкреБрди: рдирд┐рд░реНрдорд╛рдг рдЧрд░реНрди рд╕рдмреИ рдЖрд╡рд╢реНрдпрдХ рдХрд╛рд░реНрдпрд╣рд░реВ рдЧрд░реНрджрдЫ рд╣реБрдб рдореБрдирд┐ред рдПрдкреНрд▓рд┐рдХреЗрд╕рди рдкрд╣рд┐рд▓реЗ рдиреИ рддрдпрд╛рд░ рдЧрд░рд┐рдПрдХреЛ рд╡рд┐рддрд░рдг рдЧрд░рд┐рдПрдХреЛ рд╡рд╛рддрд╛рд╡рд░рдгрдорд╛ рдЪрд▓реНрдЫ, рд╕рдмреИ рдиреЛрдбрд╣рд░реВ рдЬрдбрд╛рди рднрдПрдХрд╛ рдЫрдиреН, рдЪрд╛рд╣реЗ рд╣рд╛рдореАрд▓рд╛рдИ IP рдареЗрдЧрд╛рдирд╛рд╣рд░реВ рд░ рддреНрдпрд╕реИрд▓реЗ рдиреЛрдбрдХреЛ рдирд╛рдорд╣рд░реВ рдкрд╣рд┐рд▓реЗ рдиреИ рдерд╛рд╣рд╛ рднрдП рддрд╛рдкрдирд┐, рд╡рд╛ рддрд┐рдиреАрд╣рд░реВ рдЧрддрд┐рд╢реАрд▓ рд░реВрдкрдорд╛ рддреЛрдХрд┐рдПрдХреЛ/рдкрд░рд┐рд╡рд░реНрддрди рдЧрд░рд┐рдПрдХреЛ рдЫред рдпрд╕рдХрд╛ рд▓рд╛рдЧрд┐ рдмрд┐рд▓реНрдХреБрд▓ рдХреБрдиреИ рд╡рд┐рд╢реЗрд╖ рдбрдХрд░ рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рди рд╕реЗрдЯрд┐рдЩрд╣рд░реВ рдЖрд╡рд╢реНрдпрдХ рдкрд░реНрджреИрди рд░ рдПрдкреНрд▓рд┐рдХреЗрд╕рди рд╡рд┐рдХрд╛рд╕рдХрд░реНрддрд╛рдХреЛ рджреГрд╖реНрдЯрд┐рдХреЛрдгрдмрд╛рдЯ, рд╡рд┐рддрд░рд┐рдд рд╡рд╛рддрд╛рд╡рд░рдгрдорд╛ рдЪрд▓реНрдиреЗ рд╡рд╛ рд╕реНрдерд╛рдиреАрдпрдорд╛ рдЪрд▓реНрдиреЗ рдмреАрдЪрдорд╛ рдХреБрдиреИ рднрд┐рдиреНрдирддрд╛ рдЫреИрдиред :nonode@nohost
ред рддрдкрд╛рдИрдВ рдпрд╕ рдмрд╛рд░реЗ рдердк рдкрдвреНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ
рдпрджреНрдпрдкрд┐ рдЯреЛрдкреЛрд▓реЛрдЬреА рдкрд░рд┐рд╡рд░реНрддрдирд╣рд░реВрдХреЛ рдЬрдЯрд┐рд▓ рд╣реНрдпрд╛рдиреНрдбрд▓рд┐рдЩ рдЕрдиреБрдХреВрд▓рди рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдорд╛рд░реНрдлрдд рд╕рдореНрднрд╡ рдЫ MyApp.Listener
, рддреНрдпрд╣рд╛рдБ рд╕рдзреИрдВ рдХрд┐рдирд╛рд░рд╛ рдХреЗрд╕рд╣рд░реВ рд╣реБрди рд╕рдХреНрдЫ рдЬрд╣рд╛рдБ рдпреА рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╕реАрдорд┐рддрддрд╛рд╣рд░реВ рд░ рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рди рдкреВрд░реНрд╡рд╛рдЧреНрд░рд╣рд╣рд░реВ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрдирдХреЛ рдЖрдзрд╛рд░рд╢рд┐рд▓рд╛ рд╕рд╛рдмрд┐рдд рд╣реБрдиреНрдЫрдиреНред рдпреЛ рдареАрдХ рдЫ, рдХреЗрд╡рд▓ рдорд╛рдерд┐ рд▓рд┐рдиреБрд╣реЛрд╕реН libcluster
, рдЬреБрди рдЕрдзрд┐рдХ рд╕рд╛рдорд╛рдиреНрдп-рдЙрджреНрджреЗрд╢реНрдп рд╣реЛ, рд╡рд╛ рдирд┐рдореНрди-рд╕реНрддрд░ рдХреНрд▓рд╕реНрдЯрд░ рдЖрдлреИрдВрд▓рд╛рдИ рд╣реНрдпрд╛рдиреНрдбрд▓ рдЧрд░реНрдиреБрд╣реЛрд╕реНред рдпрд╕ рдХреЛрдб рдкреБрд╕реНрддрдХрд╛рд▓рдпрдХреЛ рд▓рдХреНрд╖реНрдп рдкреНрд░рддреНрдпреЗрдХ рд╕рдореНрднрд╛рд╡рд┐рдд рдкрд░рд┐рджреГрд╢реНрдпрд▓рд╛рдИ рдХрднрд░ рдЧрд░реНрдиреБ рд╣реЛрдЗрди, рддрд░ рдЕрдирд╛рд╡рд╢реНрдпрдХ рдкреАрдбрд╛ рд░ рдЬрдЯрд┐рд▓ рдкреНрд░рддрд┐рд▓рд┐рдкрд┐-рдкреЗрд╕реНрдЯ рдмрд┐рдирд╛ рд╕рдмреИрднрдиреНрджрд╛ рд╕рд╛рдорд╛рдиреНрдп рдкрд░рд┐рджреГрд╢реНрдп рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреБ рд╣реЛред
рдиреЛрдЯ: рдпрд╕ рдмрд┐рдиреНрджреБрдорд╛ рдореВрд▓рдорд╛ "рд╣реНрдпрд╛рдкреНрдкреА рдХреНрд▓рд╕реНрдЯрд░рд┐рдВрдЧ!" рд╡рд╛рдХреНрдпрд╛рдВрд╢ рдерд┐рдпреЛ, рд░ рдпрд╛рдиреНрдбреЗрдХреНрд╕, рдЬрд╕рдХреЛ рд╕рд╛рде рдо рдЕрдиреБрд╡рд╛рдж рдЧрд░реНрдЫреБ (рдо рдЖрдлреИрдВ рд╢рдмреНрджрдХреЛрд╢рд╣рд░реВ рдорд╛рд░реНрдлрдд рдЬрд╛рдиреБ рдкрд░реНрджреИрди), рдорд▓рд╛рдИ "рд╣реНрдпрд╛рдкреНрдкреА рдХреНрд▓рд╕реНрдЯрд░рд┐рдВрдЧ!" рд╡рд┐рдХрд▓реНрдк рдкреНрд░рд╕реНрддрд╛рд╡ рдЧрд░реНтАНрдпреЛред рд╡рд┐рд╢реЗрд╖ рдЧрд░реА рд╡рд░реНрддрдорд╛рди рднреВрд░рд╛рдЬрдиреАрддрд┐рдХ рдЕрд╡рд╕реНрдерд╛рдХреЛ рдкреНрд░рдХрд╛рд╢рдорд╛ рдпреЛ рднрдиреНрджрд╛ рд░рд╛рдореНрд░реЛ рдЕрдиреБрд╡рд╛рджрдХреЛ рдХрд▓реНрдкрдирд╛ рдЧрд░реНрди рд╕рдореНрднрд╡ рдЫреИрдиред
рд╕реНрд░реЛрдд: www.habr.com