Redis 集群搭建教程
目录
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:
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 集群,并验证了集群的分片存储和故障转移功能。
原文地址:https://blog.csdn.net/m0_70691645/article/details/142253662
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!