docker部署Redis集群

一、 Redis集群简介

Redis集群搭建的方式有多种,例如使用zookeeper等,但从redis 3.0之后版本支持redis-cluster集群,Redis-Cluster采用无中心结构,每个节点保存数据和整个集群状态,每个节点都和其他所有 节点连接。其redis-cluster架构图如下:
在这里插入图片描述

其结构特点:
1、所有的redis节点彼此互联(PING-PONG机制),内部使用二进制协议优化传输速度和带宽。
2、节点的fail是通过集群中超过半数的节点检测失效时才生效。
3、客户端与redis节点直连,不需要中间proxy层.客户端不需要连接集群所有节点,连接集群中任何一个可用节点即可。
4、redis-cluster把所有的物理节点映射到[0-16383]slot上(不一定是平均分配),cluster 负责维护node<->slot<->value。
5、Redis集群预分好16384个桶,当需要在 Redis 集群中放置一个 key-value 时,根据 CRC16(key) mod 16384的值,决定将一个key放到哪个桶中。
redis cluster节点分配
现在我们是三个主节点分别是:A, B, C 三个节点,它们可以是一台机器上的三个端口,也可以是三台不同的服务器。那么,采用哈希槽 (hash slot)的方式来分配16384个slot 的话,它们三个节点分别承担的slot 区间是:
节点A覆盖0-5460;
节点B覆盖5461-10922;
节点C覆盖10923-16383.
获取数据:
如果存入一个值,按照redis cluster哈希槽的算法: CRC16(‘key’)%16384 = 6782。 那么就会把这个key 的存储分配到 B 上了。同样,当我连接(A,B,C)任何一个节点想获取’key’这个key时,也会这样的算法,然后内部跳转到B节点上获取数据
Redis Cluster主从模式
redis cluster 为了保证数据的高可用性,加入了主从模式,一个主节点对应一个或多个从节点,主节点提供数据存取,从节点则是从主节点拉取数据备份,当这个主节点挂掉后,就会有这个从节点选取一个来充当主节点,从而保证集群不会挂掉。

使用Docker搭建redis-cluster集群
我们在单个服务器上搭建测试环境,当然也可在多个服务器上搭建,我们搭建3个redis-master节点,和3个redis-slave节点,所以总共需要准备6个redis
我们使用docker-compose来运行我们的6个redis

二、 环境准备:

请在主机上安装docke和docker-compose
docker-ce
docker-compose

三、 创建6个redis

编写docker-compose.yml
mkdir redis-cluster
cd redis-cluster
vim docker-compose.yml
在这里插入图片描述

编写完毕后启动所有容器
docker-compose up -d
在这里插入图片描述

创建集群:

docker run --rm -it inem0o/redis-trib create --replicas 1 192.168.189.171:7001 192.168.189.171:7002 192.168.189.171:7003 192.168.189.171:7004 192.168.189.171:7005 192.168.189.171:7006
在这里插入图片描述
在这里插入图片描述

四、 登录测试

从集群的任意节点都可以登录
redis-cli -c -h 192.168.189.171-p 7001
-c是使用集群的方式连接redis
-h 是redis主机ip地址
-p 是redis主机的端口

查看集群节点信息
在这里插入图片描述

创建一个键值对

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

获取数据和存储数据,可以看到内部在自动跳转!实现负载均衡的效果!

高可用效果测试:我们可以停止了redis2,登录集群依然可以获取到数据!通过此效果可以测试到高可用效果!

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值