Redis 主从哨兵是一种高可用解决方案,它在分布式环境中用于管理和监控 Redis 数据库集群。本文档主要介绍了一次实验,构建了一个包含一主(master)、两从(slave)以及三个哨兵(sentinel)的架构,实现在单机服务器上的部署和配置。
**1. Redis 安装与配置**
首先,从 Redis 的官方网站下载源代码包,如版本 4.0.6,解压后进入安装目录。确保服务器上安装了 GCC 和 C++ 编译器,然后执行 `make MALLOC=libc` 以避免编译错误,并指定安装路径。安装完成后,Redis 的可执行文件如 `redis-server`, `redis-cli`, `redis-benchmark`, `redis-check-aof`, 和 `redis-check-rdb` 都会在 `/data/redis/bin` 目录下生成。
将这些redis命令复制到 `/usr/local/bin`,方便直接使用,无需写完整路径。接下来,创建必要的配置文件目录,并为每个节点(主和从节点)创建独立的配置文件,如 `redis1000.conf`, `redis2000.conf`, 和 `redis3000.conf`。
**2. 准备 Redis 配置**
Redis 配置文件是关键,它包含了服务器的运行参数和连接设置。对于主从哨兵模式,配置文件应包含以下要点:
- **主节点配置**:配置文件中应设置 `bind` 参数指定监听地址,`protected-mode` 设置为 `no` 以允许外部连接,`slaveof` 指定主服务器的 IP 和端口。
- **从节点配置**:除了 `slaveof` 需指向主节点外,一般设置 `save` 命令来控制何时进行 RDB 持久化,以及 `appendonly` 和 `appendfsync` 设置来控制 AOF 模式下的数据同步。
- **哨兵配置**:在 sentinel 配置文件中,你需要设置 `sentinel monitor` 来监控主节点,同时配置 `sentinel down-after-milliseconds` 和 `sentinel failover-timeout` 控制故障切换时间,`bind` 设置监听地址,`port` 设定哨兵通信端口。
**3. 启动和监控**
- **主节点**:使用 `redis-server redis1000.conf` 启动,同时确保在配置文件中设置哨兵作为监控者。
- **从节点**:启动其他从节点,同样设置 `slaveof` 为主节点,并启用哨兵监控。
- **哨兵**:启动每个哨兵实例,配置它们监视指定的主节点。哨兵通过轮询机制监控主从节点状态,当主节点发生故障时,会触发自动故障转移。
在配置和启动过程中,需要确保网络可达性和通信安全,例如使用安全套接字或SSL/TLS加密。此外,监控工具如 `redis-cli` 可以用于检查和管理整个系统,包括查看哨兵的状态、检查主从复制的进度等。
Redis 主从哨兵模式提供了高可用性和容错性,通过合理的配置和管理,可以确保数据在分布式环境中的可靠存储和访问。本文档详细介绍了如何在单机服务器上搭建这样的系统,包括安装、配置和监控步骤。