Redis 哨兵模式搭建详解

发布于:2024-12-18 ⋅ 阅读:(56) ⋅ 点赞:(0)

目录

1. 哨兵模式的原理

1.1 监控

1.2 通知

1.3 自动故障转移

1.4 配置驱动

1.5 集群拓扑

2. 准备

2.1 服务器准备

(1)关闭所有服务器的防火墙

(2)修改所有服务器的 hosts 文件

3)Sync 其他配置

3. Redis 主从搭建

3.1 Redis 安装

下载安装

目录结构

3.2 redis.conf 配置

3.2.1 主节点配置

3.2.2 从节点配置

3.3 Redis 启动

启动主节点

启动从节点

3.4 Redis 状态检查

3.4.1 主节点信息

3.4.2 从节点信息

4. 哨兵配置

4.1 sentinel.conf 配置

4.2 哨兵启动

4.3 查看启动状态

4.4 其他注意事项

5. redis.conf 参数详解

6. sentinel.conf 参数详解

7. 故障转移测试

7.1 模拟主节点故障

7.2 检查哨兵的反应

7.3 检查新的从节点

8. 小结


在现代应用程序中,数据的高可用性和可靠性至关重要。Redis 的哨兵模式(Sentinel)是实现高可用性的一个强大解决方案,它不仅仅提供高可用性,还能进行实时监控及故障自动恢复。这篇文章将深入探讨 Redis 哨兵模式的工作原理,详细的搭建步骤,以及各项配置的深度解析,旨在帮助读者全面掌握 Redis 哨兵架构。

1. 哨兵模式的原理

Redis 哨兵模式的核心在于其能够监控 Redis 服务的状态,并在出现故障时自动进行故障转移。其工作原理可概括为以下几个要点:

1.1 监控

哨兵会定期检查 Redis 主节点和从节点的健康状态。它通过发送 PING 命令到各个 Redis 实例来检测其是否正常运行。在每次检查中,哨兵还会监测节点的延迟和响应时间。

1.2 通知

如果哨兵发现某个 Redis 节点出现问题,它会通过通知机制向系统管理员发送警告消息。这可以通过邮件、Webhook 或其他自定义通知方式实现。

1.3 自动故障转移

当主节点被识别为不可用时,哨兵会激活故障转移流程。它会选择一个从节点提升为新的主节点,并重新配置其他从节点以指向新的主节点。哨兵还会更新自身的监控信息,确保快速恢复服务。

1.4 配置驱动

哨兵的配置可以通过命令行界面或配置文件进行操作。每个哨兵都会共享同样的配置,以确保整个集群的一致性和高可用性。

1.5 集群拓扑

在哨兵模式中,通常建议设置至少三个哨兵实例以避免单点故障。这些哨兵实例可以是分布在不同的物理服务器上,增强系统的容错能力。而主从结构则是 Redis 数据高可用性的基础,每个主节点可以有多个从节点,整个系统形成一个高效的架构。

2. 准备

在搭建 Redis 哨兵模式之前,我们需要进行一些基本准备工作,确保环境的合理和稳定。

2.1 服务器准备

(1)关闭所有服务器的防火墙

为了确保 Redis 和哨兵可以正常通信,首先需在每台服务器上关闭防火墙。这可以通过以下命令来实现,不同系统的命令略有不同:

对于 CentOS/RHEL 系统:

# 停止防火墙  
sudo systemctl stop firewalld  
# 禁用防火墙  
sudo systemctl disable firewalld

对于 Ubuntu 系统:

# 停止 UFW 防火墙  
sudo ufw disable

确保在关闭防火墙时,理解可能带来的安全隐患,推荐在生产环境中使用更为精细的防火墙规则。

(2)修改所有服务器的 hosts 文件

为了方便节点之间的相互访问,建议在每台服务器的 /etc/hosts 文件中添加其他节点的 IP 地址配置。你可以通过如下命令进行编辑:

sudo nano /etc/hosts

添加以下行以确保每个节点能通过名称找到其他节点:

192.168.1.1 redis-01  
192.168.1.2 redis-02  
192.168.1.3 redis-03
3)Sync 其他配置

在完成 hosts 文件的修改后,确保所有该配置在集群中的一致性。可以通过在每台机器执行 ping redis-01 等命令确认配置有效。

3. Redis 主从搭建

将 Redis 配置为主从模式是搭建哨兵的关键步骤之一。

3.1 Redis 安装

在所有服务器上执行以下步骤来安装 Redis:

下载安装

首先,下载 Redis 的最新版本并进行解压:

cd /usr/local/src  
curl -O http://download.redis.io/releases/redis-6.0.9.tar.gz  
tar xzvf redis-6.0.9.tar.gz  
cd redis-6.0.9  
# 编译并安装  
make  
sudo make install

在此过程中,会生成 Redis 的可执行文件,通常包括 redis-serverredis-cli, 和 redis-sentinel

目录结构

安装完成后,建议创建一个目录用于存放配置文件和数据文件:

sudo mkdir /etc/redis  
sudo mkdir /var/lib/redis

3.2 redis.conf 配置

每个 Redis 实例都需要处理其自身的配置文件。在每台服务器上创建一个 redis.conf 文件,可以从示例配置文件中复制:

sudo cp /usr/local/src/redis-6.0.9/redis.conf /etc/redis/redis.conf
3.2.1 主节点配置

编辑主节点的配置文件 /etc/redis/redis.conf,进行以下重要配置:

# 指定绑定的 IP 地址  
bind 192.168.1.1  
protected-mode no  

# 设置密码  
requirepass yourpassword  

# 开启持久化  
save 900 1  
save 300 10  
save 60 10000  

# 配置数据库文件存储位置(确保对目录有写入权限)  
dir /var/lib/redis
3.2.2 从节点配置

在每个从节点 /etc/redis/redis.conf 中编辑如下:

# 指定绑定的 IP 地址  
bind 192.168.1.2  # 或者 192.168.1.3  
protected-mode no  

# 设置密码  
requirepass yourpassword  
masterauth yourpassword  # 匹配主节点的密码  

# 忽略启动时 Redis 的保护模式  
slaveof 192.168.1.1 6379  

# 配置数据库文件存储位置  
dir /var/lib/redis

3.3 Redis 启动

在完成配置后,接下来依次启动所有服务器上的 Redis 服务。

启动主节点

在主节点上执行:

redis-server /etc/redis/redis.conf
启动从节点

在每个从节点上执行相似的命令:

redis-server /etc/redis/redis.conf

你可以在后台执行 Redis,使用 & 符号,或者在系统的启动脚本中启用 Redis。

3.4 Redis 状态检查

启动 Redis 实例后,您需要检查每个节点的状态。使用 redis-cli 来获取节点的复制信息。

3.4.1 主节点信息

在主节点上执行:

redis-cli -h 192.168.1.1 -a yourpassword info replication

输出的结果应包括:

# Replication  
role:master  
connected_slaves:1  
slave0:ip=192.168.1.2,port=6379,state=online,offset=123456,lag=0

确保从节点已成功连接。

3.4.2 从节点信息

在每个从节点上执行:

redis-cli -h 192.168.1.2 -a yourpassword info replication

确保输出显示该节点当前为从节点并与主节点相连。

4. 哨兵配置

哨兵的配置将确保在主节点宕机时能够自动进行故障转移。

4.1 sentinel.conf 配置

在 Redis 安装目录下创建配置文件 sentinel.conf,该文件用于配置哨兵。您可以使用以下命令创建并编辑该文件:

sudo nano /etc/redis/sentinel.conf

添加以下内容:

# 监控主节点  
sentinel monitor mymaster 192.168.1.1 6379 2  
# 指定主节点下线时间  
sentinel down-after-milliseconds mymaster 5000  
# 设置故障转移超时  
sentinel failover-timeout mymaster 60000  
# 设置并行同步的从节点数  
sentinel parallel-syncs mymaster 1

4.2 哨兵启动

启动哨兵服务,您可以在每台哨兵服务器上运行以下命令:

redis-sentinel /etc/redis/sentinel.conf

4.3 查看启动状态

您可以使用 Redis 客户端检查哨兵的状态,可以在任意哨兵节点上执行:

redis-cli -p 26379 sentinel masters

这将列出当前被监控的主节点及其状态。

4.4 其他注意事项

  • 确保所有哨兵的配置文件都一致。
  • 哨兵之间需要互相通信,以协调故障转移,无需单独配置。
  • 运行环境中需保证网络良好,避免因网络问题导致错误的故障转移。

5. redis.conf 参数详解

理解 redis.conf 文件中的配置参数有助于优化 Redis 的性能和安全性。以下是一些关键参数及说明:

  • bind: 指定服务监听的 IP 地址。为了减少被攻击的风险,通常建议仅绑定私有 IP 地址。
  • protected-mode: 设置为 no 时,Redis 不强制要求设置密码。对于生产环境,建议设置为 yes,增加安全性。
  • save: 该配置用于指定数据持久化的方式,包括快照的保存时间(秒)和数据变更次数。
  • requirepass: 设置 Redis 的访问密码,用于认证客户端请求,增强安全性。
  • maxmemory: 设置 Redis 实例最大内存限制,超过该限制后可以使用 maxmemory-policy 定义的策略处理内存不足的情况。

6. sentinel.conf 参数详解

sentinel.conf 配置文件中的参数对于哨兵的功能至关重要。以下是一些常见参数及其说明:

  • sentinel monitor: 定义需要监控的主节点,包括名称、IP 地址、端口以及哨兵的节点数(用于选举)。
  • down-after-milliseconds: 指定在将主节点视作下线之前的等待时间(单位:毫秒)。在此时间内,如果哨兵未收到主节点的响应则认为其故障。
  • failover-timeout: 设置故障转移过程的超时时间,超过该时间后认为故障转移失败。
  • parallel-syncs: 在故障转移期间最大可以接受的从节点并行同步的数量,以提高故障恢复速度。

7. 故障转移测试

在完成以上配置后,您可以进行一次故障转移的测试,以检验系统的高可用性。

7.1 模拟主节点故障

在主节点上,通过执行以下命令故意使 Redis 主节点停止:

redis-cli -h 192.168.1.1 -a yourpassword shutdown

7.2 检查哨兵的反应

在哨兵节点上,执行以下命令来检查哨兵的状态及是否成功执行故障转移:

redis-cli -p 26379 sentinel masters

您应当看到新的主节点 IP 地址及状态更新。

7.3 检查新的从节点

使用如下命令连接新的主节点,检查从节点的状态:

redis-cli -h <new-master-ip> -a yourpassword info replication

8. 小结

通过以上步骤,我们详细地完成了 Redis 哨兵模式的搭建和配置。我们探讨了其工作原理及技术细节,确保在实际环境中的高可用性。了解 Redis 和哨兵的配置参数,不仅能让您优化性能,还能增强系统的安全性。

在生产环境中建立高可用性架构是很重要的,定期检查和维护各个节点的状态,确保其正常运行是必不可少的。如果您在实施的过程中遇到疑问或问题,请随时和我咨询。希望这篇文章能为您的 Redis 虚拟化旅程提供帮助与支持!


网站公告

今日签到

点亮在社区的每一天
去签到