如何使用Redis搭建分布式集群Cent0S7
-
Redis的主从复制
在Redis4.0后摈弃了 ,因为在主机故障时从机不能自动替换主机
-
Redis中的哨兵模式
解决了主从复制中的自动故障转移的问题,但是没有解决单节点压力问题
-
Redis的集群
同时解决了上述问题,redis3.0后开始支持集群的搭建
-
Redis的集群细节
-
所有的redis节点彼此互联(PING-PONG机制),内部使用二进制协议优化传输速度和带宽.
-
节点的fail是通过集群中超过半数的节点检测失效时才生效.
-
客户端与redis节点直连,不需要中间proxy层.客户端不需要连接集群所有节点,连接集群中任何一个可用节点即可
-
redis-cluster把所有的物理节点映射到[0-16383]slot上,cluster 负责维护node<->slot<->value
-
-
Redis的容错细节
-
领着选举过程是集群中所有master参与,如果半数以上master节点与master节点通信超过(cluster-node-timeout),认为当前master节点挂掉
-
什么时候整个集群不可用(cluster_state:fail),当集群不可用时,所有对集群的操作做都不可用,收到((error) CLUSTERDOWN The cluster is down)错误
-
-
注意
-
判断一个是集群中的节点是否可用,是集群中的所用主节点选举过程,如果半数以上的节点认为当前节点挂掉,那么当前节点就是挂掉了,所以搭建redis集群时建议节点数最好为奇数.
-
搭建集群至少需要三个主节点,三个从节点,至少需要6个节点
-
-
redis集群的开发步骤:
-
搭建ruby环境 在线安装
yum install ruby
-
引入redis集群的支持 redis-3.2.1.gem
安装 gem install redis-3.2.1.gem
-
模拟集群环境 在一台虚拟机上启动七台redis
修改端口号
-
在redis.conf文件中修改如下配置
a)cluster-enabled yes //开启集群模式
b)cluster-config-file nodes-.conf //集群节点配置文件
c)cluster-node-timeout 5000 //集群节点超时时间
d)appendonly yes //开启AOF持久化
-
准备七个文件夹 里面分别放置redis.conf文件
例如:
每个redis.conf都要修改端口号和第4步的配置信息
-
然后将七个文件夹上传到redis 并移动到redis文件夹里和bin目录同级
-
然后分别启动六个redis服务
执行 ./redis-server …/7000/redis.conf
执行 ./redis-server …/7001/redis.conf
…
执行 ./redis-server …/7006/redis.conf
-
进入redis的源码包 进入src目录 将redis-trib.rb 拷贝到/usr/redis/bin目录下(每个人放置的位置都不一样 找到就行)
执行 cp redis-trib.rb /usr/redis/bin/
-
1一个节点一个从机 到bin目录下 执行 下面的命令 192.168.56.208 是我的网卡IP
./redis-trib.rb create --replicas 1 192.168.56.208:7000 192.168.56.208:7001 192.168.56.208:7002 192.168.56.208:7003 192.168.56.208:7004 192.168.56.208:7005
-
查看接群节点的状态 随意连接一个节点 测试
执行./redis-trib.rb check 192.168.56.208:7000
-
集群节点的操作
-
给集群添加一个主节点
./redis-trib.rb add-node 192.168.56.208:7006 192.168.56.208:7005
-
向集群中添加副本节点
./redis-trib.rb add-node-slave 192.168.56.208:7006 192.168.56.208:7000
-
从集群中删除副本节点
./redis-trib.rb del-node 192.168.56.208:7006
-
重新分片 (重新分配slot hash槽)
./redis-trib.rb reshard 192.168.56.208:7000
-
-