Redis原生命令安装配置Cluster集群

在大量数据面前,通常会增加节点来存储数据。那么在节点集群中数据的分布,节点之间的状态成为一个必须要关注的问题。比如现在有16384份数据,用6个节点来存储这些数据,如果用随机存储的方式,那么会造成数据分布不均衡,下次要查找数据的时候需要花费庞大的时间和精力,并且在这同时会遇到要查找的数据不知道存放在哪个节点上。另外如果新加入的节点后,怎么去分配数据。

而Redis cluster这个工具可以很好地解决这个问题。Redis cluster的架构是有很多个节点,但每个节点之间是相互通信的,并且都拥有读写能力,给每个节点指派相应的槽,让每个节点正常运行。

1、配置Redis节点,并开启

######配置7000端口的文件######
vim redis-7000.conf
 port 7000
 daemonize yes
 dir "/opt/redis/redis-5.0.3/data"
 logfile "7000.log"
 dbfilename "dump-7000.rdb"
 cluster-enabled yes
 cluster-config-file nodes-7000.conf
 cluster-require-full-coverage no


######配置7001端口的文件######
sed 's/7000/7001/g' redis-7000.conf > redis-7001.conf

######配置7002端口的文件######
sed 's/7000/7002/g' redis-7000.conf > redis-7002.conf

######配置7003端口的文件######
sed 's/7000/7003/g' redis-7000.conf > redis-7003.conf

######配置7004端口的文件######
sed 's/7000/7004/g' redis-7000.conf > redis-7004.conf

######配置7005端口的文件######
sed 's/7000/7005/g' redis-7000.conf > redis-7005.conf
######启动redis的7000,7001,7002,7003,7004,7005服务端#######

redis-server redis-7003.conf

redis-server redis-7001.conf
 
redis-server redis-7002.conf 

redis-server redis-7003.conf 

redis-server redis-7004.conf 

redis-server redis-7005.conf 

######查看redis-server的服务进程######
ps -ef | grep redis-server
 root       1828      1  0 10:27 ?        00:00:01 redis-server *:7000 [cluster]
 root       1856      1  0 10:29 ?        00:00:01 redis-server *:7001 [cluster]
 root       1861      1  0 10:29 ?        00:00:00 redis-server *:7002 [cluster]
 root       1867      1  0 10:29 ?        00:00:00 redis-server *:7003 [cluster]
 root       1872      1  0 10:29 ?        00:00:00 redis-server *:7004 [cluster]
 root       1877      1  0 10:29 ?        00:00:01 redis-server *:7005 [cluster]
 root       1983   1533  0 10:37 pts/0    00:00:00 grep --color=auto redis-server

 查看节点信息以及这个集群的信息

######查看节点的信息######
redis-cli -p 7000 cluster nodes
 6f058a012a7384e37a0532dd4130e35d908e38ec :7000@17000 myself,master - 0 0 0 connected
 #节点ID:端口@1节点端口 自己,主节点 

######查看当前集群的信息######
redis-cli -p 7000 cluster info
 cluster_state:fail        #当前节点状态是下线状态
 cluster_slots_assigned:0  #没有槽数
 cluster_slots_ok:0        #可以用的槽数为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:0
 cluster_stats_messages_received:0

 2、对各个节点进行通信(meet)操作

redis-cli -p 7000 cluster meet 127.0.0.1 7001
 OK
redis-cli -p 7000 cluster meet 127.0.0.1 7002
 OK
redis-cli -p 7000 cluster meet 127.0.0.1 7003
 OK
redis-cli -p 7000 cluster meet 127.0.0.1 7004
 OK
redis-cli -p 7000 cluster meet 127.0.0.1 7005
 OK

这时候再来查看一下节点信息和集群信息

redis-cli -p 7000 cluster nodes   #查看各个节点的信息
 40c3891bac2ce5015e8ac7daff53e1088e36d4cb 127.0.0.1:7001@17001 master - 0 1549075584069 1 connected
 405ea2ebd3da8b493a762018f0dd72ebd7ec34fd 127.0.0.1:7003@17003 master - 0 1549075582052 3 connected
 3bd534578a8c3fb3b3407c0358867eae67f0b3b2 127.0.0.1:7002@17002 master - 0 1549075583059 2 connected
 680e1bbcf80877f4b77fc06508102113167e097b 127.0.0.1:7005@17005 master - 0 1549075581000 5 connected
 bbc422512adda726030995899c866ffaf6ec9b29 127.0.0.1:7004@17004 master - 0 1549075584000 0 connected
 6f058a012a7384e37a0532dd4130e35d908e38ec 127.0.0.1:7000@17000 myself,master - 0 1549075582000 4 connected

redis-cli -p 7000 cluster info    #查看这个集群的信息
 cluster_state:fail
 cluster_slots_assigned:0
 cluster_slots_ok:0
 cluster_slots_pfail:0
 cluster_slots_fail:0
 cluster_known_nodes:6
 cluster_size:0
 cluster_current_epoch:5
 cluster_my_epoch:4
 cluster_stats_messages_ping_sent:95
 cluster_stats_messages_pong_sent:100
 cluster_stats_messages_meet_sent:5
 cluster_stats_messages_sent:200
 cluster_stats_messages_ping_received:100
 cluster_stats_messages_pong_received:100
 cluster_stats_messages_received:200 

 3、对各个节点指派槽

######由于数量比较大,这里使用一个简单的shell脚本来完成######
vim cluster.sh
 #!/bin/bash

 start=$1       #定义一个起始变量
 end=$2         #定义一个结束变量
 port=$3        #定义一个端口号的变量

   for slot in 'seq ${start} ${end}'    #利用for循环来重复执行命令,在slot中
     do 
        echo "slot:${slot}"
        redis-cli -p ${port} cluster addslots ${slot}
     done


######将16384的数据分为3份,0到5461的数据分到7000端口######
sh cluster.sh 0 5461 7000

######将5462到10922的数据分到7001端口######
sh cluster.sh 5462 10922 7001

######10923到16383的数据分到7002端口######
sh cluster.sh 10923 16383 7002

这时候再来看看各个节点的信息以及集群的信息

####再次查看各个节点的信息,可以看到节点0,1,2这三个节点已经均衡分配好数据了####
redis-cli -p 7000 cluster nodes
 40c3891bac2ce5015e8ac7daff53e1088e36d4cb 127.0.0.1:7001@17001 master - 0 1549077186419 1 connected 5462-10922
 405ea2ebd3da8b493a762018f0dd72ebd7ec34fd 127.0.0.1:7003@17003 master - 0 1549077186000 3 connected
 3bd534578a8c3fb3b3407c0358867eae67f0b3b2 127.0.0.1:7002@17002 master - 0 1549077185000 2 connected 10923-16383
 680e1bbcf80877f4b77fc06508102113167e097b 127.0.0.1:7005@17005 master - 0 1549077187426 5 connected 
 bbc422512adda726030995899c866ffaf6ec9b29 127.0.0.1:7004@17004 master - 0 1549077185408 0 connected
 6f058a012a7384e37a0532dd4130e35d908e38ec 127.0.0.1:7000@17000 myself,master - 0 1549077184000 4 connected 2-5461

####再次查看集群信息,可以看到节点数,槽数等信息####
redis-cli -p 7000 cluster info
 cluster_state:ok
 cluster_slots_assigned:16384
 cluster_slots_ok:16384
 cluster_slots_pfail:0
 cluster_slots_fail:0
 cluster_known_nodes:6      #节点数量
 cluster_size:3             #槽的数量
 cluster_current_epoch:5
 cluster_my_epoch:4
 cluster_stats_messages_ping_sent:1680
 cluster_stats_messages_pong_sent:1710
 cluster_stats_messages_meet_sent:5
 cluster_stats_messages_sent:3395
 cluster_stats_messages_ping_received:1710
 cluster_stats_messages_pong_received:1685
 cluster_stats_messages_received:3395

 4、对节点进行主从配置

######设置各个节点的主从关系######

####设置7003端口为7000端口的从节点####
 redis-cli -p 7003 cluster replicate 6f058a012a7384e37a0532dd4130e35d908e38ec  #7000的节点ID
OK

####设置7004端口为7001端口的从节点####
 redis-cli -p 7004 cluster replicate 40c3891bac2ce5015e8ac7daff53e1088e36d4cb  #7001的节点ID
OK

####设置7005端口为7002端口的从节点####
 redis-cli -p 7005 cluster replicate 3bd534578a8c3fb3b3407c0358867eae67f0b3b2  #7002的节点ID
OK

5、查看节点的信息以及集群的信息

 redis-cli -p 7000 cluster nodes
40c3891bac2ce5015e8ac7daff53e1088e36d4cb 127.0.0.1:7001@17001 master - 0 1549077600596 1 connected 5462-10922
405ea2ebd3da8b493a762018f0dd72ebd7ec34fd 127.0.0.1:7003@17003 slave 6f058a012a7384e37a0532dd4130e35d908e38ec 0 1549077598580 4 connected
3bd534578a8c3fb3b3407c0358867eae67f0b3b2 127.0.0.1:7002@17002 master - 0 1549077598000 2 connected 10923-16383
680e1bbcf80877f4b77fc06508102113167e097b 127.0.0.1:7005@17005 slave - 0 1549077599000 5 connected 0
bbc422512adda726030995899c866ffaf6ec9b29 127.0.0.1:7004@17004 slave 40c3891bac2ce5015e8ac7daff53e1088e36d4cb 0 1549077599588 1 connected
6f058a012a7384e37a0532dd4130e35d908e38ec 127.0.0.1:7000@17000 myself,master - 0 1549077599000 4 connected 2-5461

 redis-cli -p 7000 cluster info
cluster_state:ok
cluster_slots_assigned:16384
cluster_slots_ok:16384
cluster_slots_pfail:0
cluster_slots_fail:0
cluster_known_nodes:6
cluster_size:3
cluster_current_epoch:5
cluster_my_epoch:4
cluster_stats_messages_ping_sent:2088
cluster_stats_messages_pong_sent:2127
cluster_stats_messages_meet_sent:5
cluster_stats_messages_sent:4220
cluster_stats_messages_ping_received:2127
cluster_stats_messages_pong_received:2093
cluster_stats_messages_received:4220

6、在cluster集群环境下连接节点需要增加 -c 参数

redis-cli -c -p 7000

127.0.0.1:7000> set hello csdn
OK

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值