Redis集群
简介
redis集群是一个无中心的分布式Redis存储架构,可以在多个节点之间进行数据共享,解决了Redis高可用、可扩展等问题。
Redis集群的特点
1、将数据自动切分(split)到多个节点
2、当集群中的某一个节点故障时,redis还可以继续处理客户端的请求。
集群中的主从复制
集群中的每个节点都有1个至N个复制品,其中一个为主节点,其余的为从节点,如果主节点下线了,集群就会把这个主节点的一个从节点设置为新的主节点,继续工作。这样集群就不会因为一个主节点的下线而无法正常工作。
注意:
1、如果某一个主节点和他所有的从节点都下线的话,redis集群就会停止工作了。redis集群不保证数据的强一致性,在特定的情况下,redis集群会丢失已经被执行过的写命令
2、使用异步复制(asynchronous replication)是 Redis 集群可能会丢失写命令的其中一个原因,有时候由于网络原因,如果网络断开时间太长,redis集群就会启用新的主节点,之前发给主节点的数据就会丢失。
安装配置
修改配置文件redis.conf
daemonize yes port 6379 cluster-enabled yes cluster-config-file nodes.conf cluster-node-timeout 5000
要让集群正常运作至少需要三个主节点
我们这里就简单在一台主机上创建6个redis节点来演示集群配置,实际生产环境中需要每个节点一台主机。
我们要创建的6个redis节点,其中三个为主节点,三个为从节点,对应的redis节点的ip和端口对应关系如下:
192.168.33.130:7000 192.168.33.130:7001 192.168.33.130:7002 192.168.33.130:7003 192.168.33.130:7004 192.168.33.130:7005
1、首先我们创建6个以端口为名称的文件夹(由于每个redis节点启动的时候,都会在当前文件夹下创建快照文件,所以我们需要创建每个节点的启动目录)
mkdir 7000 mkdir 7001 mkdir 7002 mkdir 7003 mkdir 7004 mkdir 7005
2、接下来把每个节点启动所需要的配置文件拷贝到相应的启动目录:
cp redis.conf 7000 cp redis.conf 7001 cp redis.conf 7002 cp redis.conf 7003 cp redis.conf 7004 cp redis.conf 7005
3、然后我们进入每个启动目录,修改之前拷贝的redis.conf文件中的端口port 为上面列出的对应端口。
最终每个节点的配置类似于:
daemonize yes port 6379 #只有端口不同,其他相同 cluster-enabled yes cluster-config-file nodes.conf cluster-node-timeout 5000
4、进入每个启动目录,以每个目录下的redis.conf文件启动
使用命令查看redis节点是否启动:
ps -ef | grep redis
5、创建集群命令
redis-trib.rb create --replicas 1 192.168.33.130:7000 192.168.33.130:7001 192.168.33.130:7002 192.168.33.130:7003 192.168.33.130:7004 192.168.33.130:7005
注意:
5.1、执行上面的命令的时候可能会报错,因为是执行的ruby的脚本,需要ruby的环境
错误内容:
所以我们需要安装ruby的环境,这里推荐使用yum安装:
yum install ruby
5.2、安装ruby后,执行命令可能还会报错,提示缺少rubygems组件,使用yum安装
解决方法:
yum install rubygems
5.3、上面两个步骤后,执行创建集群目录可能还会报错,提示不能加载redis,是因为缺少redis和ruby的接口,使用gem 安装。
解决方法:
gem install redis
上面三个问题解决后,启动创建集群应该可以正常启动了:
6、接下来我们使用命令进入集群环境
redis-cli -c -p 7000
redis集群操作
1. 使用redis-cli客户端来操作redis集群,使用命令 :
redis-cli -c -p [port]
2. 查看集群中的所有主节点信息
redis-cli -c -p 7000 cluster nodes [| grep master]
添加删除节点
http://blog.csdn.net/u011204847/article/details/51307044