手把手搭建redis高可用高并发集群

开始之前你要知道的一些事情

两个概念

高可用:24小时对外提供服务
高并发 同一时间段能处理的请求数

中心化和去中心化

中心化

意思是所有的节点都依赖于同一个主节点,redis 的主从复制就是这种
缺点:

  • 1、中心挂了,服务就挂了
  • 2、中心处理数据的能力有限,不能把节点性能发挥到最大

特点:

  • 就是一个路由作用
    在这里插入图片描述
去中心化

特点

  • 去掉路由,谁都可以来路由,redis 集群的特征
    在这里插入图片描述
    以上通俗的讲就是
  • 中心化:几个经过认证的嘉宾在‘讲话’,所有其他人在听。
  • 去中心化:每个人都可以‘讲话’,每个人都可以选择听或者讲。

Redis集群的执行大致流程分析

哈希槽说明

Redis 集群中内置了 16384 个哈希槽,当需要在 Redis 集群中放置一个 key-value时,redis 先对 key 使用 crc16 算法算出一个结果,然后把结果对 16384 求余数,这样每个 key 都会对应一个编号在 0-16383 之间的哈希槽,redis 会根据节点数量大致均等的将哈希槽映射到不同的节点。
当你往Redis Cluster中加入一个Key时,会根据crc16(key) mod 16384计算这个key应该分布到哪个hash slot中,一个hash slot中会有很多key和value。你可以理解成表的分区,使用单节点时的redis时只有一个表,所有的key都放在这个表里;改用Redis Cluster以后会自动为你生成16384个分区表,你insert数据时会根据上面的简单算法来决定你的key应该存在哪个分区,每个分区里有很多key。

执行流程分析

假如redis集群里面能存放90个key,那么redis集群把90key平分到3个主机
redis对每个主机里面30个存储位置都编号,当应用连接到主机1上面时,应该发送一个写的命令
主机使用crc16算出槽号
如果槽号在1-30 可以直接操作主机1
如果槽号在31-60那么redis会转发到主机2
如果应该再发一个命令set age 22
那么主机2使用crc16再算槽号再转发

具体搭建过程

官方文档:http://redis.cn/topics/cluster-tutorial.html

机器编号ipport
1ip7000
2ip7001
3ip7002
4ip7003
5ip7004
6ip7005

修改6个redis的配置文件

# 创建文件夹
mkdir -p /root/redis-cluster/redis-1
# 复制一个redis.conf到redis-1里面
cp /root/myredis/redis.conf /root/redis-cluster/redis-1
# 更改配置文件
vim /root/redis-cluster/redis-1/redis.conf
# 复制一个redis-server到redis-cluster中
cp /usr/local/redis/bin/redis-server /root/redis-cluster

具体更改的地方如下
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
aop可开可不开,按实际需求
在这里插入图片描述
在这里插入图片描述
复制5个,更改其他 配置文件,依次为:7001、7002、7003、7004、7005
在这里插入图片描述
启动六个redis
在这里插入图片描述

连接

创建集群的脚本是使用Ruby写的,还要安装Ruby的运行环境,不推荐 ,推荐使用 docker 搭建

# 查看创建集群的脚本
ls /usr/local/src/redis/src/

在这里插入图片描述

使用Docker 搭建集群
# 安装Docker
yum install docker
# 启动docker
systemctl start docker
#拉取镜像
docker pull inem0o/redis-trib

执行脚本

# --net host:配置docker的网络模式, 使容器和宿主机共用同一个ip
# 前面三个为主机,后面是三个为从机
docker run -it --net host inem0o/redis-trib create --replicas 1 ip:7000 ip:7001 ip:7002 ip:7003 ip:7004 ip:7005

配置成功之后
在这里插入图片描述

连接测试
# -c表示连接集群,-h:指定ip,-p:指定端口
./redis-cli -c -h 127.0.0.1  -p 7000 

当你进行 set 操作时,redis 集群会根据 crc16 算法算出一个哈希槽(这里就是5798),然后把这个 key 存到 这个哈希槽 中,而此时这个哈希槽在 7001 这个主机上,所以这里自动跳转到了这个主机
在这里插入图片描述
到此搭建完成

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值