Redis集群 - cluster集群、数据分片

深藏阁楼爱情的钟 2022-05-15 03:05 440阅读 0赞

在前面配置了一个简单的redis主从架构:
这里写图片描述

我们现在进入真正的集群配置:
这里写图片描述

如果我们的数据特别大,并发压力特别高,我们的redis主服务器也会有很大压力,所以我们需要多个主从,也就是集群的架构。
在mysql里,多个主从的架构下,我们借助了中间价mycat。比如,我们插入一条新闻数据,这个中间价mycat就是通过一定算法来决定这条新闻是插入哪一个服务器中。

redis其实在集群里面也能做到这一点,我们配置好集群之后,比如set name jack,可以通过某种算法来决定这个数据是进入我们哪一个redis服务器的主节点。这就是我们所谓的redis集群里的一个功能——数据分片。

其实在我们实战当中,很多时候一台服务器不可能承担所有数据,我们做分布式开发,数据也要分布式存储。

去掉主从配置

1、我们让各个redis实例独立运行

  1. #注释掉配置文件中的
  2. slaveof xxxxx
  3. 1
  4. 2

2、另外还需要停止哨兵(sentinel)。
3、你的redis版本必须是3.x以上。配置集群需要至少3个主节点(每个主节点对应一个从节点,这样一共6个节点)

集群的关键配置

官方教程:
https://redis.io/topics/cluster-tutorial

创建6个节点,端口分别是6379、6380、6381、6479、6480、6481。
配置文件中:
port必须不一样;pidfile必须不一样
dbfilename前面加#注释掉
cluster-enabled yes 表示打开集群
cluster-config-file nodes_6379.conf 集群模式下,每个redis节点生产一个配置文件,由redis自己维护,文件名区分即可。
appendonly yes 开启AOF存储模式
appendfilename 也要区分文件名
cluster-node-timeout 10000

6379.conf:

  1. port 6379
  2. pidfile "/usr/local/redis/redis_6379.pid"
  3. #dbfilename "dump6379.rdb"
  4. appendonly yes
  5. appendfilename "appendonly6379.aof"
  6. cluster-enabled yes
  7. cluster-config-file nodes-6379.conf
  8. cluster-node-timeout 15000
  9. 1
  10. 2
  11. 3
  12. 4
  13. 5
  14. 6
  15. 7
  16. 8

其他几个配置文件也要分别做修改(注意区分不一样的地方)

关闭rdb存储

  1. save ""
  2. #save 900 1
  3. #save 300 10
  4. #save 60 10000
  5. 1
  6. 2
  7. 3
  8. 4
  9. 5

这里写图片描述
其他修改配置文件也要分别做修改。

管理集群

需要安装ruby工具包

  1. #切换到root用户
  2. su - root
  3. 1
  4. 2
  5. yum -y install ruby ruby-devel rubygems rpm-build
  6. 1
  7. #安装管理redis的工具
  8. gem install redis
  9. 1
  10. 2

安装好后,在我们redis目录/usr/local/redis/bin/下多了一个文件:

  1. redis-trib.rb
  2. 1

启动这6个实例

  1. /usr/local/redis/bin/redis-server /usr/local/redis/conf/6379.conf
  2. /usr/local/redis/bin/redis-server /usr/local/redis/conf/6380.conf
  3. /usr/local/redis/bin/redis-server /usr/local/redis/conf/6381.conf
  4. /usr/local/redis/bin/redis-server /usr/local/redis/conf/6479.conf
  5. /usr/local/redis/bin/redis-server /usr/local/redis/conf/6480.conf
  6. /usr/local/redis/bin/redis-server /usr/local/redis/conf/6481.conf
  7. 1
  8. 2
  9. 3
  10. 4
  11. 5
  12. 6

为了简化,我们可以把这些写入一个shell脚本,比如start,然后执行这个文件./start 就启动6个节点了。

启动之后,我们查看进程:
这里写图片描述
cluster代表各个节点已经做好准备进入集群。如果没有这个可能前面的配置是有错误的。

清空所有节点的redis数据

(在前面学习的时候增加过数据。)
数据存放在我们配置的路径/usr/local/redis/datadir/
这个目录下可能有.rdb文件,因为在我们前面学习中是用rdb模式保存数据的。
我们现在把这些文件都删掉(因为我们是学习演示,所以直接删除更方便)
这里写图片描述

启动集群

看文档:
https://redis.io/topics/cluster-tutorial

  1. ./redis-trib.rb create --replicas 1 127.0.0.1:6379 127.0.0.1:6380 127.0.0.1:6381 127.0.0.1:6479 127.0.0.1:6480 127.0.0.1:6481
  2. 1

执行上面命令之后可以看到:
这里写图片描述

可以看出有3个master和3个slave。
然后我们输入:yes
这里写图片描述
ok,我们集群最简单的配置已经成功啦(注意这个工具紧紧是帮我们把各个节点配置成集群)。

可能出现的错误:ERR Slot xxxxxx is already busy( Redis::CommandError)
如果上一次运行出错,则必须去datadir对应的目录手工删除 自动生产的cluster配置文件

测试集群

链接集群的方式,需要多加一个参数

  1. ./redis-cli -h 127.0.0.1 -c -p 6379
  2. #-c代表链接到集群
  3. 1
  4. 2

查看集群信息:
这里写图片描述

我们来新增数据,发现是存入到6380那个节点的:
这里写图片描述

我们链接上6381这个节点get一下刚才存入的数据:
这里写图片描述

这就是集群的基本功能。

  1. <link rel="stylesheet" href="https://csdnimg.cn/release/phoenix/template/css/markdown_views-ea0013b516.css">
  2. </div>

发表评论

表情:
评论列表 (有 0 条评论,440人围观)

还没有评论,来说两句吧...

相关阅读