搭建Redis集群

来源:互联网 发布:java开发英文简历 编辑:程序博客网 时间:2024/06/04 01:26

   Redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。下面总结一下Redis相关概念及Redis集群搭建步骤。

   【概念】

   Redis是一个key-value存储系统。和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)和zset(有序集合)。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。在此基础上,redis支持各种不同方式的排序。与memcached一样,为了保证效率,数据都是缓存在内存中。区别的是redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步。

   Redis 是一个高性能的key-value数据库。 redis的出现,很大程度补偿了memcached这类keyvalue存储的不足,在部 分场合可以对关系数据库起到很好的补充作用。它提供了Python,Ruby,Erlang,PHP客户端,使用很方便。

   Redis目前提供四种数据类型:string,list,set及zset(sorted set)。

   Redis是单线程,但是一般的作为缓存使用的话,Redis足够了,因为它的读写速度太快了。

   官方的一个简单测试:

     

   在这么快的读写速度下,对于一般程序来说足够用了,但是对于访问量特别大的网站来说,还是稍有不足。那么,如何提升Redis的性能呢?答:搭建Redis集群。

   【Redis集群】

   Redis集群架构图:

        

   在这个图中,每一个蓝色的圈都代表着一个redis的服务器节点。它们任何两个节点之间都是相互连通的。客户端可以与任何一个节点相连接,然后就可以访问集群中的任何一个节点,对其进行存取和其他操作。

   还有就是因为如果集群的话,是有好多个redis一起工作的,那么,就需要这个集群不是那么容易挂掉,所以呢,理论上就应该给集群中的每个节点至少一个备用的redis服务。这个备用的redis称为从节点(slave)。那么这个集群是如何判断是否有某个节点挂掉了呢?

   每一个节点都存有这个集群所有主节点以及从节点的信息,它们之间通过互相的ping-pong判断是否节点可以连接上。如果有一半以上的节点去ping一个节点的时候没有回应,集群就认为这个节点宕机了,然后去连接它的备用节点。如果某个节点和所有从节点全部挂掉,我们集群就进入faill状态。还有就是如果有一半以上的主节点宕机,那么我们集群同样进入发力了状态。这就是我们的redis的投票机制,具体原理如下图所示:

     

   投票过程是集群中所有master参与,如果半数以上master节点与master节点通信超时(cluster-node-timeout),认为当前master节点挂掉。

   什么时候整个集群不可用(cluster_state:fail)?

   a.如果集群任意master挂掉,且当前master没有slave,集群进入fail状态,也可以理解成集群的slot映射[0-16383]不完整时进入fail状态。 ps : redis-3.0.0.rc1加入cluster-require-full-coverage参数,默认关闭,打开集群兼容部分失败。

   b.如果集群超过半数以上master挂掉,无论是否有slave,集群进入fail状态。

   【搭建步骤】

   集群中应该至少有三个节点,每个节点有一备份节点。需要6台服务器。搭建伪分布式,需要6个redis实例。

   第一步:创建6个redis实例指定端口从7001到7006

   

      修改redis.conf文件的port端口

   

   第二步:修改redis.conf 打开Cluster-enable yes前面的注释。

   

   将实例redis01再复制5份,依次修改各实例的redis.conf配置文件的port端口号

   

   第三步:需要一个ruby脚本,在redis源码文件夹下的src目录下。redis-trib.rb

   

    第四步:把redis-trib.rb文件复制到到redis-cluster目录下。

   

   第五步:执行ruby脚本之前,需要安装ruby环境。

    1、yum install ruby

    2、yum install rubygems

    3、安装redis-trib.rb运行依赖的ruby的包redis-3.0.0.gem。将把上传到服务器

    4、安装redis-3.0.0.gem: gem install redis-3.0.0.gem

    

   第六步:启动所有的redis实例

   

   

   

   第七步:使用redis-trib.rb创建集群

   执行命令:./redis-trib.rb create --replicas 1 192.168.25.133:7001 192.168.25.133:7002 192.168.25.133:7003 192.168.25.133:7004 192.168.25.133:7005  192.168.25.133:7006

   

   第八步:使用客户端连接集群: redis01/redis-cli -p 7001 -c,集群搭建成功!

   

   【小结】

   之前在做项目的时候用过Redis,但是没有自己搭建过,理解的也很片面,自己搭建一遍感觉熟悉了不少。

0 0
原创粉丝点击