【Centos】Redis Cluster 集群部署图文步骤

Redis Cluster 集群

Redis Cluster 是 Redis 官方提供的分布式解决方案,用于解决单机 Redis 在高并发和大数据量场景下的性能瓶颈和数据存储限制问题。它通过将数据分散到多个节点上,实现数据的分布式存储和高可用性。

基本架构
  1. 节点(Node):Redis Cluster 由多个 Redis 节点组成,每个节点都是一个 Redis 实例。节点之间通过 Gossip 协议进行通信,用于发现新节点、交换节点状态等。
  2. 槽(Slot):Redis Cluster 使用槽(Slot)来分配数据。总共有 16384 个槽,每个键根据其哈希值被分配到一个槽中,然后槽被分配到不同的节点上。这样可以实现数据的分布式存储。
  3. 主从复制:每个节点可以有多个从节点,用于数据的冗余备份。当主节点故障时,从节点可以进行故障转移,接管主节点的工作。
  4. 故障转移:当某个节点出现故障时,集群会自动进行故障转移,将故障节点的槽重新分配给其他节点,并由从节点接管主节点的工作,保证集群的高可用性。
优势
  1. 高可用性
    • 自动故障转移:当主节点故障时,集群会自动将从节点提升为主节点,并重新分配槽,保证集群的正常运行。整个过程对客户端透明,客户端无需手动干预。
    • 冗余备份:通过主从复制机制,每个节点的数据都有多个副本,降低了数据丢失的风险。
  2. 水平扩展
    • 动态扩展:Redis Cluster 支持动态添加和移除节点。当集群的存储容量或计算能力不足时,可以通过添加新的节点来扩展集群。新增节点后,集群会自动将部分槽重新分配到新节点上,实现数据的均衡分布。
    • 负载均衡:数据根据槽分配到不同的节点上,客户端请求也会根据槽的分布分散到不同的节点,从而实现负载均衡,避免单个节点成为性能瓶颈。
  3. 分布式存储
    • 数据分片:通过槽机制将数据分散到多个节点上,每个节点只存储一部分数据,从而突破了单机 Redis 的存储限制,可以支持更大的数据量。
    • 高吞吐量:多个节点同时处理请求,提高了集群的吞吐量,能够更好地应对高并发场景。
  4. 容错能力
    • 节点故障隔离:集群中的节点是独立的,一个节点的故障不会影响其他节点的正常运行。即使部分节点出现故障,集群仍然可以正常提供服务。
    • 自动恢复:当故障节点恢复后,集群会自动将其重新加入,并同步数据,恢复集群的完整性和一致性。
适用场景

Redis Cluster 适用于对数据存储容量和性能要求较高的场景,例如:

  • 大规模缓存系统:在高并发的 Web 应用中,作为缓存层存储热点数据,提高系统的读取速度和响应能力。
  • 消息队列:用于实现分布式消息队列,支持高并发的消息生产和消费。
  • 分布式会话存储:在分布式系统中存储用户会话信息,保证会话数据的高可用性和一致性。
限制

虽然 Redis Cluster 有诸多优势,但也存在一些限制:

  1. 事务支持有限:Redis Cluster 不支持跨多个键的事务操作,因为这些键可能分布在不同的节点上。如果需要跨节点的事务,需要在客户端实现。
  2. 性能瓶颈:虽然集群可以扩展,但在某些极端情况下,如大量节点的故障转移或大规模的数据迁移,可能会对集群性能产生一定影响。
  3. 复杂性增加:相比单机 Redis,Redis Cluster 的架构和运维更加复杂,需要考虑节点的配置、槽的分配、故障转移等多方面的问题。

具体操作步骤如下:

安装包后续会放在博客中
也可以自己下载:

Redis 官方下载页面:https://redis.io/downloads/

不同平台的下载方式

Windows:

可以从 https://github.com/redis-windows/redis-windows/releases 下载适用于 Windows 的 Redis 版本。

也可以从 https://github.com/MicrosoftArchive/redis/releases 下载,这里有 MSI 安装包和免安装的绿色版。

Linux:

可以通过命令行工具(如 wget)从 https://download.redis.io/releases/ 下载源码包,然后进行编译安装。

1.上传将redis整个文件夹上传至/usr/local/中

2.进入rpm文件夹中

执行:rpm -ivh *.rpm

3.解压redis

命令: tar -zxvf redis-7.4.2.tar.gz

4.进入到redis-7.4.2的目录

命令:cd redis-7.4.2

5...编译安装

命令:sudo make install

6.等待安装

安装完成的目录结构如下

7.配置Redis节点

  1. 创建配置文件目录:

    命令:mkdir -p /etc/redis/{6371,6372,6373,6374,6375,6376}

  2. 创建配置文件:

    为每个节点创建一个redis.conf文件:

bash 复制代码
touch /etc/redis/6371/redis.conf
touch /etc/redis/6372/redis.conf
touch /etc/redis/6373/redis.conf
touch /etc/redis/6374/redis.conf
touch /etc/redis/6375/redis.conf
touch /etc/redis/6376/redis.conf

例如:配置端口6371的配置文件/etc/redis/6371/redis.conf

命令vi /etc/redis/6371/redis.conf

模板如下:

bash 复制代码
port 6371
daemonize yes
pidfile /var/run/redis_6371.pid
logfile /var/log/redis_6371.log
dir /etc/redis/6371
protected-mode no
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 5000
appendonly yes


为其他端口(6371-6376)重复上述步骤,修改对应的端口号。

8.启动Redis实例

  1. 启动每个节点:
    输入以下命令:
bash 复制代码
for PORT in {6371..6376}; do
    redis-server /etc/redis/$PORT/redis.conf
done

检查端口监听:

命令:netstat -tulnp | grep redis

9.创建集群

  1. 使用rediscli工具创建集群:
bash 复制代码
redis-cli --cluster create 127.0.0.1:6371 127.0.0.1:6372 127.0.0.1:6373 127.0.0.1:6374 127.0.0.1:6375 127.0.0.1:6376 --cluster-replicas 1

**

注:cluster-replicas 1表示每个主节点有一个从节点。

如果集群分布在多台机器上,将127.0.0.1替换为实际的IP地址。

根据提示完成集群创建:系统会提示分配槽位等操作,按提示输入yes完成创建。

**

10.验证集群

bash 复制代码
连接集群:
redis-cli -c -p 6371
  1. 执行命令验证:
    CLUSTER INFO会显示集群的状态信息。
    输入命令:CLUSTER INFO

    CLUSTER NODES会显示所有节点的信息,包括主从关系和槽位分配。
    输入命令:CLUSTER NODES
    验证数据是否能够在主从节点之间同步。

    11.测试数据存储