summaryrefslogtreecommitdiffstats
path: root/iredis/data/commands/cluster-meet.md
diff options
context:
space:
mode:
Diffstat (limited to 'iredis/data/commands/cluster-meet.md')
-rw-r--r--iredis/data/commands/cluster-meet.md49
1 files changed, 18 insertions, 31 deletions
diff --git a/iredis/data/commands/cluster-meet.md b/iredis/data/commands/cluster-meet.md
index 3402faa..b33c9fb 100644
--- a/iredis/data/commands/cluster-meet.md
+++ b/iredis/data/commands/cluster-meet.md
@@ -2,54 +2,41 @@
support enabled, into a working cluster.
The basic idea is that nodes by default don't trust each other, and are
-considered unknown, so that it is unlikely that different cluster nodes will mix
-into a single one because of system administration errors or network addresses
-modifications.
+considered unknown, so that it is unlikely that different cluster nodes will
+mix into a single one because of system administration errors or network
+addresses modifications.
So in order for a given node to accept another one into the list of nodes
composing a Redis Cluster, there are only two ways:
-1. The system administrator sends a `CLUSTER MEET` command to force a node to
- meet another one.
-2. An already known node sends a list of nodes in the gossip section that we are
- not aware of. If the receiving node trusts the sending node as a known node,
- it will process the gossip section and send an handshake to the nodes that
- are still not known.
+1. The system administrator sends a `CLUSTER MEET` command to force a node to meet another one.
+2. An already known node sends a list of nodes in the gossip section that we are not aware of. If the receiving node trusts the sending node as a known node, it will process the gossip section and send a handshake to the nodes that are still not known.
-Note that Redis Cluster needs to form a full mesh (each node is connected with
-each other node), but in order to create a cluster, there is no need to send all
-the `CLUSTER MEET` commands needed to form the full mesh. What matter is to send
-enough `CLUSTER MEET` messages so that each node can reach each other node
-through a _chain of known nodes_. Thanks to the exchange of gossip information
-in heartbeat packets, the missing links will be created.
+Note that Redis Cluster needs to form a full mesh (each node is connected with each other node), but in order to create a cluster, there is no need to send all the `CLUSTER MEET` commands needed to form the full mesh. What matter is to send enough `CLUSTER MEET` messages so that each node can reach each other node through a *chain of known nodes*. Thanks to the exchange of gossip information in heartbeat packets, the missing links will be created.
-So, if we link node A with node B via `CLUSTER MEET`, and B with C, A and C will
-find their ways to handshake and create a link.
+So, if we link node A with node B via `CLUSTER MEET`, and B with C, A and C will find their ways to handshake and create a link.
-Another example: if we imagine a cluster formed of the following four nodes
-called A, B, C and D, we may send just the following set of commands to A:
+Another example: if we imagine a cluster formed of the following four nodes called A, B, C and D, we may send just the following set of commands to A:
1. `CLUSTER MEET B-ip B-port`
2. `CLUSTER MEET C-ip C-port`
3. `CLUSTER MEET D-ip D-port`
-As a side effect of `A` knowing and being known by all the other nodes, it will
-send gossip sections in the heartbeat packets that will allow each other node to
-create a link with each other one, forming a full mesh in a matter of seconds,
-even if the cluster is large.
+As a side effect of `A` knowing and being known by all the other nodes, it will send gossip sections in the heartbeat packets that will allow each other node to create a link with each other one, forming a full mesh in a matter of seconds, even if the cluster is large.
-Moreover `CLUSTER MEET` does not need to be reciprocal. If I send the command to
-A in order to join B, I don't need to also send it to B in order to join A.
+Moreover `CLUSTER MEET` does not need to be reciprocal. If I send the command to A in order to join B, I don't need to also send it to B in order to join A.
+
+If the optional `cluster_bus_port` argument is not provided, the default of port + 10000 will be used.
## Implementation details: MEET and PING packets
When a given node receives a `CLUSTER MEET` message, the node specified in the
-command still does not know the node we sent the command to. So in order for the
-node to force the receiver to accept it as a trusted node, it sends a `MEET`
-packet instead of a `PING` packet. The two packets have exactly the same format,
-but the former forces the receiver to acknowledge the node as trusted.
+command still does not know the node we sent the command to. So in order for
+the node to force the receiver to accept it as a trusted node, it sends a
+`MEET` packet instead of a `PING` packet. The two packets have exactly the
+same format, but the former forces the receiver to acknowledge the node as
+trusted.
@return
-@simple-string-reply: `OK` if the command was successful. If the address or port
-specified are invalid an error is returned.
+@simple-string-reply: `OK` if the command was successful. If the address or port specified are invalid an error is returned.