【Redis】 手工搭建集群
2017-04-16 21:34
204 查看
上篇博客讨论了redis的主从复制的问题,使用主从复制可以提高redis的高可用性,今天我们就来看一看如何redis的另一种高可用方案—集群,当然集群中也少不了主从复制的身影啊。
下面我们就来手动搭建Redis的集群。
1. 配置
搭建redis的集群将开启6个redis,其中3个为master,3个为slave。所以我们需要复制6份配置文件,并按上一篇文章的介绍进行修改。当然为了使用集群我们还需要多两个设置项:cluster-enabled和cluster-config-file。其中第一个设置为打开集群,第二个为设置集群节点的配置文件。(其中的配置项可以用端口号来区分)
2. 启动redis实例
我们将配置好的6个redis实例启动,启动后我们可以通过下面的命令来查看一些相关信息。
Cluster nodes 查看节点信息
Cluster info 查看集群信息(整个集群的信息)
Info cluster 查看当前redis在集群中的一些配置信息。
3. 连接节点
当我们配置好redis并启动了redis实例后,并不能就组成一个集群,我们可以理解为每个redis都是在一个集群中,我们还要使用cluster meet命令来把所有的组合到一起。
执行完该命令后我们再查看集群信息,可以看到6个redis已经在一个集群中了,但是状态还是fail,也就是说还没有成功启动。
4. 设置主从
为了实现redis的高可用,我们需要设置为主从数据库,所以下面将要做这样的设置。将6484设置为6481的slave,将6485设置为6482的slave,将6486设置为6483的slave,命令cluster replicate node_id就可以帮我们做着这样的事情,它的意思就是将该redis设置为node_id的redis的slave。我们通过使用cluster nodes 可以查看每个redis的node_id.下面展示了两个命令,其中一个为查看集群的节点,一个为将6486设置为6483的slave。
5. 分配插槽
所谓插槽就是redis对key进行分片的单元,在redis的集群实现中,内置了数据自动分片机制,集群内部会将所有的key映射到16834个插槽中,集群中的每个数据库实例负责其中部分的插槽的读写。
分配插槽我们可以使用cluster addslots,一个一个的添加,下面展示了使用该命令分配了三个插槽,
可见16834个插槽会有多么大的工作量啊,所以我们要换一种方式,那就是将所有的redis停下来,直接修改node的配置文件,然后重新启动数据库。看下面的配置红框里面的就是我们对每个master设置的插槽,我们需要对每个master的node配置文件进行修改。下面图示展示了对三个master进行插槽的分配。
修改完后重启。重启后我们在查看集群信息,发现此时状态已经为OK,说明集群搭建成功了。
6. 大功告成
完成上面的配置后我们可以做一个小小的测试。我存入一个key为age的数据。
上面展示了在6483上存入age的一个测试,redis返回为error,并告诉我们age应该放到741插槽上,并且它在6481上
总结
redis集群的搭建就介绍到这里,当然我们也可以使用其他的方法,手工搭建虽然看着有点费劲但是可以让我们明白一些原理性的东西,比如插槽,如果我们使用自动化的搭建工具,可能我们就不会明白插槽有什么作用。
下面我们就来手动搭建Redis的集群。
1. 配置
搭建redis的集群将开启6个redis,其中3个为master,3个为slave。所以我们需要复制6份配置文件,并按上一篇文章的介绍进行修改。当然为了使用集群我们还需要多两个设置项:cluster-enabled和cluster-config-file。其中第一个设置为打开集群,第二个为设置集群节点的配置文件。(其中的配置项可以用端口号来区分)
2. 启动redis实例
我们将配置好的6个redis实例启动,启动后我们可以通过下面的命令来查看一些相关信息。
Cluster nodes 查看节点信息
Cluster info 查看集群信息(整个集群的信息)
Info cluster 查看当前redis在集群中的一些配置信息。
3. 连接节点
当我们配置好redis并启动了redis实例后,并不能就组成一个集群,我们可以理解为每个redis都是在一个集群中,我们还要使用cluster meet命令来把所有的组合到一起。
执行完该命令后我们再查看集群信息,可以看到6个redis已经在一个集群中了,但是状态还是fail,也就是说还没有成功启动。
4. 设置主从
为了实现redis的高可用,我们需要设置为主从数据库,所以下面将要做这样的设置。将6484设置为6481的slave,将6485设置为6482的slave,将6486设置为6483的slave,命令cluster replicate node_id就可以帮我们做着这样的事情,它的意思就是将该redis设置为node_id的redis的slave。我们通过使用cluster nodes 可以查看每个redis的node_id.下面展示了两个命令,其中一个为查看集群的节点,一个为将6486设置为6483的slave。
5. 分配插槽
所谓插槽就是redis对key进行分片的单元,在redis的集群实现中,内置了数据自动分片机制,集群内部会将所有的key映射到16834个插槽中,集群中的每个数据库实例负责其中部分的插槽的读写。
分配插槽我们可以使用cluster addslots,一个一个的添加,下面展示了使用该命令分配了三个插槽,
可见16834个插槽会有多么大的工作量啊,所以我们要换一种方式,那就是将所有的redis停下来,直接修改node的配置文件,然后重新启动数据库。看下面的配置红框里面的就是我们对每个master设置的插槽,我们需要对每个master的node配置文件进行修改。下面图示展示了对三个master进行插槽的分配。
修改完后重启。重启后我们在查看集群信息,发现此时状态已经为OK,说明集群搭建成功了。
6. 大功告成
完成上面的配置后我们可以做一个小小的测试。我存入一个key为age的数据。
上面展示了在6483上存入age的一个测试,redis返回为error,并告诉我们age应该放到741插槽上,并且它在6481上
总结
redis集群的搭建就介绍到这里,当然我们也可以使用其他的方法,手工搭建虽然看着有点费劲但是可以让我们明白一些原理性的东西,比如插槽,如果我们使用自动化的搭建工具,可能我们就不会明白插槽有什么作用。
相关文章推荐
- 《Redis复制与可扩展集群搭建》看后感
- Redis复制与可扩展集群搭建
- Redis复制与可扩展集群搭建
- Redis 3.0集群搭建/设备/FAQ
- centos6.5上redis集群搭建,基于redis-3.0.0-beta8--安装redis并测试
- Redis 集群搭建和简单使用教程
- redis集群搭建
- redis 搭建集群
- Redis复制与可扩展集群搭建——Redis学习笔记(四)
- Window平台搭建Redis分布式缓存集群 (一)服务器搭建及性能测试
- Redis复制与可扩展集群搭建
- Redis复制与可扩展集群搭建(转)
- Redis复制与可扩展集群搭建
- Redis 3.0集群搭建/配置/FAQ
- Redis复制与可扩展集群搭建
- Redis复制与可扩展集群搭建
- Redis的复制功能以及Redis复制机制本身的优缺点以及集群搭建问题
- Redis复制与可扩展集群搭建
- Redis 3.0集群搭建/配置/FAQ - RichardParker
- Window平台搭建Redis分布式缓存集群 (一)服务器搭建及性能测试