您的位置:首页 > 数据库 > Redis

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

2017-04-25 15:40 603 查看
在前面配置了一个简单的redis主从架构:



我们现在进入真正的集群配置:



如果我们的数据特别大,并发压力特别高,我们的redis主服务器也会有很大压力,所以我们需要多个主从,也就是集群的架构。

在mysql里,多个主从的架构下,我们借助了中间价
mycat
。比如,我们插入一条新闻数据,这个中间价
mycat
就是通过一定算法来决定这条新闻是插入哪一个服务器中。

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

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

去掉主从配置

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

#注释掉配置文件中的
slaveof xxxxx


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


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

关闭rdb存储

save ""

#save 900 1
#save 300 10
#save 60 10000




其他修改配置文件也要分别做修改。

管理集群

需要安装ruby工具包

#切换到root用户
su - root


yum -y install ruby ruby-devel rubygems rpm-build


#安装管理redis的工具
gem install redis


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

redis-trib.rb


启动这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


为了简化,我们可以把这些写入一个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


执行上面命令之后可以看到:



可以看出有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代表链接到集群


查看集群信息:



我们来新增数据,发现是存入到6380那个节点的:



我们链接上6381这个节点
get
一下刚才存入的数据:



这就是集群的基本功能。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: