| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135 |
- .. _cluster:
- ====================
- Cluster
- ====================
- -----------------------------------
- Erlang/OPT Distributed
- -----------------------------------
- .. code::
- --------- ---------
- | Node1 | --------| Node2 |
- --------- ---------
- | \ / |
- | \ / |
- | / \ |
- | / \ |
- --------- ---------
- | Node3 | --------| Node4 |
- --------- ---------
- Node
- ----------
- .. code:: shell
- erl -name node1@127.0.0.1
- erl -name node2@127.0.0.1
- erl -name node3@127.0.0.1
- erl -name node4@127.0.0.1
- (node1@127.0.0.1)1> net_kernel:connect_node('node2@127.0.0.1').
- true
- (node1@127.0.0.1)2> net_kernel:connect_node('node3@127.0.0.1').
- true
- (node1@127.0.0.1)3> net_kernel:connect_node('node4@127.0.0.1').
- true
- (node1@127.0.0.1)4> nodes().
- ['node2@127.0.0.1','node3@127.0.0.1','node4@127.0.0.1']
- epmd
- ----------
- (node1@127.0.0.1)6> net_adm:names().
- {ok,[{"node1",62740},
- {"node2",62746},
- {"node3",62877},
- {"node4",62895}]}
- Cookie
- --------
- 1. $HOME/.erlang.cookie
- 2. erl -setcookie <Cookie>
- From: http://erlang.org/doc/reference_manual/distributed.html
- ----------------------
- Cluster Design
- ----------------------
- topic1 -> node1, node2
- topic2 -> node3
- topic3 -> node2, node4
- Topic Trie and Route Table
- ---------------------------
- ::
- --------------------------
- | t |
- | / \ |
- | + # |
- | / \ |
- | x y |
- --------------------------
- | t/+/x -> node1, node3 |
- | t/+/y -> node1 |
- | t/# -> node2 |
- | t/a -> node3 |
- --------------------------
- Subscription and Message Dispatch
- ---------------------------------
- ::
- title: Message Route and Deliver
- client1->node1: Publish[t/a]
- node1-->node2: Route[t/#]
- node1-->node3: Route[t/a]
- node2-->client2: Deliver[t/#]
- node3-->client3: Deliver[t/a]
- .. image:: _static/images/route.png
- -----------------------
- Cluster Setup
- -----------------------
- -----------------------
- Sessions across Nodes
- -----------------------
- node1
- -----------
- |-->| session |
- | -----------
- node2 |
- -------------- |
- client-->| connection |<--|
- --------------
- ------------------
- Notice: NetSplit
- ------------------
- ------------------------
- Consistent Hash and DHT
- ------------------------
|