Redis 十二 集群

如果一个项目,数据量特别大,一个Redis节点根本放不下,那么可以用到集群。

集群:多个服务器实例,分别部署在不同的服务器上,共同处理相同的任务的一组集合。

 

 

 

使用集群的原因:高并发(分担服务器压力),高可用(解决单点故障)

Redis集群特点:

1.无中心,没有主从之分;

2.集群之间有ping-pang机制,通信机制,防止某个节点挂掉;

3.投票机制,确认某个节点是否真的挂掉,例如节点1ping节点2,其实是节点1挂了,2根本没收到消息,这时大家投票,即其他节点ping2,看看是不是真的挂掉,所以redis集群节点的数量必须是2n+1,不然投票容易出问题;

4.存放key时,根据算法,分配到不同的节点中;

5.每一个节点,都必须有一个从节点,这样可以保证数据不会丢失;

6.如果某一个节点被查询次数太多了,顶不住,可以针对某一个节点做主从/哨兵;

7.超过半数的节点挂掉,整个集群就挂掉了。


 

详细配置

集群至少需要6个节点(3主3从模式)。

1. 准备6个文件夹,分别用端口号命名,即6个节点的端口号是9001~9006。

mkdir /usr/local/redis-cluster
cd redis-cluster/
mkdir -p 9001/data 9002/data 9003/data 9004/data 9005/data 9006/data

2.在 /usr/local/redis-cluster 下创建 bin 文件夹,用来存放集群运行脚本,并把安装好的 Redis 的 src 路径下的运行脚本拷贝过来。

mkdir redis-cluster/bin
cd /usr/local/redis/src
cp mkreleasehdr.sh redis-benchmark redis-check-aof redis-check-dump redis-cli redis-server redis-trib.rb /usr/local/redis-cluster/bin

3.我们现在从已安装好的 Redis 中复制一个新的实例到 9001 文件夹,并修改 redis.conf 配置

cp /usr/local/redis/* /usr/local/redis-cluster/9001

需要修改的配置内容

port 9001(每个节点的端口号)
bind 192.168.119.131(绑定当前机器 IP)
dir /usr/local/redis-cluster/9001/data/(数据文件存放位置)
pidfile /var/run/redis_9001.pid(pid 9001和port要对应)
cluster-enabled yes(启动集群模式)
cluster-config-file nodes9001.conf(9001和port要对应)
cluster-node-timeout 15000 (节点超时时间,毫秒)
cluster-slave-validity-factor 10 (验证slave节点的次数,即心跳机制次数)
cluster-migration-barrier 1 (那些分配后仍然剩余migration barrier个从节点的主节点才会触发节点分配,默认1就好)
cluster-require-full-coverage yes (主从节点之间是否全量复制) appendonly yes (数据保存为aof格式)
appendfilename "xxxx.xxxx.aof" (数据保存的文件)
 

9002~9006的redis.conf完全可以复制9001,只需要修改这几点,以9002为例,以此类推

port 9002
dir /usr/local/redis-cluster/9002/data/
cluster-config-file nodes-9002.conf
pidfile /var/run/redis_9002.pid

安装集群所需软件ruby和相关接口

yum install ruby
yum install rubygems
gem install redis 

执行命令创建集群

/usr/local/redis-cluster/bin/redis-trib.rb create --replicas 1 192.168.119.131:9001 192.168.119.131:9002 192.168.119.131:9003 192.168.119.131:9004 192.168.119.131:9005 192.168.119.131:9006

--replicas 1 表示主从复制比例为 1:1,即一个主节点对应一个从节点

命令执行成功后会自动给我们分配主从,如果同意这样分配,再输入yes就行了。

posted @ 2020-12-15 15:51  luytest  阅读(126)  评论(0编辑  收藏  举报