zoukankan      html  css  js  c++  java
  • Redis--redis集群环境搭建

    1.redis-cluster架构图

    Redis 自3.0以后开始支持集群。从上图我们可以看出,redis集群的每个节点之间都进行相互通信,在redis集群中,不存在代理层,即没有固定的入口。redis集群的每个节点都可以作为入口。
    注意:
    1.每个节点的存储数据不一样。
    2.所有的redis节点彼此互联(PING-PONG机制),内部使用二进制协议优化传输速度和带宽.
    节点的fail是通过集群中超过半数的节点检测失效时才生效.
    3.客户端与redis节点直连,不需要中间proxy层.客户端不需要连接集群所有节点,连接集群中任何一个可用节点即可
    4.redis-cluster把所有的物理节点映射到[0-16383]slot上,cluster 负责维护node<->slot<->value

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

    2.Rdis集群搭建
    由于redis中存在半数投票机制,所以一般集群节点为的数量为奇数台。所以搭建一个redis集群最少需要三台服务器。
    为了保证高可用,每台redis又要对应一台备份服务器。所以redis集群总共需要6台服务器。

    在线下,我们可以在一台虚拟机上开启六个redis实例,每个实例配置不同的接口,来搭建一个伪静态化,具体步骤如下:
    1.首先准备6个redis的实例:
    (1)先在usr/local 下新建一个redis_cluster目录
    进入我们之前安装redis的目录:

    (2)将redis目录下的bin目录复制到新建的redis_cluster中。并取名为redis01
    cp redis/bin/ redis_cluster/redis01 -r

    (3)删除redis01/bin目录下dump.rdb文件,这个文件时rdb持久化方案的备份文件。若结点中有数据,集群无法搭建。
    (4)修改redis.conf文件,设置端口号。
    将默认的6379修改为7001。

     (5)将redis01复制5份,分配配置不同端口号,并将redis.conf配置文件的中的cluster-enabled yes的注解放开。

    2.启动所有redis实例
    在redis_cluster目录下新建一个startall.sh文件、

    将下面的内容复制到该文件中,startall文件作为一个批处理,启动该文件时可以启动所有的redis实例。
    cd redis01
    ./redis-server redis.conf
    cd ..
    cd redis02
    ./redis-server redis.conf
    cd ..
    cd redis03
    ./redis-server redis.conf
    cd ..
    cd redis04
    ./redis-server redis.conf
    cd ..
    cd redis05
    ./redis-server redis.conf
    cd ..
    cd redis06
    ./redis-server redis.conf
    cd ..
    注意:startall.sh文件创建后并不是可执行的,需要修改一下权限:命令为:chmod u+x startall.sh、

    下面可以使用./startall.sh命令执行该文件。
    通过查看进程,我们可以看到6个redis实例均已启动。

    3.创建集群
    集群创建需要用到ruby,所以需要安装ruby的环境。
    yum install ruby
    yum install rubygems (ruby包管理器)
    安装 redis-3.0.0.gem包(这个包可以从网上下载后传到服务器上)
    安装号环境之后,我们进入到redis源码包的src目录下
    找到一个redis-trib.rb文件。

    将此脚本复制到/usr/local/redis_cluster目录下

    ./redis-trib.rb create --replicas  节点1地址:端口号  节点2地址:端口号 节点3地址:端口号。。。。。。。。。。。。。。。

    输入yes,集群创建成功。

  • 相关阅读:
    sed 使用总结
    rgmanager 介绍
    linux nbd & qemu-nbd
    corosync基本使用
    svn 基本使用
    tornado 实践
    mysql mac启动
    postgresql
    django
    django
  • 原文地址:https://www.cnblogs.com/red-evil/p/10062676.html
Copyright © 2011-2022 走看看