当前位置: 首页 > article >正文

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:

  • 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 集群,并验证了集群的分片存储和故障转移功能。


http://www.kler.cn/news/313897.html

相关文章:

  • leetcode刷题(71-75)
  • ATMEGA328P芯片引脚介绍
  • 如何配置ssh key 到gitlab, 实现git push
  • 京东商品属性的详细api数据解析:颜色、尺寸与材质
  • 《深度学习》PyTorch框架 优化器、激活函数讲解
  • OpenHarmony(鸿蒙南向开发)——标准系统方案之瑞芯微RK3568移植案例(下)
  • 鸿蒙搭配前端开发:应用端与WEB端交互
  • 安卓数据存储——SQLite
  • VM16安装macOS11
  • 《线性代数》笔记
  • 精选写作技巧!分享4款ai写毕业论文可以写出公式表格的软件
  • windows安装docker、elasticsearch、kibana、cerebro、logstash
  • 西圣、吉玛仕、绿联电容笔好不好用?热门平替电容笔超真实测评!
  • 淘宝npm镜像源更新后,如何正常使用npm命令
  • Apache DolphinScheduler 跨工作流复杂依赖功能详解
  • 不要死磕技术,还是要产品化
  • go语言Map详解
  • 【图表如何自动排序】
  • RabbitMQ08_保证消息可靠性
  • 【在Linux世界中追寻伟大的One Piece】进程间关系与守护进程
  • React 的 useEffect 钩子,执行一些异步操作来加载基本信息
  • 【docker npm】npm 私库
  • 《高等代数》线性相关和线性无关(应用)
  • C++之职工管理系统(细节Q)
  • Spring Boot集成Akka remoting快速入门Demo
  • Spring-关于IOC的解释及相关理解(如何从三个方面理解)
  • 计算机人工智能前沿进展-大语言模型方向-2024-09-16
  • leetcode 380.O(1) 时间插入、删除和获取随机元素
  • 电脑ip会因为换了网络改变吗
  • JavaScript web API完结篇---多案例