Redis-Cluster 集群部署详细教程,实践出真知!

之前承诺大家出redis-cluster 集群部署的教程,一晃就是一年,实在抱歉,由于工作原因,大家相互理解下,今天就分享给大家。这套部署方案是我测试过,并且我们正在使用的教程,网上其它例子也很多,找到适合自己的才是最好的,还请大家多多包涵,互相学习探讨,关于linux 的一些高级教程,可以加我q329570036 或者v (wqx2080) 进行探讨,谢谢。话不多说直接上教程。

版本选择

Redis 3.2.8

Ruby 2.3

 

Redis部署

准备一台机器,系统版本为CentOS7。

1、下载软件包

# wget http://download.redis.io/releases/redis-3.2.8.tar.gz

2、解压

# tar xvf redis-3.2.8.tar.gz -C /usr/local/

# cd /usr/local/

# ln -sv redis-3.2.8/ redis

3、编译

# yum groupinstall -y "Development Tools"

# cd redis

# make

4、为多实例redis配置启动环境

# mkdir -pv /etc/redis-cluster/{7001,7002}

 

cp redis.conf /etc/redis-cluster/7001/

cp redis.conf /etc/redis-cluster/7002/

 

mkdir /var/log/redis

mkdir /var/lib/redis

cp /usr/local/redis/src/redis-cli /bin/

cp /usr/local/redis/src/redis-server /bin/

5、redis.conf文件配置

文件最后添加以下信息(注意不要重复添加)

bind 192.168.11.71

daemonize yes

pidfile /var/run/redis_7001.pid

port 7001

cluster-enabled yes

cluster-config-file nodes-7001.conf

cluster-node-timeout 5000

appendonly yes

6、启动服务

/usr/local/redis/src/redis-server /etc/redis-cluster/7001/redis.conf

7、查看服务启动状态

ps -ef|grep redis

安装ruby

yum install centos-release-scl-rh 

# yum install rh-ruby23  -y    //直接yum安装即可  

# scl  enable  rh-ruby23 bash    //必要一步

# ruby -v

 

用 gem 这个命令来安装 redis接口(gem是ruby的一个工具包)

#gem install redis

设置环境变量

 echo "PATH=$PATH:/usr/local/redis/src/" >> /etc/profile

 source /etc/profile

 

检查集群状态

#/usr/local/redis/src/redis-trib.rb check 192.168.11.71:7001

连接服务

#/usr/local/redis/src/redis-cli -c -h 192.168.11.71 -p 7001

查看集群状态

#CLUSTER INFO

192.168.11.73:7006>  CLUSTER INFO

cluster_state:ok

cluster_slots_assigned:16384

cluster_slots_ok:16384

cluster_slots_pfail:0

cluster_slots_fail:0

cluster_known_nodes:10

cluster_size:4

cluster_current_epoch:10

cluster_my_epoch:10

cluster_stats_messages_sent:30215

cluster_stats_messages_received:27362

 

cluster_state:集群的状态。ok表示集群是成功的,如果至少有一个solt坏了,就将处于error状态。

cluster_slots_assigned:有多少槽点被分配了,如果是16384,表示全部槽点已被分配。

cluster_slots_ok:多少槽点状态是OK的, 16384 表示都是好的。

cluster_slots_pfail:可能已经失效的槽的数目

cluster_slots_fail:已经失效的槽的数目

cluster_known_nodes:已知节点的集群中的总数,包括在节点 握手的状态可能不是目前该集群的成员。这里总共有10个。

cluster_size:集群中设置的分片个数简单的说就是集群中主节点[Master]的数量。

cluster_current_epoch:集群中的currentEpoch总是一致的,currentEpoch越高,代表节点的配置或者操作越新,集群中最大的那个node epoch

cluster_my_epoch:当前节点的config epoch,每个主节点都不同,一直递增, 其表示某节点最后一次变成主节点或获取新slot所有权的逻辑时间.

cluster_stats_messages_sent:通过群集节点到节点的二进制总线发送的消息数。 

cluster_stats_messages_received:通过群集节点到节点的二进制总线上接收报文的数量。

 

查看节点状态

#CLUSTER NODES

 

测试

get 和 set数据

/usr/local/redis/src/redis-cli -c -h 192.168.11.71 -p 7001

进入命令窗口,直接 set  hello  good

通过get hello 验证

新建集群

/usr/local/redis/src/redis-trib.rb create --replicas 1 192.168.11.71:7001 192.168.11.71:7002 192.168.11.72:7003 192.168.11.72:7004 192.168.11.73:7005 192.168.11.73:7006

*集群添加需要一个一个添加,根据提示重复执行

添加Master节点

#前面的ip和端口号为新添加的节点,后面的为集群中任意一个节点。

/usr/local/redis/src/redis-trib.rb add-node 192.168.11.73:7006 192.168.11.71:7001

 

添加Slave节点

/usr/local/redis/src/redis-trib.rb add-node --slave --master-id 3771574aeba36ac672bdf9c7abb77db1613951e5 192.168.11.73:7006 192.168.11.71:7001

 

删除节点

/usr/local/redis/src/redis-trib.rb del-node 192.168.11.73:7006 9af76c7549ec26957d4c4d72637292e3dba47173

遇到的问题

注意:新增节点如果没有成功,可以按以下方式修改

[ERR] Node 192.168.11.73:7006 is not empty.Either the node already knows other nodes (check with CLUSTER NODES) or contains some key in database 0.

解决方法:

1)、将需要新增的节点下aof、rdb等本地备份文件删除;

2)、将新Node的集群配置文件删除,即:删除你redis.conf里面cluster-config-file所在的文件(/var/lib/redis/nodes-7XXX.conf);

3)、再次添加新节点如果还是报错,则登录新Node, /usr/local/redis/src/redis-cli -c -h 192.168.11.71 -p 7001对数据库进行清除:

172.168.11.71:7001>  flushdb      #清空当前数据库

 

集群创建重试步骤:

ps aux|grep redis

kill -9 pid

rm -rf /var/lib/redis/*

/usr/local/redis/src/redis-cli -c -h 192.168.11.71 -p 7001

192.168.11.71:7001> flushdb

查看命令

/usr/local/redis/src/redis-trib.rb

 

获取所有的key

#KEYS *

 

压力测试

/usr/local/redis-3.2.8/src/redis-benchmark -h 192.168.11.56 -p 6379 -n 1000000 -t set,get,lpush,lpop -P 16 -q

你可能感兴趣的:(redis)