高可用集群模式

  • redis 集群时一个由多个主从节点群组组成的分布式服务器群,它具有复制、高可用和分片特性
  • 该集群模式没有中心节点,可水平扩展,并且性能和高可用性都优于哨兵模式
  • redis 3.2之后采用该模式

安装

官方下载地址:点击
  1. 安装编译环境

    1
    yum install gcc -y
  2. 下载安装包,并复制到/usr/local/目录下

    1
    2
    3
    4
    5
    wget -p /usr/local/ http://download.redis.io/releases/redis-5.0.8.tar.gz  #下载
    cd /usr/local #切换至下载文件所在目录
    tar -zxvf redis-5.0.8.tar.gz #解压
    mv redis-5.0.8 redis
    cd redis #进入redis目录
  3. 编译安装

    1
    make & make install #编译并安装
  4. 单机启动测试

    1
    2
    3
    4
    5
    6
    7
    src/redis-server redis.conf #启动
    # 新启动一个窗口
    src/redis-cli #连接redis
    set name testName
    > ok
    get name
    > testName
  5. 结束redis服务

    1
    2
    3
    4
    5
    pkill redis-server

    kill -9 进程号

    src/redis-cli shutdown
集群方式搭建
  • redis 集群至少需要三个 master 节点,并且每个 master 节点需要至少一个 slave 节点,所以至少需要六个节点
  • 以下方式是在一台服务器上搭建集群,也就是伪集群,实际环境大同小异
  1. 创建六个节点需要的目录,用于存放数据和配置文件

    1
    mkdir -p /usr/local/redis-cluster/{8001|8002|8003|8004|8005|8006}
  2. 将 redis 主目录中的配置文件复制到 8001 目录下,并开始集群配置

    1
    2
    3
    cp /usr/local/redis/redis.conf /usr/local/redis-cluster/8001
    cd /usr/local/redis-cluster/8001
    vim redis.conf
    • daemonize yes 允许后台运行
    • port 8001 端口号,分别对应所在的目录
    • dir /usr/local/redis-cluster/8001 指定数据文件的存储位置,这里需要根据配置文件所在文字不同而不同
    • cluster-enabled yes 开启集群模式
    • cluster-config-file nodes-8001.conf 集群节点信息,800x部分最好于端口名相同,以便区分
    • cluster-node-timeout 5000 节点心跳超时时间 以毫秒为单位
    • # bind 127.0.0.1 注释掉IP绑定,这样所有的网卡都可以接收数据
    • protected-mode no 关闭保护模式
    • appendonly yes

    如果要设置密码需要增加以下配置

    • requirepass xxx 设置 redis 访问密码
    • masterauth xxx 设置集群节点间访问密码,建议与上面一致
  3. 将修改好的 redis.conf 文件复制到 8002-8006 目录中,并修改包含8001的位置

    1
    2
    3
    4
    cp /usr/local/redis-cluster/8001/redis.conf /usr/local/redis-cluster/8002/ #复制配置文件
    .......
    vim /usr/local/redis-cluster/8002/redis.conf #打开 8002-8006 目录下的配置文件
    :%s/8001/8002/g #使用vim的替换功能将 8001 替换成 8002-8006 成功会显示替换的地方有三处
  4. 启动所有的实例,并检查是否启动成功

    1
    2
    3
    4
    5
    /usr/local/redis/src/redis-server /usr/local/redis-cluster/8001/redis.conf
    /usr/local/redis/src/redis-server /usr/local/redis-cluster/8002/redis.conf
    ......

    ps -ef | grep redis

    img

  5. 使用 redis-cli 创建 redis 集群

    1
    /usr/local/redis/src/redis-cli -a xxx --cluster create --cluster-replicas 1 192.168.1.5:8001 192.168.1.5:8002 192.168.1.5:8003 192.168.1.5:8004 192.168.1.5:8005 192.168.1.5:8005
    • -a 参数是指上面配置的集群密码
    • --cluster create 表示创建集群
    • --cluster-replicas 表示每个 master 需要多少个 slave
    • 192.168.1.5 这里的IP地址最好指定对外可访问的地址,以便远程连接可自动切换
  6. 验证集群

    1
    /usr/local/redis/src/redis-cli -c -a xxx -h 192.168.1.5 -p 8001
    • -a 表示访问密码
    • -c 表示访问方式为集群
    1
    2
    cluster info #查看集群信息
    cluster nodes #查看节点列表和状态
  7. 关闭集群,关闭时需要一个一个的关闭

    1
    /usr/local/redis/src/redis-cli -c -a xxx -h 192.168.1.5 -p 8001 shutdown