แแแแฅแแแก แงแแแแ แฌแแ แแแขแแแฃแแ แแแแแแก แแแแแชแฎแแแ แแแ แ แแฃ แแแแแ แแแแแแแก แคแแแแจแ, แกแแแแช แกแแญแแ แแ แฐแแ แแแแแขแแแฃแ แ แแแกแจแขแแแแ แแแ. แฎแจแแ แจแแแแฎแแแแแจแ, แจแแแแซแแแแ แฃแแ แแแแ แแแแฌแงแแ แแฎแแแ แแแกแขแแแชแแ แแ แจแแแแชแแ แแ แแแขแแแ แแแแก แกแแจแฃแแแ แแแฉแแแแแแแแ. แแแแ แแ แแ แแก แแกแแแ แแแแแแแแ แขแ แแแแแแฃแ แ แจแแแแฎแแแแแแ, แ แแแแกแแช แฉแแแ แฃแแแ แแแแ แฌแแฃแแแแ, แ แแ แกแฎแแแแแกแฎแแ แแแแแซแแแแ แแชแแแแแ แแ แแแแแแแแก แจแแกแแฎแแ แแ แงแฃแ แแแฆแแแแ แแแแแแฌแแแแ แแแขแแแ แแแ.
แแกแแแ แแฆแแแแแแ แแฆแแแฉแแแ แ แแ แแ แแแแแ, แ แแแแแแช แแแแ แฉแแแ แกแแกแแแแแแแ แกแแแขแแฅแกแแกแ แแ แแแก แแแ แจแแแ แแแแแขแแแแกแแแแก, แแฅแแก แแแ แแแแ แแแแกแแก
แกแฎแแแแแกแฎแแ แแแแแซแแแแก แแ แแชแแกแแแก แจแแ แแก, แแกแแแ แแแฃแแแแกแ แแ แแแแแขแแ แแแก แจแแ แแก แแแแแชแแแฃแแ แจแแขแงแแแแแแแ แแแแญแแแ แแแแแ [โฆ]
แแ แแฅแขแแแแจแ, แงแแแแแคแแ แ แชแแขแ แฃแคแ แ แ แแฃแแแ. แฒแแแแฌแแแแแฃแแ แแ แแแแแ แจแแแฅแแแ แแแจแแ, แ แแแแกแแช "แแแแขแแแแแ แ" แแแจแแแแแ แแแ แ แแแแแก แงแฃแแก แแแแแแแแแแกแแแแก, แฎแแแ "แแแแแ แ" แฃแแ แแแแ แแแแแจแแ แแแแแก แกแแแแแแแ แแงแ. IN IP4 แแงแ แแแแ แ แแแฃแแแแแแแแ แแแกแแแแ แแ, แฅแกแแแแก แจแแคแแ แฎแแแแแ, แ แแแแ แช แฌแแกแ, แแแแแฌแแแฃแแ แแงแ แแแ แแฎแแแแก แแแแ แแแแแแแก แฆแแญแแแ, แฎแแแ แฌแแ แแแแแแก แกแแกแขแแแแก แกแแจแฃแแแ แแ แ แแแฌแแแฃแแแแจแ แแแแแแแแแ.
แแฎแแ แฉแแแ แงแแแแแแ แฌแแ แแแฃแแแแแแแ แแแแแแแแ แ, แจแแคแฃแแฃแแ แแ แแแแแฌแแแแแฃแแ แแแ แ แแ แแแแแ แแแ แแแแจแ, แกแแแแช แแแแแแแฃแ แ IP แแแกแแแแ แแแแ แแแแแแชแแแ แแแแ แจแแแแฎแแแแแแแแแก แแ แแแชแแแแ แแ แแแแแซแแแ แจแแแซแแแแ แแแแแฉแแแแแ แแ แแแฅแ แแก แแ แแคแแแแก แแแ แชแฎแแแ แฅแฃแกแแแก แแฎแแ แแแแ. แแแแกแแแแแก, แ แแ แแแแแแแ แแฅแแแก แแชแแแแแฃแแ แฅแแแแแก แแแแแก แแแแ แแแแแ แงแแแแ แแ แแแฅแขแจแ, แ แแแแแแช แแฃแจแแแแก แแแแแฌแแแแแฃแแ แแ แแแแแ, แแขแ แฃแ แแแ แแแแกแแแ แกแแแ แซแแแแแแแ แกแแญแแ แแ แแแฎแแแ แแแ.
แจแแแแจแแแ: แแ แแแชแ, แ แแ แแ แกแแแแแก libcluster
แแแแฎแแแแแแ
แ แแช แแ แแแ แแแแ แแญแแ แแแแแแ แแงแ แแแแแแแแแแ, แ แแแแแแช แแแฆแแแแ แแแแกแขแแ แแก แแแ แแแแก แแ แแฅแแแแแแ แจแแแแแแ แแแแกแแแแแ:
- แแแแญแแแ แแแแ แแฃแจแแแแ แ แแแแ แช แแแแแซแแแแก แแงแแ แ แแแแแ แแแฃแแ แกแแแ, แแกแแแ แกแแ แแแกแแแแก แแแจแแแแแแ แแแแแแแฃแ แ แแฆแแแฉแแแแแแ แแ แแแแแ;
- แกแ แฃแแแ แคแฃแแฅแชแแแแแแฃแ แ แแแแแซแแฎแแแ แขแแแแแแแแแก แงแแแแแ แชแแแแแแแแกแแแแก (แแแแแซแ แแฅ, แแแแแซแ แแฅ, แฅแกแแแแก แแ แแกแขแแแแแฃแ แแแ, แแแงแแคแ);
- แแแแญแแแ แแแแ แแแขแแ แคแแแกแ แแแแกแขแแ แแก แแแกแแจแแแแแ แแ แซแแแ แแ แแแแแ แกแแฎแแแแแแ, แแกแแแ แ แแแแ แช
:nonode@nohost
; - Docker แแฎแแ แแแญแแ แ out of box, แแแคแ แแกแขแ แฃแฅแขแฃแ แแก แแแแแก แแแฌแแ แแก แแแ แแจแ.
แแก แฃแแแแแกแแแแแ แแแจแแแแก, แ แแ แแแก แจแแแแแ, แ แแช แแ แแแแแแชแแแ แแแแแแแชแแ แแแแแแแแ แแแแ :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
, แ แแแแแแช แฃแคแ แ แแแแแแ แแแแแจแแฃแแแแแกแแ, แแ แแฃแแแแช แแแแแ แแแฃแแแแแแแแ แแแแแแ แแแแแก แแแแกแขแแ แก. แแ แแแแแแแก แแแแแแแแแแแก แแแแแแแ แแ แ แงแแแแ แจแแกแแซแแ แกแชแแแแ แแก แแแคแแ แแ, แแ แแแแ แงแแแแแแ แแแแ แชแแแแแฃแแ แกแชแแแแ แแก แแแแแงแแแแแ แแแแแแขแ แขแแแแแแแกแ แแ แฃแฎแแ แฎแฃแแ แแแแแ -แแแกแขแแก แแแ แแจแ.
แจแแแแจแแแ: แแ แแแแแแขแจแ แแ แแแแแแแจแ แแงแ แคแ แแแ "Happy Clustering!" แแ Yandex-แแ, แ แแแแแแแช แแ แแแแ แแแแ (แแ แแแแแแ แแ แแญแแ แแแแ แแแฅแกแแแแแแแแก แแแแแ), แจแแแแแแแแแแ แแแ แแแแขแ "Happy Clustering!" แฃแแแแแกแ แแแ แแแแแแก แฌแแ แแแแแแแ แแแแแ แจแแฃแซแแแแแแแ, แแแ แฃแแแขแแก, แแ แกแแแฃแแ แแแแแแแแขแแแฃแ แ แกแแขแฃแแชแแแก แแแแแแแแกแฌแแแแแแ.
แฌแงแแ แ: www.habr.com