Redis集群创建

时间:2014-02-22 10:12:13

标签: redis

是否可以创建一个包含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.

4 个答案:

答案 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

有关详细信息,请转到https://github.com/HunanTV/redis-trib.py/

答案 1 :(得分:2)

Redis-Cluster不适合您的用例。

对于您的用例,您需要配置一个服务器(主服务器),然后配置第二个服务器并添加“slaveof”指令 - 将其指向主服务器。您如何处理故障转移取决于您的方案,但我建议使用redis-sentinel。

有关更详细的演练,请参阅Redis Replication page

答案 2 :(得分:0)

'redis-trib.rb create'命令至少需要3个节点 这种方式可以使1个主,1个从属redis集群。

使用redis-trib

$ 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个主节点。