redis cluster集群

目录

一.cluster集群

1、集群的作用

2、集群模式的数据分片

3、集群模式的主从复制模型

4、Redis集群模式

4.1 Redis集群部署

4.2 开启群集功能

4.3 将配置好的文件复制到其余目录中

4.4 修改所有集群服务的配置文件端口,使其不一致

4.5 启动redis节点

4.6 启动集群

4.7 集群测试

四、总结


一.cluster集群

集群,即 Redis Cluster, 是Redis 3. 0开始引入的分布式存储方案。

集群由多个节点(Node) 组成,Redis 的数据分布在这些节点中。

集群中的节点分为主节点和从节点;只有主节点负责读写请求和集群信息的维护;从节点只进行主节点数据和状态信息的复制。

1、集群的作用

(1)数据分区:数据分区(或称数据分片) 是集群最核心的功能。

集群将数据分散到多个节点,一方面突破了 Redis 单机内存大小的限制,存储容量大大增加;

另一方面每个主节点都可以对外提供读服务和写服务,大大提高了集群的响应能力。

Redis 单机内存大小受限问题,在介绍持久化和主从复制时都有提及;

例如,如果单机内存太大,bgsave 和 bgrewriteaof的 fork 操作可能导致主进程阻塞,主从环境下主机切换时可能导致从节点长时间无法提供服务,全量复制阶段主节点的复制缓冲区可能溢出。

(2)高可用:集群支持主从复制和主节点的自动故障转移(与哨兵类似) ;当任一节点发生故障时,集群仍然可以对外提供服务。

2、集群模式的数据分片

1.Redis集群引入了哈希槽的概念

2.Redis集群有 16384 个哈希槽( 编号0-16383)

3.集群的每个节点负责一部分哈希槽

4.每个Key 通过 CRC16校验后对16384取余来决定放置哪个哈希槽,通过这个值,去找到对应的插槽所对应的节点,然后直接自动跳转到这个对应的节点上进行存取操作

3、集群模式的主从复制模型

<- - -以3个节点组成的集群为例- - ->

    节点A 包含0到5460号哈希槽

    节点B 包含5461到10922号哈希槽

    节点C 包含10923到16383号哈希槽

1.集群中具有A、B、C三个节点,如果节点B失败了,整个集群就会因缺少5461-10922这个范围的槽而不可以用。

2.为每个节点添加一个从节点A1、B1、C1整个集群便有三个Master节点和三个slave节点组成,在节点B失败后,集群选举B1位为主节点继续服务。当B和B1都失败后,集群将不可用。

4、Redis集群模式

4.1 Redis集群部署

#在当前服务器配置6个redis服务

cd /etc/redis/

mkdir -p /etc/redis/redis-cluster/redis600{1..6}

cd redis-cluster/redis6001

#复制配置文件及程序到目录中

cp /opt/redis-5.0.7/redis.conf ./

cp /opt/redis-5.0.7/src/redis-cli ./

cp /opt/redis-5.0.7/src/redis-server ./

4.2 开启群集功能

vim redis.conf

  69 #bind 127.0.0.1      #将其注释,即监听所有端口

  88 protected-mode no    #关闭保护模式

  92 port 6001            #为了区分,将端口更改,6个不能相同

  136 daemonize yes           #开启守护进程

  699 appendonly yes   #开启AOF持久化

  832 cluster-enabled yes #开启集群功能

  840 cluster-config-file nodes-6001.conf  #群集名称文件设置

  846 cluster-node-timeout 15000  #群集超时时间设置

4.3 将配置好的文件复制到其余目录中

for i in {2..6};do

> cp ./* /etc/redis/redis-cluster/redis600$i

> done

4.4 修改所有集群服务的配置文件端口,使其不一致

[root@localhost redis6001]# for n in {2..6};do

> sed -i '92s/6001/600'$n'/' /etc/redis/redis-cluster/redis600$n/redis.conf

> sed -i '840s/6001/600'$n'/' /etc/redis/redis-cluster/redis600$n/redis.conf

> done

4.5 启动redis节点

#分别进入6个节点,进行服务启动redis-server redis.conf

for m in {1..6};do

> cd /etc/redis/redis-cluster/redis600$m/

> redis-server redis.conf

> done

4.6 启动集群

redis-cli --cluster create 127.0.0.1:6001 127.0.0.1:6002 127.0.0.1:6003 127.0.0.1:6004 127.0.0.1:6005 127.0.0.1:6006 --cluster-replicas 1

# -replicas 1   表示每个主节点有1个从节点

#若使用6台服务器,此处节点ip请换为自己真实ip即端口号

4.7 集群测试

redis-cli -p 6001 -c

#-c 参数,节点之间可以相互跳转

cluster slots 

#查看节点的哈希槽编号范围

cluster keyslot 键名

#查看键的哈希槽编号

四、总结

1.Redis高可用有四种实现方法:持久化、主从复制、哨兵模式、集群模式

2.持久化适用于单台服务器,主要作用是数据备份,即将数据存储在硬盘,保证数据不会因进程退出而丢失。其是最简单的一种高可用方式

3.主从复制适用于数据的多机备份,以及对于读操作的负载均衡和简单的故障恢复。

4.哨兵模式基于主从复制,部署哨兵模式必须先部署主从复制,其在主从复制基础上提供了自动化的故障恢复。但是其写操作无法负载均衡,存储能力受到单机的限制。

5.Redis集群提供了分布式存储方案解决了写操作无法负载均衡,以及存储能力受到单机限制的问题,实现了较为完善的高可用方案,其集群最低需要6个节点,三主三从,实现Redis高可用

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值