是否可以创建一个包含2个节点的redis集群,一个充当主节点,另一个充当从节点。
如果我尝试使用2个节点(一个作为主节点,另一个作为从节点)
,则会出现以下错误>>> Creating cluster
Connecting to node 127.0.0.1:6379: OK
Connecting to node 192.168.40.159:6379: OK
*** ERROR: Invalid configuration for cluster creation.
*** Redis Cluster requires at least 3 master nodes.
*** This is not possible with 2 nodes and 1 replicas per node.
*** At least 6 nodes are required.
答案 0 :(得分:6)
是。至少3个主节点的要求由ruby脚本设置,但不是集群中的硬限制。
您需要做的第一件事是发送一个cluster
命令,其中包含16385个参数,如
cluster addslots 0 1 2 3 ... 16384
到群集。由于在redis-cli中手动输入它们的参数太多,我建议编写一个程序来执行此操作,在该程序中打开连接到redis节点的TCP套接字,将上一个命令转换为redis命令字符串并写入插座。
发送命令几秒钟后,单节点群集将处于联机状态。然后使用redis-cli连接到另一个节点,键入以下命令使其成为从属
cluster meet MASTER_HOST MASTER_PORT
cluster replicate MASTER_ID
其中MASTER_HOST:MASTER_PORT
是上一个节点的地址,MASTER_ID
是该节点的ID,您可以通过cluster nodes
命令检索该节点。
为方便起见,我为这些类型的redis集群管理编写了一个python工具,你可以用
安装它。pip install redis-trib
答案 1 :(得分:2)
Redis-Cluster不适合您的用例。
对于您的用例,您需要配置一个服务器(主服务器),然后配置第二个服务器并添加“slaveof”指令 - 将其指向主服务器。您如何处理故障转移取决于您的方案,但我建议使用redis-sentinel。
有关更详细的演练,请参阅Redis Replication page
答案 2 :(得分:0)
'redis-trib.rb create'命令至少需要3个节点 这种方式可以使1个主,1个从属redis集群。
$ redis-server 5001 / redis.conf
$ redis-trib.rb修复127.0.0.1:5001
这么多消息......
$ redis-server 5002 / redis.conf
$ redis-trib.rb add-node --slave 127.0.0.1:5002 127.0.0.1:5001
>>> Adding node 127.0.0.1:5002 to cluster 127.0.0.1:5001<br>
Connecting to node 127.0.0.1:5001: OK<br>
>>> Performing Cluster Check (using node 127.0.0.1:5001)<br>
M: 015bec64d631990b83ad63736d906cda257a762c 127.0.0.1:5001<br>
slots:0-16383 (16384 slots) master<br>
0 additional replica(s)<br>
[OK] All nodes agree about slots configuration.<br>
>>> Check for open slots...<br>
>>> Check slots coverage...<br>
[OK] All 16384 slots covered.<br>
Automatically selected master 127.0.0.1:5001<br>
Connecting to node 127.0.0.1:5002: OK<br>
>>> Send CLUSTER MEET to node 127.0.0.1:5002 to make it join the cluster.<br>
Waiting for the cluster to join.<br>
>>> Configure node as replica of 127.0.0.1:5001.<br>
[OK] New node added correctly.
$ redis-server 5001 / redis.conf
使用Ruby:addslots
$ echo'(0..16383).each {| x |把“cluster addslots”+ x.to_s}'|红宝石| redis-cli -c -p 5001&gt;的/ dev / null的
$ redis-server 5002 / redis.conf
$ redis-cli -c -p 5002
127.0.0.1:5002>集群符合127.0.0.1 5001
OK
127.0.0.1:5002>集群复制7c38d2e5e76fc4857fe238e34b4096fc9c9f12a5
节点ID为5001
行
答案 3 :(得分:-2)
不,无法创建具有1个主节点的redis群集,如建议here设置redis群集需要至少3个主节点。