Redis5版本集群搭建 (5)

Redis集群的主节点内置了类似Redis Sentinel的节点故障检测和自动故障转移功能,当集群中的某个主节点下线时,集群中的其他在线主节点会注意到这一点,并对已下线的主节点进行故障转移。

集群进行故障转移的方法和Redis Sentinel进行故障转移的方法基本一样,不同的是,在集群里面,故障转移是由集群中其他在线的主节点负责进行的,所以集群不必另外使用Redis Sentinel。

5.5 集群分片策略

Redis-cluster分片策略,是用来解决key存储位置的。

集群将整个数据库分为16384个槽位slot,所有key-value数据都存储在这些slot中的某一个上。一个slot槽位可以存放多个数据,key的槽位计算公式为:slot_number=crc16(key)%16384,其中crc16为16位的循环冗余校验和函数。

集群中的每个主节点都可以处理0个至16383个槽,当16384个槽都有某个节点在负责处理时,集群进入上线状态,并开始处理客户端发送的数据命令请求。

5.6 集群redirect转向

由于Redis集群无中心节点,请求会随机发给任意主节点;

主节点只会处理自己负责槽位的命令请求,其它槽位的命令请求,该主节点会返回客户端一个转向错误;

客户端根据错误中包含的地址和端口重新向正确的负责的主节点发起命令请求。

5.7 集群搭建 5.7.1 准备工作

redis5.0版本之后可以直接使用redis-cli命令创建集群,不使用redis-trib.rb命令了。

5.7.2 集群规划

(1)Redis集群最少需要6个节点,3主3从,可以分布在一台或者多台主机上。

真集群:6台主机,每台主机的redis服务使用的IP不同,端口号随意,一样不一样都可以

假集群,一台主机,redis服务使用的IP相同,端口号不同

本例子是在一台主机上创建假集群,不同的端口表示不同的redis节点,如下:

主节点:127.0.0.1:7001 127.0.0.1:7002 127.0.0.1:7003

从节点:127.0.0.1:7004 127.0.0.1:7005 127.0.0.1:7006

后期新加的主节点:127.0.0.1:7007

后期新家的从节点:127.0.0.1:7008

(2)在/usr/local/src/redis-5.0.4/下创建cluster目录,其下创建7001、7002…7006目录,如下:

(3)将redis解压路径下的配置文件redis.conf,依次拷贝到每个700X目录内,并修改每个700X目录下的redis.conf配置文件:

# cd /usr/local/src/redis-5.0.4/cluster # mkdir {7001,7002,7003,7004,7005,7006} # mkdir -p /var/log/redis/{7001,7002,7003,7004,7005,7006} # redis.conf文件示例 bind 127.0.0.1 port 7001 daemonize yes pidfile /var/run/redis_7001.pid dir "./" # node.conf文件保存路径 logfile "/var/log/redis/7001/redis.log" appendonly yes appendfsync always cluster-enabled yes cluster-config-file nodes-7001.conf # 该文件中包含集群信息 # 其他配置文件类似,把端口号修改一下就行了 5.7.3 启动每个节点redis服务

批量启动脚本:

# vim s/usr/local/src/redis-5.0.4/cluster/ctart_cluster.sh #!/bin/bash cd ./7001 && /usr/local/src/redis-5.0.4/src/redis-server ./redis.conf cd ../7002 && /usr/local/src/redis-5.0.4/src/redis-server ./redis.conf cd ../7003 && /usr/local/src/redis-5.0.4/src/redis-server ./redis.conf cd ../7004 && /usr/local/src/redis-5.0.4/src/redis-server ./redis.conf cd ../7005 && /usr/local/src/redis-5.0.4/src/redis-server ./redis.conf cd ../7006 && /usr/local/src/redis-5.0.4/src/redis-server ./redis.conf cd .. # chmod +x start_cluster.sh

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zypzfx.html