1. 环境准备

Linux系统:CentOS7-2009

三台主机

192.168.64.70	端口7000-7002
192.168.64.71	端口7000-7002
192.168.64.72	端口7000-7002

redis:redis-5.0.13

redis下载地址:http://download.redis.io/releases/

redis集群至少需要几台服务器 redis多台服务器集群_java


下载好后上传至每一台Linux服务器,作者是放在 /usr/local/ 这个路径

2. redis集群准备配置

上传好redis压缩包后就可以开始搭建了,执行以下操作

# 进入redis上传目录
cd /usr/local/	
# 解压安装包
tar -zxvf redis-5.0.13.tar.gz
# 重命名redis目录
mv redis-5.0.13 redis
# 进入redis目录
cd redis/
# 编译(这里需要安装gcc,由于CentOs7自带gcc,因此可以直接编译)
make
# 安装(同样需要安装gcc,由于CentOs7自带gcc,因此可以直接编译)
make install

编译成功界面如下:

redis集群至少需要几台服务器 redis多台服务器集群_redis集群至少需要几台服务器_02


安装成功界面如下:

redis集群至少需要几台服务器 redis多台服务器集群_java_03


如果没有出现以上界面说明编译安装失败,需要检查一下gcc

接下执行一下命令

# 创建cluster目录
mkdir cluster
# 进入cluster目录
cd cluster/
# 创建7000,7001,7002目录
mkdir 7000 7001 7002
# 返回上一级目录
cd ../
# 分别把该目录下的redis.conf配置文件复制到7000-7002目录下
cp redis.conf cluster/7000
cp redis.conf cluster/7001
cp redis.conf cluster/7002

编辑配置文件redis.conf

  1. 注释本地绑定IP地址
  2. 关闭保护模式

redis集群至少需要几台服务器 redis多台服务器集群_redis集群至少需要几台服务器_04

  1. 修改端口号
  2. redis集群至少需要几台服务器 redis多台服务器集群_redis集群_05

  3. 启动后台启动

redis集群至少需要几台服务器 redis多台服务器集群_redis集群至少需要几台服务器_06

  1. 修改pid文件

redis集群至少需要几台服务器 redis多台服务器集群_redis集群至少需要几台服务器_07

  1. 修改持久化文件路径

redis集群至少需要几台服务器 redis多台服务器集群_java-ee_08

  1. 设定内存优化策略

redis集群至少需要几台服务器 redis多台服务器集群_redis_09

  1. 关闭AOF模式

redis集群至少需要几台服务器 redis多台服务器集群_java_10

  1. 开启集群配置

redis集群至少需要几台服务器 redis多台服务器集群_java_11

  1. 开启集群配置文件

redis集群至少需要几台服务器 redis多台服务器集群_redis集群至少需要几台服务器_12

  1. 修改集群超时时间

redis集群至少需要几台服务器 redis多台服务器集群_redis集群_13


编辑好一个配置文件后直接把该文件复制到其他文件夹

cd /usr/local/redis
cp cluster/7000/redis.conf cluster/7001
cp cluster/7000/redis.conf cluster/7002

并且把上述配置含有7000部分分别改为7001和7002

这样一台机器的redis集群环境准备完毕,由于另外机器配置一样。所以只需把第一台机器已配置好的配置文件复制过去
复制命令如下

# 复制192.168.64.70机器的配置文件到192.168.64.71,192.168.64.72机器
scp -r /usr/local/redis/cluster root@192.168.64.71:/usr/local/redis
# -r递归复制目录 复制的时候会弹出输入密码,输入即可
scp -r /usr/local/redis/cluster root@192.168.64.72:/usr/local/redis

复制结果如下:

redis集群至少需要几台服务器 redis多台服务器集群_java_14


启动redis集群:

  1. 在redis集群安装目录下创建启动脚本 ,命令如下
# 进入redis集群安装目录
cd /usr/local/redis/cluster/
# 创建启动脚本  
vim start.sh
# 添加以下命令后保存
#!/bin/sh
redis-server 7000/redis.conf &
redis-server 7001/redis.conf &
redis-server 7002/redis.conf &

redis集群至少需要几台服务器 redis多台服务器集群_redis_15

  1. 再创建关闭脚本
# 创建关闭脚本
vim shutdown.sh
# 添加以下命令后保存
#!/bin/sh
redis-cli -p 7000 shutdown &
redis-cli -p 7001 shutdown &
redis-cli -p 7002 shutdown &

redis集群至少需要几台服务器 redis多台服务器集群_redis集群_16


3. 启动redis集群

# 启动脚本
sh start.sh
# 查看运行状态
ps -ef |grep redis

redis集群至少需要几台服务器 redis多台服务器集群_redis集群_17


同样地我们编辑好一台机,直接把脚本复制到其他两台机

scp /usr/local/redis/cluster/start.sh root@192.168.64.71:/usr/local/redis/cluster
scp /usr/local/redis/cluster/start.sh root@192.168.64.72:/usr/local/redis/cluster

scp /usr/local/redis/cluster/shutdown.sh root@192.168.64.71:/usr/local/redis/cluster
scp /usr/local/redis/cluster/shutdown.sh root@192.168.64.72:/usr/local/redis/cluster



3. redis配置集群主从节点

上面配置好后此时就可以开始配置主从节点了
网上资料常有一下命令创建集群

redis-cli --cluster create --cluster-replicas 1 192.168.64.70:7000 192.168.64.71:7000 192.168.64.72:7000 192.168.64.70:7001 192.168.64.71:7001 192.168.64.72:7001 192.168.64.70:7002 192.168.64.71:7002 192.168.64.72:7002

此命令通用格式如下:

redis-cli --cluster create --cluster-replicas 每个主节点的从节点数量 机器ip+端口号(多台机器用逗号隔开)

这样系统就根据机器数量随机分配主节点,尽可能使每个主节点的从节点数量达到输入命令的数量

但是如果我们要手动输入命令指定主从关系了。
如何指定,按照redis集群主从节点分片运行原理,一个主节点宕机则整个分片崩溃,但是集群模式下剩余节点可以通过选举将该节点的一个从节点升为主节点;而我们有三台机器,为了保证某一台机器宕机集群还能用主从节点分配思路如下:

master1						slave1_1				slave1_2
192.168.64.70:7000 			192.168.64.71:7001		192.168.64.72:7002
master2						slave2_1				slave2_2
192.168.64.71:7000 			192.168.64.72:7001		192.168.64.70:7002
master3						slave3_1				slave3_2
192.168.64.72:7000 			192.168.64.70:7001		192.168.64.71:7002

执行指定命令思路如下

  1. 先创建具有三个主节点的集群,没有从节点
  2. 使用添加节点的命令添加从节点,这样就可以在添加时指定它们的主节点,建立主从对应关系

具体命令如下

  • 使用以下命令创建主节点:
redis-cli --cluster create --cluster-replicas 0 192.168.64.70:7000 192.168.64.71:7000 192.168.64.72:7000
  • 增加从节点:
redis-cli --cluster add-node 192.168.64.71:7001 192.168.64.70:7000 --cluster-slave --cluster-master-id *******

其中:

  • slave 表示要添加从节点
  • cluster-master-id 要添加到哪一个主节点,id是*****
  • 192.168.64.71:7001 要添加的从节点
  • 192.168.64.70:7000 原集群中任意节点

cluster-master-id可以通过一下命令查看:

# 进入任意一个redis节点
redis-cli -p 7000
# 查看集群信息
cluster nodes

redis集群至少需要几台服务器 redis多台服务器集群_java-ee_18


所以,最终创建主从节点完整命令如下(注意以下命令cluster-master-id是我的机器,要根据上面查询cluster-master-id命令查询你们机器的实际cluster-master-id):

# 创建具有三个主节点的集群,没有从节点
redis-cli --cluster create --cluster-replicas 0 192.168.64.70:7000 192.168.64.71:7000 192.168.64.72:7000 

# 给主节点192.168.64.70:7000增加从节点
redis-cli --cluster add-node 192.168.64.71:7001 192.168.64.70:7000 --cluster-slave --cluster-master-id 8e45923f9c05948ca54cb0c70724a62805fd4585
redis-cli --cluster add-node 192.168.64.72:7002 192.168.64.70:7000 --cluster-slave --cluster-master-id 8e45923f9c05948ca54cb0c70724a62805fd4585

# 给主节点192.168.64.71:7000增加从节点
redis-cli --cluster add-node 192.168.64.72:7001 192.168.64.71:7000 --cluster-slave --cluster-master-id eee597ad3a6a4c9b6d360be4dc4e9c98460d6f4f
redis-cli --cluster add-node 192.168.64.70:7002 192.168.64.71:7000 --cluster-slave --cluster-master-id eee597ad3a6a4c9b6d360be4dc4e9c98460d6f4f

# 给主节点192.168.64.72:7000增加从节点
redis-cli --cluster add-node 192.168.64.70:7001 192.168.64.72:7000 --cluster-slave --cluster-master-id c1817049021a287cd56a058b75c8e754a7c4d449
redis-cli --cluster add-node 192.168.64.71:7002 192.168.64.72:7000 --cluster-slave --cluster-master-id c1817049021a287cd56a058b75c8e754a7c4d449