Redis 集群搭建与主从节点配置
CentOS7 中 Redis 集群搭建与主从节点配置指南
本文将详细介绍如何在 CentOS7 系统上搭建 Redis 集群,并手动配置主从节点关系,确保集群的高可用性和数据冗余。
一、环境准备
1. 系统与软件版本
操作系统:CentOS7-2009
Redis 版本:redis-5.0.13
2. 主机规划
我们将在三台主机上部署 Redis 集群,每台主机运行三个 Redis 实例,端口分别为 7000、7001、7002。
3. 下载并安装 Redis
首先,从 Redis 官方网站 下载 redis-5.0.13.tar.gz 压缩包。
将下载好的压缩包上传到每一台 Linux 服务器上的 /usr/local/ 目录。
二、Redis 集群配置
1. 编译安装 Redis
在每台服务器上执行以下命令:
# 进入上传目录
cd /usr/local/
# 解压安装包
tar -zxvf redis-5.0.13.tar.gz
# 重命名目录
mv redis-5.0.13 redis
# 进入 redis 目录
cd redis/
# 编译 Redis (CentOS7 自带 gcc,无需额外安装)
make
# 安装 Redis
make install
注意:如果编译或安装过程中出现错误,请确保系统已安装 gcc 和 make 工具。
2. 配置 Redis 集群实例
1)创建集群目录与实例
# 创建集群目录
mkdir -p /usr/local/redis/cluster
# 进入集群目录
cd /usr/local/redis/cluster/
# 创建实例目录
mkdir 7000 7001 7002
# 将 redis.conf 复制到每个实例目录
cp /usr/local/redis/redis.conf 7000/
cp /usr/local/redis/redis.conf 7001/
cp /usr/local/redis/redis.conf 7002/
2)修改配置文件
以 7000 实例为例,编辑 7000/redis.conf,需修改以下配置:
注释绑定 IP(第 69 行)
# bind 127.0.0.1关闭保护模式(第 88 行)
protected-mode no修改端口号(第 92 行)
port 7000后台启动(第 137 行)
daemonize yes指定 PID 文件(第 155 行)
pidfile /var/run/redis_7000.pid指定持久化文件名(第 257 行)
dbfilename dump_7000.rdb指定持久化目录(第 264 行)
dir /usr/local/redis/cluster/7000内存优化策略(第 700 行)
maxmemory-policy noeviction关闭 AOF 持久化(第 704 行)
appendonly no开启集群模式(第 832 行)
cluster-enabled yes指定集群配置文件(第 840 行)
cluster-config-file nodes_7000.conf修改集群超时时间(第 847 行)
cluster-node-timeout 15000
3)复制配置文件
修改完成 7000/redis.conf 后,将其复制到 7001 和 7002 目录,并修改其中的端口号和文件名:
# 复制配置文件
cp 7000/redis.conf 7001/
cp 7000/redis.conf 7002/
# 修改 7001/redis.conf 中的端口和文件名为 7001
vim 7001/redis.conf
# 修改 7002/redis.conf 中的端口和文件名为 7002
vim 7002/redis.conf
4)将配置复制到其他主机
在第一台主机上配置完成后,可将集群目录复制到其他主机:
# 复制到第二台主机
scp -r /usr/local/redis/cluster root@192.168.64.71:/usr/local/redis/
# 复制到第三台主机
scp -r /usr/local/redis/cluster root@192.168.64.72:/usr/local/redis/
3. 启动 Redis 实例
1)创建启动与关闭脚本
在每台主机的 /usr/local/redis/cluster/ 目录下创建 start.sh 和 shutdown.sh 脚本。
#!/bin/bash redis-server 7000/redis.conf & redis-server 7001/redis.conf & redis-server 7002/redis.conf &#!/bin/bash redis-cli -p 7000 shutdown redis-cli -p 7001 shutdown redis-cli -p 7002 shutdown
2)赋予执行权限并运行脚本
# 赋予执行权限
chmod +x start.sh shutdown.sh
# 启动 Redis 实例
./start.sh
# 验证 Redis 实例是否启动
ps -ef | grep redis
3)将启动脚本复制到其他主机
# 复制启动脚本到第二台主机
scp start.sh shutdown.sh root@192.168.64.71:/usr/local/redis/cluster/
# 复制启动脚本到第三台主机
scp start.sh shutdown.sh root@192.168.64.72:/usr/local/redis/cluster/
在其他主机上同样赋予执行权限并运行 ./start.sh。
三、配置 Redis 集群主从节点
1. 集群节点规划
为了提高集群的高可用性,即使任意一台主机宕机,集群仍能正常工作,我们规划主从节点分布如下:
主节点
从节点
2. 创建集群并指定主从关系
1)创建只有主节点的集群
首先,在任意一台主机上执行以下命令,创建只有主节点的集群:
redis-cli --cluster create --cluster-replicas 0 \\\\
192.168.64.70:7000 \\\\
192.168.64.71:7000 \\\\
192.168.64.72:7000
根据提示输入 yes 确认创建。
2)查询主节点的 ID
执行以下命令,获取主节点的 ID,用于后续指定从节点的主节点:
# 连接到任意主节点
redis-cli -h 192.168.64.70 -p 7000
# 查询集群节点信息
cluster nodes
示例输出:
8e45923f9c05948ca54cb0c70724a62805fd4585 192.168.64.70:7000@17000 master - 0 0 1 connected 0-5460
eee597ad3a6a4c9b6d360be4dc4e9c98460d6f4f 192.168.64.71:7000@17000 master - 0 0 2 connected 5461-10922
c1817049021a287cd56a058b75c8e754a7c4d449 192.168.64.72:7000@17000 master - 0 0 3 connected 10923-16383
3)为每个主节点添加从节点
根据规划,使用以下命令为每个主节点添加从节点:
为
master1 (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为
master2 (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为
master3 (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
注意:--cluster-master-id 后面的 ID 需要替换为实际查询到的主节点 ID。
4)验证集群状态
执行以下命令,查看集群信息:
redis-cli -h 192.168.64.70 -p 7000
cluster info
输出应包含:
cluster_state: ok
表示集群已正常运行。
四、测试集群功能
1. 设置和获取键值
redis-cli -c -h 192.168.64.70 -p 7000
SET key1 "Redis cluster test"
GET key1
2. 模拟主节点宕机
停止一个主节点,验证集群是否自动将对应的从节点提升为主节点。
# 在主机 192.168.64.70 上停止 7000 实例
redis-cli -p 7000 shutdown
# 再次查询集群状态
redis-cli -h 192.168.64.71 -p 7000
cluster nodes
应看到原来的从节点已提升为主节点。
五、总结
通过以上步骤,我们成功在 CentOS7 系统上搭建了一个包含 9 个节点的 Redis 集群,并手动指定了主从节点关系。这样,当任意一台主机宕机时,集群仍能保证数据的可用性和一致性。
参考资料
备注:在实际生产环境中,建议对服务器和网络环境进行冗余和高可用配置,以提高系统的可靠性。