# 搭建三主三从redis集群 # redis5.0提供了集群快速搭建 # 修改脚本文件: redis/utils/create-cluster目录下的create-cluster脚本文件
--bind $IP --masterauth $PWD --requirepass $PWD --protected-mode no
# 启动 ./create-cluster start # 查看进程 ps -ef|grep redis # 创建集群节点 ./create-cluster create # 关闭集群 ./create-cluster stop # 连接工具连接集群
一主可以多从,如果同时的访问量过大(1000w),主服务肯定就会挂掉,数据服务就挂掉
集群是一组相互独立的、通过高速网络互联的计算机,它们构成了一个组,并以单一系统的模式加以管理。一个客户与集群相互作用时,集群像是一个独立的服务器。集群配置是用于提高可用性和可缩放性。 当请求到来首先由负载均衡服务器处理,把请求转发到另外的一台服务器上。
redis集群可以分为两个方面,软件层面的redis集群指的是只有一台电脑,在这一台电脑上启动了多个redis服务,也就是主从式的。硬件层面的redis集群指的是存在多台实体的电脑,每台电脑上都启动了一个redis或者多个redis服务
注意:每台服务器必须启动要3个或以上的主节点,否则在创建集群时会失败,并且当存活的主节点数小于总节点数的⼀半时,整个集群就⽆法提供服务了
port 7001
bind 192.168.157.136
daemonize yes
pidfile 7001.pid
cluster-enabled yes
cluster-config-file 7001_node.conf
cluster-node-timeout 15000
appendonly yes
使用三个配置文件启动redis服务,并关闭防火墙
配置从服务器
与上面配置方式一样,配置好启动redis服务,并关闭防火墙
创建集群
在主服务器上执行创建集群的指令
redis-cli --cluster create 192.168.157.136:7001 192.168.157.136:7002 192.168.157.136:7003 192.168.157.137:7001 192.168.157.137:7002 192.168.157.137:7003 --cluster-replicas 1
数据存取
根据上图可以看出,当前搭建的主服务器为136:7001、137:7001、136:7002,对应的从服务器是137:7003、136:7003、137:7002
在192.168.157.137机器上连接7002,加参数-c表示连接到集群redis-cli -h 192.168.157.137 -c -p 7002并写入数据,发现自动跳转到136:7002服务上
重定向到7002可以获取数据,如果写入数据又重定向到7001, 目的是为了负载均衡
集群中的每个节点都是平等的关系,都是对等的,每个节点都保存各⾃的数据和整个集群的状态。每个节点都和其他所有节点连接,⽽且这些连接保持活跃,这样就保证了我们只需要连接集群中的任意⼀个节点,就可以获取到其他节点的数据
Redis集群采⽤hash slot的⽅式来分配数据的。redis cluster 默认分配了 16384 个slot,当我们 set⼀个key时,会⽤CRC16算法来取模得到所属的slot,然后将这个key 分到哈希槽区间的节点上
Redis 集群会把数据存在⼀个 master 节点,然后在这个 master 和其对应的salve 之间进⾏数据同步。当读取数据时,也根据⼀致性哈希算法到对应的 master节点获取数据。只有当⼀个master 挂掉之后,才会启动⼀个对应的 salve 节点,充当master