ααααΎαααααααααααααα·ααΈα’αΆααΈααααααααααα½αααΆααααααααα·αααΌααα·αααΆααα αΌαααααΆααααΆαααααααααΌαα±ααααΆαααΆαααααΎααΆαααααααΆααααααα αααα»αβααααΈβααΆβα αααΎα α’αααβα’αΆα βα αΆααααααΎαβα§ααΆα αααβααααΈβαααβααΆαααα α αΎαβααΆααβαααααβααΆαβαααα»αβαααααα ααα»ααααααααΆαααααΈαα·α αα½α ααααα αααααΎαααααΌαααΆααΆααΆααααΆαααααααααααΆααΉαα’αααΈααααΆαα αα·ααα αα αα·αα ααα αΆαααααα»αααΆαααΆαααααααα»αααααααααα
ααΆααααααΆααααΆαααΆααα α’ααα‘αΆαααααααΎαααααΎαααΎααααααΆααααΆαααααααααααααααΈαααΆα αα·αααΆαααααααΎααα
αα»ααα·αααΆααΆαααααΆααααααΌα
ααΆαααααααΆαααααΆαααααΎαααΆααα ααΎααααΆααααααααααααΆ ααααΌα ααΆαααΆααααααααΆαα αα·ααααΌααΈααα ααΆααααααΆααΆα [β¦]
αα αααα»αααΆαα’αα»ααααα’αααΈααααααααΆαααΊαααα»αααααΆαααααα·α α α ααα αΆα α’ααα‘αΆαα ααααΌαααΆααααααΎαα‘αΎααα αααααα "αα»αααΊααα" ααΆααααααΆαααα’ααααααααααα½ααααααΆααααΆαααΉααααααΌα α αΎα "docker" ααααΆααααααΆααΆαααααΆααααααΌα αααααΆαααα»αααααααααα»αααα IN IP4 ααΆαα’αΆααααααΆαααΆα αααΎαααααα·αααΆαααΆααααΆαα ααΆαααΆα ααααααΆαααΆααααααΆααααΌαααΆαααααα‘αΎααααααααααααα»αααααΆαααΆααααα α αΎααααααααΆααααΎαααΆαααΆαααααααααααααααααα·αααααααααΌαααΆαααΆααααααααα»αααααααααΆα αααΎαααααααααα
α₯α‘αΌαααα ααΎαααΆααα’ααααααΆααΆαααααααΆααααααααααΆααααααααα½αα―α ααα ααα αα αα·αααααΎαααΆαα ααα αΆα α’ααα‘αΆαα αα αααα»αααα·ααΆααΆααααα’αΆααααααΆα IP ααΆαααααααααΌαααΆαααααααα±ααααΆααααααΆαααααααΆαα αααααααα’ααα αΆααα α αΎαααααΆααα’αΆα ααα α‘αΎα αα·αααΆαααα ααααααααΎαααΆααααααααααα’αααααααααααα ααΎααααΈαααααΆαααααααααΌα boilerplate αα αααααααααααααααααα»αααααΎαααΆαα ααα αΆα α’ααα‘αΆααααΎααααΈααααα»ααααααααΆααααΉαααα·ααΆααΆαα’αα·ααΆα αααα½αααααΌαααΆαααΆαααΆαα
ααΆαααααααααΆααα αααα»αααΉαααΆααΆα libcluster
αααααΌαααΆα
α’αααΈβαααβαααα»αβααααΌαβααΆαβααααΆααβααΊβαααααΆαααβαα½αβαααβααΉαβααα½αβααααα»αβαααααααααβα ααααα α αΎαβααΉαβααΆαβααααααβαααααααα·βααΌα βααΆαβαααααα
- ααΆαααΆααααααααααααααΆααΆα ααΆαααααααΈααααΆαααααααΆαααΌαααΉα αα·αααΆαααααΎαααΆαααααααΆααααααααΆαααα α’ααα‘αΆαα;
- ααΆαα α αααα‘αααααα·ααααααΆααα»αααΆααααααααααααΆααααΆααααΆαααααΆααααααΌα topology (ααααΆαααα ααΈααα ααααΆαααα ααΈααα α’αααααααΆααααααΆα ααΆαααααα);
- α
ααα»α
αααααΆααααααΆαααααΆααααΎαααααΎαααΆαα
ααααααααααΆααααααααα αα·αααααΈ ααΌα
ααΆαα½α
:nonode@nohost
; - ααΆαααΆαααα Docker α ααααΈαααα’αα ααααα·αα αΆαααΆα ααααααααΌαα αααααΆαα ααΆααααααααα
αααααααααΆααααααΆαααααΆααααΈαααα»αααΆαααΆααααααααααα·ααΈαααα»ααααα»α :nonode@nohost
α¬αα
αααα»αααα·ααΆααΆαα
ααα
αΆααα·ααααα·αααα·ααααααααΎ test_cluster_task
docker-compose up --scale my_app=3
α αΎαααΎαααΈαααααααααΆααααα·ααααα·ααΈααααΈαα
αααα»α docker ααααα·αααΆαααΆαααααΆααααααΌαααΌαααΆαα½αα‘αΎαα αααα»αααα
ααααΆααααααα·ααΈα’αΆαααααααΌα
ααΆ mnesia
- αα
αααααα topology ααααΆααααααΌα αα
ααΈαααααααΆα αα½αααααΆααααΆαα
αααααα‘αΎααα·αααααα·αααΆαααΆαααΆααααααααααΈαααααα·ααΈαααααα
αααα αα·αααΆαααααααααΎααΆαααααΆααααααααΆααααααααΆααααααααααααΆα α αΆααααΈααΆαααΆααααα ααααα αα αΌααααααΆαααα·αααΆα ααααααααα ααΆαα·ααααααΆααααΆααααΆαααααΎααααααΆααααααααααααααααααααααΈαααα’αΆα ααΎαααΆαααΆααα’αα α¬ααΆαααααααααΆαααααααααααααα·ααααΆαααα»ααααααΆα’αααααααΉααααΈααααΈ 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
αα
ααΎααΆαα ααα αΎααα
αααα»α
α’αααααααααααα
ααααααααΆαααααΎααααΆαα αααα ααΊααΆααΆααααΎααααα·ααααα·ααΆαα
αΆαααΆα
αααΆααα’ααααΎααααΈαααααΎαα
αααααα‘αΎααα·ααααααΆααααΈααΆαααααΆααααααΌα topology αα
ααααααααααΆαα. αααααα·ααΈααααΆααααααααΎαααΆααααα»αααα·ααΆααΆαα
ααα
αΆααααααΆααααα
ααα½α
ααΆααααα
ααΆαα½αααΉαααααΆααααΆααα’ααααΆααααααΆαα ααααα·ααα·αααΈααΆααΎααΎαααααΆααα’αΆααααααΆα IP α αΎαααΌα
αααααααααααααΆααααΆαα»α α¬αα½αααααααΌαααΆαα
αΆααααΆαα/ααααΆααααααΌαααΆαααααα ααααα·ααααααΌαα±ααααΆαααΆαααααααα
ααΆαααααααα docker αα·αααααααα α αΎαααΆαααααααααααα’αααα’αα·αααααααααααα·ααΈ ααΆαα·αααΆαααΆααα»ααααααααααΆαααΆαααΆαααααΎαααΆααααα»αααα·ααΆααΆαα
ααα
αΆα α¬ααααΎαααΆααα
αααα»αααΌαααααΆααααααα :nonode@nohost
. α’αααα’αΆα
α’αΆαααααααα’αααΈααΏαααααα
αααα»α
αααααΈααΆααΆαααααααααααααα»αααααΆαααααΆαααααΆααααααΌα topology ααΊα’αΆα
ααααΎαα
ααΆαααΆααααααΆαα’αα»ααααααααΆαααααα½α MyApp.Listener
ααΆα’αΆα
αααααααΆαααααΈααααααααΆαααααααααααΆαααααΆααααα αα·αααΆαααα’ααααααΆαααααααα
ααΆαααααααααααα αΆαααΆααΆααΌαααααΆαααααΉαααααΆαα’αα»ααααα αα·αα’αΈααααααΆααααααααΆαααΎ libcluster
αααααΆαααααααααΌαα
ααΆα α¬ααΌααααΈαααααααααΆαα
αααααααααα·αααΆαααααααα½αα―αα ααααααααααααααΆαααααΌααααααΊαα·ααααααΎααααΈαααααααααααααααααααΆααΈαααΌαααα’αΆα
ααααΎααΆαααααα ααα»ααααααααΌαααααΎααααΆααΈαααΌααΌαα
αααα»ααααααααΆαααΆαααΊα
αΆααααααα·αα
αΆαααΆα
α αα·αααΆαα
αααααα·αααααΆαααααααα»αααααΆαα
α αααΆα: αα α ααα»α ααααα αααα»αααΎαααΆαααααΆααΆ "Happy clustering!" α αΎα Yandex ααααααα»ααααααα (αααα»ααα·αα αΆαααΆα αααααααΆαααα ααΆαα»αααααααα½αα―ααα) ααΆααααααα±αααααα»αααΌααααααΎα "Happy clustering!" αααα ααβααΆβαα·αβα’αΆα βαααααβααΎαβααΆαβααβααααβααα’βααΆαβαααβαα ααΆαα·αααβαα βαααα»αβααααΆαααΆαβααΌαα·ααΆαααααβαααααΆαβαα αα α»ααααααα
ααααα: www.habr.com