Forces a node to handshake with another node.
CLUSTER
MEET
ip port
[cluster-bus-port]
CLUSTER MEET
is used in order to connect different
Valkey nodes with cluster 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.
So in order for a given node to accept another one into the list of nodes composing a Valkey Cluster, there are only two ways:
CLUSTER MEET
command
to force a node to meet another one.Note that Valkey 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.
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:
CLUSTER MEET B-ip B-port
CLUSTER MEET C-ip C-port
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.
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.
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.
Simple string
reply: OK
if the command was successful. If the address
or port specified are invalid an error is returned.
O(1)
@admin @dangerous @slow
cluster_bus_port
argument.ASKING, CLUSTER, CLUSTER ADDSLOTS, CLUSTER ADDSLOTSRANGE, CLUSTER BUMPEPOCH, CLUSTER COUNT-FAILURE-REPORTS, CLUSTER COUNTKEYSINSLOT, CLUSTER DELSLOTS, CLUSTER DELSLOTSRANGE, CLUSTER FAILOVER, CLUSTER FLUSHSLOTS, CLUSTER FORGET, CLUSTER GETKEYSINSLOT, CLUSTER HELP, CLUSTER INFO, CLUSTER KEYSLOT, CLUSTER LINKS, CLUSTER MYID, CLUSTER MYSHARDID, CLUSTER NODES, CLUSTER REPLICAS, CLUSTER REPLICATE, CLUSTER RESET, CLUSTER SAVECONFIG, CLUSTER SET-CONFIG-EPOCH, CLUSTER SETSLOT, CLUSTER SHARDS, CLUSTER SLOT-STATS, CLUSTER SLOTS, READONLY, READWRITE.