CentOS7下Redis7.0集群搭建(极简版)

为什么搞 redis 集群?解决单点故障。

一、环境准备

CentOS-7-基础配置

主机名 ip地址 端口 角色 系统
node1 192.168.10.101 7001、7002 master、slave centos7
node2 192.168.10.102 7001、7002 master、slave centos7
node3 192.168.10.103 7001、7002 master、slave centos7

每个 node70017002 分别安装一个 redis 实例。

安装依赖环境

1
yum install gcc make -y

配置本地 hosts 解析

1
2
3
4
5
cat >> /etc/hosts <<EOF
192.168.10.101 node1
192.168.10.102 node2
192.168.10.103 node3
EOF

生产环境内核调优

1
2
3
4
5
# 临时生效
sysctl vm.overcommit_memory=1

# 永久生效
echo "vm.overcommit_memory = 1" >> /etc/sysctl.conf

二、编译安装

一台机器编译,之后将二进制文件复制到目标机器。

  1. 下载,以 7.4.7 版本为例。
    官方地址地址
1
wget https://download.redis.io/releases/redis-7.4.7.tar.gz
  1. 解压
1
tar xf redis-7.4.7.tar.gz -C /usr/local
  1. 编译,记得先安装 gcc
1
2
cd /usr/local/redis-7.4.7
make

清理缓存重新编译(因缺失 gcc 编译安装失败的话)

1
make distclean && make
  1. 复制二进制文件到指定目录下
1
2
cp /usr/local/redis-7.4.7/src/redis-server /usr/local/bin/
cp /usr/local/redis-7.4.7/src/redis-cli /usr/local/bin/
  1. 创建配置文件
1
2
3
4
5
6
7
8
9
10
11
12
13
mkdir -pv /data/redis/{7001,7002}
cat > /data/redis/7001/redis.conf <<EOF
port 7001
bind 0.0.0.0
protected-mode no
daemonize yes
pidfile /var/run/redis_7001.pid
dir /data/redis/7001
appendonly yes
cluster-enabled yes
cluster-config-file nodes-7001.conf
cluster-node-timeout 5000
EOF
1
2
cp /data/redis/7001/redis.conf /data/redis/7002/redis.conf
sed -i 's/7001/7002/g' /data/redis/7002/redis.conf
  1. 复制到别的机器
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# 在 Node1 上执行:

# 1. 把配置拷过去
ssh node2 "mkdir -p /data/redis/{7001,7002}"
ssh node3 "mkdir -p /data/redis/{7001,7002}"
scp -r /data/redis/7001/* node2:/data/redis/7001/
scp -r /data/redis/7002/* node2:/data/redis/7002/
scp -r /data/redis/7001/* node3:/data/redis/7001/
scp -r /data/redis/7002/* node3:/data/redis/7002/

# 2. 【关键】把编译好的命令也拷过去!(省去另外两台编译的时间)
scp /usr/local/redis-7.4.7/src/redis-server node2:/usr/local/bin/
scp /usr/local/redis-7.4.7/src/redis-cli node2:/usr/local/bin/
scp /usr/local/redis-7.4.7/src/redis-server node3:/usr/local/bin/
scp /usr/local/redis-7.4.7/src/redis-cli node3:/usr/local/bin/

# 给 node1 自己也拷一份到 path 方便用
cp /usr/local/redis-7.4.7/src/redis-server /usr/local/bin/
cp /usr/local/redis-7.4.7/src/redis-cli /usr/local/bin/

三、启动及集群使用

  1. 启动
1
2
3
4
5
6
7
8
9
10
11
# Node1 启动
redis-server /data/redis/7001/redis.conf
redis-server /data/redis/7002/redis.conf

# Node2 启动 (ssh 远程启动)
ssh node2 "redis-server /data/redis/7001/redis.conf"
ssh node2 "redis-server /data/redis/7002/redis.conf"

# Node3 启动
ssh node3 "redis-server /data/redis/7001/redis.conf"
ssh node3 "redis-server /data/redis/7002/redis.conf"
  1. 初始化
1
2
3
4
5
6
# 注意:IP 请换成你实际的 IP,确保 node3 是 103
redis-cli --cluster create \
192.168.10.101:7001 192.168.10.101:7002 \
192.168.10.102:7001 192.168.10.102:7002 \
192.168.10.103:7001 192.168.10.103:7002 \
--cluster-replicas 1

输入 yes 即可自动设置。

  1. 查看集群
1
redis-cli -c -p 7001 cluster nodes
  1. 验证集群的高可用
  • kill 掉任意一个 master
1
ps -ef | grep 7001
1
kill <master的PID>
  • 等待几秒,重新查看集群状态
1
redis-cli -c -p 7002 cluster nodes