Redis 集群搭建教程
目录
1. Redis 集群简介
2. 环境准备
2.1 安装 Redis
2.2 创建配置目录
3. 配置 Redis 节点
4. 启动 Redis 节点
5. 创建 Redis 集群
5.1 启动集群命令
5.2 确认集群配置
6. 测试 Redis 集群
6.1 数据存储测试
6.2 故障转移测试
7. 进阶:集群配置参数
8. Redis 集群的高可用性
9. 总结
1. Redis 集群简介
Redis 集群是一种去中心化的架构,每个节点既可以作为主节点(Master),也可以有对应的从节点(Slave)。通过哈希槽(Hash Slot)机制,Redis 集群将数据分片存储在不同的主节点上,实现分布式存储和负载均衡。
主要特点:
- 数据分片:数据通过哈希槽自动分配到不同的节点。
- 高可用性:当主节点发生故障时,集群会自动提升对应的从节点为新的主节点,保证服务持续可用。
- 去中心化架构:Redis 集群中没有单点故障,每个节点相互通讯,共同维护集群状态。
2. 环境准备
假设我们有以下 6 台服务器,分别作为 Redis 集群中的 3 个主节点和 3 个从节点:
- 主节点1:
192.168.1.101:7001
- 主节点2:
192.168.1.102:7002
- 主节点3:
192.168.1.103:7003
- 从节点1:
192.168.1.101:7004
(从属主节点1) - 从节点2:
192.168.1.102:7005
(从属主节点2) - 从节点3:
192.168.1.103:7006
(从属主节点3)
2.1 安装 Redis
首先在每台服务器上安装 Redis,安装过程与普通 Redis 安装相同。参考以下教程安装 Redis:
- Redis 安装教程
2.2 创建配置目录
为每个节点创建一个独立的配置目录,每个节点都需要一个独立的 Redis 配置文件和数据目录。
例如,在 192.168.1.101
上创建 7001 和 7004 的目录:
# redis.conf 配置文件示例
port 7001
cluster-enabled yes
cluster-config-file nodes-7001.conf
cluster-node-timeout 5000
appendonly yes
daemonize yes
bind 0.0.0.0
logfile "/usr/local/bin/redis_cluster/7001/redis.log"
dir "/usr/local/bin/redis_cluster/clusterdata"
为其他节点配置类似的配置文件,修改端口号、日志文件路径和数据目录。
3. 配置 Redis 节点
为每个 Redis 实例配置一个独立的 redis.conf
配置文件。以下是一个典型的 Redis 集群节点配置示例:
# redis.conf 配置文件示例
port 7001
cluster-enabled yes
cluster-config-file nodes-7001.conf
cluster-node-timeout 5000
appendonly yes
daemonize yes
bind 0.0.0.0
logfile "/usr/local/bin/redis_cluster/7001/redis.log"
dir "/usr/local/bin/redis_cluster/clusterdata/"
4. 启动 Redis 节点
在每台服务器上,启动各个 Redis 实例:
redis-server /opt/redis/cluster/7001/redis.conf
redis-server /opt/redis/cluster/7004/redis.conf
依次启动所有主节点和从节点。
5. 创建 Redis 集群
所有节点启动后,我们需要将这些节点组成一个集群。使用 redis-cli
工具创建集群,并将节点之间的关系绑定起来。
5.1 启动集群命令
首先,进入任意一台服务器,并执行以下命令创建集群(在 redis-cli
工具中):
redis-cli --cluster create 192.168.1.101:7001 192.168.1.102:7002 192.168.1.103:7003 \
192.168.1.101:7004 192.168.1.102:7005 192.168.1.103:7006 --cluster-replicas 1
参数说明:
--cluster create
:创建一个新的集群。192.168.1.101:7001 ... 192.168.1.103:7006
:集群中所有节点的 IP 和端口。--cluster-replicas 1
:每个主节点有一个从节点进行备份。
5.2 确认集群配置
运行以上命令后,系统会提示确认配置。输入 yes
确认集群创建:
>>> Performing hash slots allocation on 6 nodes...
Master[0] -> Slots 0 - 5460
Master[1] -> Slots 5461 - 10922
Master[2] -> Slots 10923 - 16383
Adding replica 192.168.1.101:7004 to 192.168.1.101:7001
Adding replica 192.168.1.102:7005 to 192.168.1.102:7002
Adding replica 192.168.1.103:7006 to 192.168.1.103:7003
集群创建完成后,你可以通过以下命令查看集群状态:
redis-cli -p 7001 cluster nodes
此命令将输出所有节点的信息和角色(主节点或从节点)。
6. 测试 Redis 集群
6.1 数据存储测试
在集群中存储数据时,Redis 会根据哈希槽自动将数据分片存储在不同的主节点上。例如:
redis-cli -p 7001
SET key1 "value1"
SET key2 "value2"
GET key1
数据将被自动分配到不同的节点上,可以在不同的节点执行 GET
操作,验证数据的存储位置。
6.2 故障转移测试
可以通过手动关闭某个主节点来测试故障转移功能。例如,关闭主节点 7001
:
redis-cli -p 7001 shutdown
集群会自动检测到主节点故障,并将从节点 7004
提升为新的主节点。
7. 进阶:集群配置参数
cluster-require-full-coverage no
:当某些节点不可用时,仍然允许集群继续工作。cluster-node-timeout
:设置节点之间通信的超时时间。cluster-announce-ip
:在 NAT 或 Docker 中使用时,可以指定节点对外公布的 IP 地址。
8. Redis 集群的高可用性
Redis 集群的高可用性由以下机制保障:
- 自动故障转移:当主节点故障时,从节点自动接管,保持服务可用。
- 数据分片:通过哈希槽机制,数据分散存储在多个节点上,避免单点瓶颈。
9. 总结
通过 Redis 集群,系统可以在多个节点上分片存储数据,实现高并发、高可用的分布式存储系统。本文介绍了如何在 6 个节点上搭建 Redis 集群,并验证了集群的分片存储和故障转移功能。