以下是在单台服务器上部署 Redis 集群的详细指南(基于 Redis 7.x 版本)。该集群将包含 3 个主节点和 3 个从节点,使用不同端口模拟多节点环境。
1. 环境准备
# 系统更新
sudo apt update && sudo apt upgrade -y
# 安装依赖
sudo apt install -y build-essential tcl
# 创建专用用户(可选但建议)
sudo adduser --disabled-password --gecos "" redisuser
2. 安装 Redis
# 下载最新稳定版(请访问 https://redis.io/download 获取最新版本号)
wget https://download.redis.io/releases/redis-7.2.4.tar.gz
tar xzf redis-7.2.4.tar.gz
cd redis-7.2.4
# 编译安装
make -j$(nproc) && sudo make install
# 验证安装
redis-server --version
3. 配置集群节点
# 创建集群目录结构
CLUSTER_DIR="/opt/redis-cluster"
sudo mkdir -p ${CLUSTER_DIR}/{7000,7001,7002,7003,7004,7005}
sudo chown -R redisuser:redisuser ${CLUSTER_DIR}
创建节点配置文件(以 7000 端口为例)
cat << EOF | sudo tee ${CLUSTER_DIR}/7000/redis.conf
port 7000
cluster-enabled yes
cluster-config-file nodes-7000.conf
cluster-node-timeout 5000
appendonly yes
daemonize no
pidfile /var/run/redis_7000.pid
logfile "${CLUSTER_DIR}/7000/redis.log"
dir ${CLUSTER_DIR}/7000/
bind 0.0.0.0
masterauth your_secure_password # 如果启用认证
requirepass your_secure_password # 主密码
EOF
重复上述步骤,为 7001-7005 端口创建配置文件,注意修改所有 7000
为对应端口号。
4. 启动 Redis 实例
# 创建 systemd 服务文件(以 7000 为例)
cat << EOF | sudo tee /etc/systemd/system/redis-cluster@.service
[Unit]
Description=Redis Cluster Node %i
After=network.target
[Service]
User=redisuser
Group=redisuser
ExecStart=/usr/local/bin/redis-server ${CLUSTER_DIR}/%i/redis.conf
Restart=always
WorkingDirectory=${CLUSTER_DIR}/%i
[Install]
WantedBy=multi-user.target
EOF
# 启动所有节点
for port in {7000..7005}; do
sudo systemctl enable redis-cluster@${port}
sudo systemctl start redis-cluster@${port}
done
# 检查运行状态
sudo systemctl status redis-cluster@*
5. 创建 Redis 集群
# 使用 redis-cli 创建集群(注意替换 IP 为内网IP)
redis-cli --cluster create \
127.0.0.1:7000 \
127.0.0.1:7001 \
127.0.0.1:7002 \
127.0.0.1:7003 \
127.0.0.1:7004 \
127.0.0.1:7005 \
--cluster-replicas 1 \
-a your_secure_password
输入 yes
确认槽位分配方案
6. 集群验证
# 查看集群信息
redis-cli -c -p 7000 -a your_secure_password cluster info
# 检查节点状态
redis-cli -c -p 7000 -a your_secure_password cluster nodes
# 测试数据分布
redis-cli -c -p 7000 -a your_secure_password set foo bar
redis-cli -c -p 7000 -a your_secure_password get foo
7. 维护与管理
重启集群
# 按顺序重启节点
for port in {7000..7005}; do
sudo systemctl restart redis-cluster@${port}
done
添加新节点
# 创建新节点配置(7006)
# ...(参考步骤3创建新节点配置)
# 添加节点到集群
redis-cli --cluster add-node 127.0.0.1:7006 127.0.0.1:7000 --cluster-slave
8. 防火墙配置
# 开放集群端口(基础端口 + 10000 的集群总线端口必须开放)
sudo ufw allow 7000:7005/tcp
sudo ufw allow 17000:17005/tcp
9. 生产环境建议
多服务器部署:真实生产环境应在不同物理服务器部署主从节点
持久化配置:根据需求调整
appendfsync
策略监控报警:建议使用 Redis Exporter + Prometheus + Grafana 监控
定期备份:使用
BGSAVE
命令进行数据持久化安全配置:
启用 TLS 加密通信
使用 ACL 进行权限控制
禁用危险命令:
rename-command FLUSHDB "" rename-command CONFIG ""
10. 故障排查
# 查看节点日志
tail -f /opt/redis-cluster/7000/redis.log
# 检查集群健康状态
redis-cli --cluster check 127.0.0.1:7000 -a your_secure_password
# 修复槽位分配
redis-cli --cluster fix 127.0.0.1:7000 -a your_secure_password
11. CentOS 特有注意事项
文件句柄限制调整
# 修改 limits.conf
cat << EOF | sudo tee -a /etc/security/limits.conf
redisuser soft nofile 65536
redisuser hard nofile 65536
EOF
# 修改 systemd 服务文件(追加到 Service 段)
sudo sed -i '/^\[Service\]/a LimitNOFILE=65536' /usr/lib/systemd/system/redis-cluster@.service
# 重载服务
sudo systemctl daemon-reload
sudo systemctl restart redis-cluster@*
内核参数优化
# 调整内存分配策略
cat << EOF | sudo tee -a /etc/sysctl.conf
vm.overcommit_memory = 1
net.core.somaxconn = 1024
EOF
# 应用配置
sudo sysctl -p
故障排查(CentOS 特有)
# 查看 SELinux 日志(如果未完全禁用)
sudo ausearch -m avc -ts recent
# 检查文件权限
sudo ls -lZ /opt/redis-cluster
# 查看完整日志
journalctl -u redis-cluster@7000 -f