历史版本1 :Linux系统安装配置Redis集群 返回文档
编辑时间: 内容长度:图片数:目录数: 修改原因:

目录:

0. 前言编辑

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

1. Redis集群原理编辑

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

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

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

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

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

2. Redis集群方案编辑

部署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

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

3.2  安装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 #安装命令

安装成功后可以看到:


3.3 创建节点

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

下载配置文件:redis.conf,手动放入放置到7001和7002两个文件夹。

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

#bind 127.0.0.1 #取消仅限本地访问的限制
daemonize yes #设置redis默认后台运行
protected-mode no #关闭保护模式
maxmemory 2097152 #最大内存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.4 修改配置

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

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

3.5 启动节点

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的配置文件,启动该节点

4. 创建其他四个节点编辑

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

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

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

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

至此集群搭建完成!

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、端口、密码

更多运维知识:集群运维手册-Linux版

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