linux系统安装配置Redis集群

编辑
  • 文档创建者:DoraZhang
  • 浏览次数:1266次
  • 编辑次数:17次
  • 最近更新:Vic.zhang 于 2019-10-26
  • 0. 前言

    基础方案中已经提供了 Linux 系统安装配置单机 Redis 的方案,此方案部署和运维较为简单,且能实现集群的基础可用。为了达到 web 集群极致高可用的目标,本文将提供 Redis 集群的部署和配置方案。本文将以两台服务器为例,介绍部署一个包含3个主节点、3个从节点的 Redis 集群的方法,需要部署更多节点的 Redis 集群可以基于此方案类推。

    redis有三种集群方式:主从复制,哨兵模式和Redis-Cluster集群,推荐使用Redis-Cluster集群(即主从模式),不支持主从复制,哨兵模式。

    1. Redis 集群原理

    1)Redis 集群结构是:N个平权主节点(master),每个主节点对应M个从节点(slave)。

    2)Redis 集群通过哈希槽((hash slot)来分配数据,哈希槽的编号为 0-16383。集群把这个16384 分配给这N个主节点,当存取的 key 值到达时,通过 CRC16(key) % 16384 取余找到对应插槽,并跳转到对应节点上进行存取操作。

    3)Redis 集群投票机制:服务器之间通过互相的 ping-pong 判断是否节点可以连接上。如果有一半以上的节点去 ping 一个节点的时候没有回应,集群就认为这个节点宕机了。此时该主节点对应的从节点上升为主节点。当没有从节点可替补时,集群宕机。

    因为投票机制,N须为奇数。

    必须要3个或以上的主节点,否则在创建集群时会失败,并且当存活的主节点数小于总节点数的一半时,整个集群就无法提供服务了。

    部署redis集群至少需要3台服务器,参考 环境准备,准备3台 Linux 服务器,每台服务器上部署2个节点,3台服务器运行6个 Redis 实例,组成一个经典的“三主三从”的 Redis 集群。


    端口
    服务器17001、7002
    服务器27003、7004
    服务器3

    7005、7006

    附:Redis 集群规划部署注意事项

    3. 服务器上创建两个 Redis 节点

    3.1 编译环境

    安装 Redis 时,需要对源码包进行编译,此步骤依赖 gcc 编译器,Linux 系统一般都自带的有 gcc 编译器,如果没有 gcc 环境,需要自行安装。

    gcc -v #检查是否有 gcc 编译器

    3.2 下载源码包

    要求使用5.0.0以上版本 redis,部署和启动redis集群时无须依赖 ruby。

    1)下载:redis-5.0.4.tar.gz:  下载地址  提取码:edcl

    2)官网下载:http://download.redis.io/releases/

    3.3  安装 Redis

    mkdir /usr/redis #创建Redis目录
    cd /usr/redis #进入目录
    #将redis-5.0.4.tar.gz传输到该目录下#
    tar zxvf redis-5.0.4.tar.gz #解压安装包
    cd /usr/redis/redis-5.0.4 #进入解压目录
    make && make install #安装命令

    安装成功后可以看到:

    企业微信截图_15668925744219.png

    3.4 创建节点

    mkdir /usr/redis/redis-cluster #创建集群目录redis-cluster
    cd /usr/redis/redis-cluster #进入redis-cluster目录
    mkdir 7001 7002 #创建两个redis节点的目录

    下载配置文件:redis.conf:下载地址  提取码:fkda ,手动放入放置到 7001 和 7002 两个文件夹。

    本文提供的配置文件相比默认的 redis.conf 修改内容如下:

    #bind 127.0.0.1 #取消仅限本地访问的限制
    daemonize yes #设置redis默认后台运行
    protected-mode no #关闭保护模式
    maxmemory 2147483648 #最大内存2G
    maxmemory-policy volatile-lru #过期清理策略
    pidfile /var/run/redis_7001.pid #pidfile文件对应7001
    port 7001 #端口7001
    requirepass admin23456 #redis登陆密码,默认admin123456
    masterauth admin23456 #redis认证密码,默认admin123456
    cluster-enabled yes #开启集群 
    cluster-config-file nodes-7001.conf #集群的配置,配置文件首次启动自动生成7001

    3.5 修改配置

    7001 文件夹的 redis.conf 无须再修改,7002 文件夹的 redis.conf 需将配置里的 7001 替换为 7002,操作如下

    cd /usr/redis/redis-cluster/7002/ #进入7002目录
    vi redis.conf #编辑redis.conf文件
    :%s/7001/7002/g  # 将7002的conf文件中所有7001替换为7002,一共三处
    :wq # 保存配置

    3.6 启动节点

    cd /usr/redis/redis-5.0.4/src/ #进入启动目录
    ./redis-server /usr/redis/redis-cluster/7001/redis.conf  #指定7001的配置文件,启动该节点
    ./redis-server /usr/redis/redis-cluster/7002/redis.conf  #指定7002的配置文件,启动该节点

    企业微信截图_15668933937373.png

    在启动7001 和 7002 节点后,redis 节点之间会用到17001 和 17002 端口供集群选举通信使用(CLUSTER MEET),即使用端口的大小加上 10000(端口是XXXX,那么通信端口是1XXXX),若节点间服务器有防火墙,需要对这些端口进行开放。

    4. 创建其他四个节点

    在另外两台服务器上重复操作 3.1-3.6 的步骤,创建 7003、7004 和 7005、7006 节点并启动。

    若要创建更多节点,同理重复操作 3.1-3.6 的步骤。

    5. 创建Redis集群

    节点创建完毕后,各个节点实际上是独立的,并没有组成一个集群,还需要下面的操作。

    cd /usr/redis/redis-5.0.4/src/ #进入任一节点的启动目录
    ./redis-cli --cluster create 192.168.61.250:7001 192.168.61.250:7002 192.168.61.250:7003 192.168.61.250:7004 192.168.61.250:7005 192.168.61.250:7006 --cluster-replicas 1 -a admin123456 #创建集群的命令,命令最后的admin123456是设置的认证密码,-replicas 1的
    意思是每台redis服务器有一个备份机,执行完此命令后,该脚本会自动为这6个redis实例分配主从和槽。

    当程序提示: Can I set the above configuration? (type 'yes' to accept) 时,键入 yes 回车:

    企业微信截图_15668937879265.png

    至此集群搭建完成!

    企业微信截图_15668938623491.png

    6. 运维知识

    cd /usr/redis/redis-5.0.4/src/ #进入启动目录
    ./redis-server /usr/redis/redis-cluster/7001/redis.conf  #指定7001的配置文件,启动该节点,其他节点启动方式同理
    redis-cli -h ip -p 端口 -a 密码 #客户端远程连接某个节点,要输入对应的ip、端口、密码
    192.168.1.124:7001> cluster nodes  #进入任意一个节点,查询集群主从分布及健康状态

    1572085280363499.png


    更多运维操作,详情见:Linux 系统 Redis 运维手册

    附:Redis 集群搭建官方指导—https://redis.io/topics/cluster-tutorial

    附件列表


    主题: 部署集成
    标签: 暂无标签
    如果您认为本文档还有待完善,请编辑

    文档内容仅供参考,如果你需要获取更多帮助,付费/准付费客户请咨询帆软技术支持
    关于技术问题,您还可以前往帆软社区,点击顶部搜索框旁边的提问按钮
    若您还有其他非技术类问题,可以联系帆软传说哥(qq:1745114201

    此页面有帮助吗?只是浏览 [ 去社区提问 ]