服务器篇(Redis)---Redis集群的搭建

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/programlight/article/details/79553009
---Redis集群的搭建---

redis-cluster架构图


redis-cluster投票:容错图


架构细节

     (1)所有的redis节点彼此互联(PING-PONG机制),内部使用二进制协议优化传输速度和带宽.

        (2)节点的fail是通过集群中超过半数的节点检测失效时才生效.

        (3)客户端与redis节点直连,不需要中间proxy.客户端不需要连接集群所有节点,连接集群 

        个点即可

        (4)redis-cluster把所有的物理节点映射到[0-16383]slot,cluster 负责维护node<->slot<->vallue

Redis 集群中内置了 16384 个哈希槽,当需要在 Redis 集群中放置一个 key-value 时,redis 先对 key 使用 crc16 算法算出一个结果,然后把结果对 16384 求余数,这样每个 key 都会对应一个编号在 0-16383 之间的哈希槽,redis 会根据节点数量大致均等的将哈希槽映射到不同的节点。如下图所示

Redis集群的搭建

        Redis集群中至少应该有三个节点。要保证集群的高可用,需要每个节点有一个备份机。

        所以Redis集群至少需要6台服务器,而考虑到太占用资源,我们可以搭建伪分布式。

        可以使用一台虚拟机运行6个redis实例。需要修改redis的端口号7001-7006。

        首先创建个redis-cluster文件夹,我的是在local下创建的

            mkdir /usr/local/redis-cluster

         然后把已经装好redis文件下的bin目录复制到redis-cluster文件下,没装的话看下面这篇博客

            cp /usr/local/redis/bin /usr/local/redis-cluster/redis-01 -r

         如果redis-01中有dump.rdb话就删除

             rm -f dump.rdb

         更改redis.conf配置文件,更改端口和放开cluster-enabled yes

            vim redis.conf


        然后把redis-01复制5个,在redis-cluster文件目录下

           cp -r redis-01/ redis-02

           cp -r redis-01/ redis-03

           cp -r redis-01/ redis-04

           cp -r redis-01/ redis-05

           cp -r redis-01/ redis-06

        把每个复制的文件下的port端口改了

        启动:一个个启动太麻烦了,可以写个批处理

            vim start-all.sh

        把下面内容复制到里面保存

            cd redis-01
            ./redis-server redis.conf
            cd  ..
            cd redis-02
            ./redis-server redis.conf
            cd  ..
            cd redis-03
            ./redis-server redis.conf
            cd  ..
            cd redis-04
            ./redis-server redis.conf
            cd  ..
            cd redis-05
            ./redis-server redis.conf
            cd  ..
            cd redis-06
            ./redis-server redis.conf

            cd  ..

        给这个批处理赋予权限

            chmod u+x start-all.sh

        查看是否启动成功

            ps aux|grep redis

        接下来把这六个节点连接到一起把槽分配好,需要一个工具(ruby脚本),在redis源代码中,复制过来

            cp /redis-3.0.0/src/redis-trib.rb /usr/local/redis-cluster/

集群搭建环境

     使用ruby脚本搭建集群,需要ruby环境

            yum install ruby

            yum install rubygems

         安装ruby脚本运行使用的包,先把包下载下来,下面提供了网盘链接

                链接:https://pan.baidu.com/s/1L4hcQ79XY1RToTyjw8rz7A 密码:sq7r

          安装

              gem install redis-3.0.0.gem

         装好后就可以启动啦,不过启动时需要设置参数

    ./redis-trib.rb create --replicas 1 192.168.25.128:7001 192.168.25.128:7002 192.168.25.128:7003 192.168.25.128:7004 192.168.25.128:7005  192.168.25.128:7006

               上面的IP地址要改为自己的

        启动后的结果为


        可以看到各个节点的创建和连接,槽的分配,主从节点的创建都已成功,最后yes就可以了


        可以看到集群已经搭建成功了

        注意:要关闭防火墙

使用

    先连接集群,任意节点都行

            redis-01/redis-cli -p 7004 -c         -p是指定端口号    -c是说明连接的是集群

       数据测试


      可以看到每次添加数据它都能均匀的分配到每个主节点,数据测试也没问题,接下来可以尽情使用了

猜你喜欢

转载自blog.csdn.net/programlight/article/details/79553009