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 个从节点:

  • 主节点1192.168.1.101:7001
  • 主节点2192.168.1.102:7002
  • 主节点3192.168.1.103:7003
  • 从节点1192.168.1.101:7004(从属主节点1)
  • 从节点2192.168.1.102:7005(从属主节点2)
  • 从节点3192.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 集群,并验证了集群的分片存储和故障转移功能。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值