Redis集群 - cluster集群、数据分片
在前面配置了一个简单的redis主从架构:
我们现在进入真正的集群配置:
如果我们的数据特别大,并发压力特别高,我们的redis主服务器也会有很大压力,所以我们需要多个主从,也就是集群的架构。
在mysql里,多个主从的架构下,我们借助了中间价mycat
。比如,我们插入一条新闻数据,这个中间价mycat
就是通过一定算法来决定这条新闻是插入哪一个服务器中。
redis其实在集群里面也能做到这一点,我们配置好集群之后,比如set name jack
,可以通过某种算法来决定这个数据是进入我们哪一个redis服务器的主节点。这就是我们所谓的redis集群里的一个功能——数据分片。
其实在我们实战当中,很多时候一台服务器不可能承担所有数据,我们做分布式开发,数据也要分布式存储。
去掉主从配置
1、我们让各个redis实例独立运行
#注释掉配置文件中的
slaveof xxxxx
1
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:
port 6379
pidfile "/usr/local/redis/redis_6379.pid"
#dbfilename "dump6379.rdb"
appendonly yes
appendfilename "appendonly6379.aof"
cluster-enabled yes
cluster-config-file nodes-6379.conf
cluster-node-timeout 15000
1
2
3
4
5
6
7
8
其他几个配置文件也要分别做修改(注意区分不一样的地方)
关闭rdb存储
save ""
#save 900 1
#save 300 10
#save 60 10000
1
2
3
4
5
其他修改配置文件也要分别做修改。
管理集群
需要安装ruby工具包
#切换到root用户
su - root
1
2
yum -y install ruby ruby-devel rubygems rpm-build
1
#安装管理redis的工具
gem install redis
1
2
安装好后,在我们redis目录/usr/local/redis/bin/
下多了一个文件:
redis-trib.rb
1
启动这6个实例
/usr/local/redis/bin/redis-server /usr/local/redis/conf/6379.conf
/usr/local/redis/bin/redis-server /usr/local/redis/conf/6380.conf
/usr/local/redis/bin/redis-server /usr/local/redis/conf/6381.conf
/usr/local/redis/bin/redis-server /usr/local/redis/conf/6479.conf
/usr/local/redis/bin/redis-server /usr/local/redis/conf/6480.conf
/usr/local/redis/bin/redis-server /usr/local/redis/conf/6481.conf
1
2
3
4
5
6
为了简化,我们可以把这些写入一个shell脚本,比如start
,然后执行这个文件./start
就启动6个节点了。
启动之后,我们查看进程:cluster
代表各个节点已经做好准备进入集群。如果没有这个可能前面的配置是有错误的。
清空所有节点的redis数据
(在前面学习的时候增加过数据。)
数据存放在我们配置的路径/usr/local/redis/datadir/
。
这个目录下可能有.rdb
文件,因为在我们前面学习中是用rdb模式保存数据的。
我们现在把这些文件都删掉(因为我们是学习演示,所以直接删除更方便)
启动集群
看文档:
https://redis.io/topics/cluster-tutorial
./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
1
执行上面命令之后可以看到:
可以看出有3个master和3个slave。
然后我们输入:yes
ok,我们集群最简单的配置已经成功啦(注意这个工具紧紧是帮我们把各个节点配置成集群)。
可能出现的错误:ERR Slot xxxxxx is already busy( Redis::CommandError)
如果上一次运行出错,则必须去datadir对应的目录手工删除 自动生产的cluster配置文件
测试集群
链接集群的方式,需要多加一个参数
./redis-cli -h 127.0.0.1 -c -p 6379
#-c代表链接到集群
1
2
查看集群信息:
我们来新增数据,发现是存入到6380那个节点的:
我们链接上6381这个节点get
一下刚才存入的数据:
这就是集群的基本功能。
<link rel="stylesheet" href="https://csdnimg.cn/release/phoenix/template/css/markdown_views-ea0013b516.css">
</div>
还没有评论,来说两句吧...