单机(centos7)搭建redis集群

2019-07-20  本文已影响0人  一梦三四年lyp

1,安装好一个redis实例
2,设置redis.conf文件

  比如你要搭建两个redis实例,那么这时候将redis.conf复制两份出来
  cp redis.conf redis-9001.conf
  cp redis.conf redis-9002.conf
  并且修改redis-9001.conf和redis-9002.conf两个文件对应的端口号
  port 6380  // 修改对应的9001或9002端口
  daemonize yes
 cluster-enabled yes
 cluster-config-file nodes_6380.conf // 修改成对应的nodes_9001.conf/nodes_9002.conf

3,测试新增的9001和9002端口是否可用

   执行命令:
   ./redis-cli -c -p 9002
   127.0.0.1:9002> ok  //则创建成功

4,利用cluster meet命令,与9001、9002建立链接。

    127.0.0.1:6379> cluster meet 127.0.0.1 9001
    ok
    127.0.0.1:6379> cluster meet 127.0.0.1 9002
    ok

5,cluster nodes 检查链接情况,以下示例为创建成功

    127.0.0.1:6379> cluster nodes
    2d993bfb6d1d296021f467772b3a039982f0e81b 127.0.0.1:9001 master - 0     1563609909512 1 connected 5001-10000
    6a6a61f84bf0f47dd6b4ac5d6fe44e6fd41549df 127.0.0.1:9002 master - 0     1563609910514 2 connected 10001-16383
    e9b992990ab694b602d38cca25b7fa97eab601e9 127.0.0.1:6379 myself,master - 0 0 0 connected 0-5000

6,cluster info 检查redis集群是否启动

  127.0.0.1:6379> cluster info
  cluster_state:fail  //代表还没有启用
  cluster_slots_assigned:0
  cluster_slots_ok:0
  cluster_slots_pfail:0
  cluster_slots_fail:0
  cluster_known_nodes:1
  cluster_size:0
  cluster_current_epoch:0
  cluster_my_epoch:0
  cluster_stats_messages_sent:449
  cluster_stats_messages_received:0

7,分配槽点

    上面state为fail是因为我们还未给节点分配槽位,官方规定只有16384个槽位全部分配完集群才能正常工作,节点才能接受请求,state状态才会为ok。
    
    我们刚刚是三个节点,16384个槽位全部分配到这个槽位里即可,例如:
    redis-cli -c -p 6379 cluster addslots {0..5000}
    redis-cli -c -p 9001 cluster addslots {5001..10000}
    redis-cli -c -p 9002 cluster addslots {10001..16383}

    继续用cluster info 命令查看
    127.0.0.1:6379> cluster info
    cluster_state:ok
    cluster_slots_assigned:16384
    cluster_slots_ok:16384
    cluster_slots_pfail:0
    cluster_slots_fail:0
    cluster_known_nodes:3
    cluster_size:3
    cluster_current_epoch:2
    cluster_my_epoch:0
    cluster_stats_messages_sent:6433
    cluster_stats_messages_received:5984
    127.0.0.1:6379> 
    
    显示我们分配成功,并且state状态也是ok,这时我们就可以利用我们的集群啦

8,测试

  ./redis-cli -c -p 6379
  127.0.0.1:6379> set q 1
  -> Redirected to slot [11958] located at 127.0.0.1:9002
  OK
  127.0.0.1:9002> get q
  "1"
  127.0.0.1:9002> 
  可以看到,redis集群会自动计算key落在那个槽位,然后自动跳到目标节点去执行命令。

9,利用cluster keyslot 可以查看key属于那个槽位。

  127.0.0.1:9002> cluster keyslot q
  (integer) 11958

  11958槽位是位于我们的9002节点。

注意:当创建集群的时候需要把节点的key全部清空(否则后面分配槽位的时候会提示该槽位已经给占用导致分配不进去)否则会报错可以用以下命令清空:

      执行flushall、flushdb、cluster reset指令:
上一篇 下一篇

猜你喜欢

热点阅读