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

【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集群的搭建就介绍到这里,当然我们也可以使用其他的方法,手工搭建虽然看着有点费劲但是可以让我们明白一些原理性的东西,比如插槽,如果我们使用自动化的搭建工具,可能我们就不会明白插槽有什么作用。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: