以下是在 Linux 系统下搭建 Redis Cluster 集群的详细教程,这里以搭建一个包含 3 各主节点和 3 各从节点的集群为例。
1. 环境准备
- 系统环境:以 CentOS 7 为例,确保系统已安装 gcc 编译器和 tcl 解释器,因为 Redis 编译和集群创建脚本依赖它们。
- bash
# 安装 gcc 和 tcl
yum install -y gcc tcl
- 下载 Redis:从 Redis 官方网站下载所需版本的 Redis 源码包,这里以 Redis 6.2.6 为例
bash
# 下载 Redis 源码包
wget http://download.redis.io/releases/redis-6.2.6.tar.gz
# 解压源码包
tar -zxvf redis-6.2.6.tar.gz
# 进入解压后的目录
cd redis-6.2.6
# 编译 Redis
make
# 安装 Redis 到 /usr/local/redis 目录
make PREFIX=/usr/local/redis install
2. 配置节点
创建 6 个不同端口的 Redis 实例,分别作为 3 个主节点和 3 个从节点。这里使用 7000 - 7005 端口。
bash
# 创建 Redis 集群目录
mkdir -p /usr/local/redis-cluster
# 为每个节点创建单独的目录
for port in $(seq 7000 7005); do
mkdir -p /usr/local/redis-cluster/$port
cp /usr/local/redis/bin/* /usr/local/redis-cluster/$port
cat > /usr/local/redis-cluster/$port/redis.conf << EOF
port $port
bind 0.0.0.0
daemonize yes
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 5000
appendonly yes
pidfile /var/run/redis_$port.pid
EOF
done
配置文件说明:
- port:指定 Redis 实例监听的端口。
- bind:允许所有 IP 地址访问。
- daemonize:以守护进程模式运行。
- cluster-enabled:开启集群模式。
- cluster-config-file:集群节点配置文件。
- cluster-node-timeout:节点超时时间,超过该时间认为节点故障。
- appendonly:开启 AOF 持久化。
- pidfile:指定进程 ID 文件。
3. 启动节点
bash
for port in $(seq 7000 7005); do
cd /usr/local/redis-cluster/$port
./redis-server redis.conf
done
4. 创建集群
使用 redis-cli 工具创建 Redis Cluster 集群。
bash
# 注意:如果使用 Redis 5.0 及以上版本,使用以下命令
/usr/local/redis/bin/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
命令解释:
- --cluster create:创建集群。
- 127.0.0.1:7000 ... 127.0.0.1:7005:指定参与集群的节点地址和端口。
- --cluster-replicas 1:每个主节点对应 1 个从节点。
执行上述命令后,会提示确认节点分配信息,输入 yes 确认即可完成集群创建。
5. 验证集群
bash
# 连接到任意一个节点
/usr/local/redis/bin/redis-cli -c -h 127.0.0.1 -p 7000
# 查看集群信息
cluster info
# 查看集群节点信息
cluster nodes
如果一切正常,你应该能够看到集群的状态信息和节点列表。
6. 关闭集群
bash
for port in $(seq 7000 7005); do
/usr/local/redis/bin/redis-cli -p $port shutdown
done
以上就是在 Linux 系统下搭建 Redis Cluster 集群的详细步骤。在实际生产环境中,建议将节点分布在不同的物理机器上,以提高集群的可用性和可靠性。