Redis 的哨兵(Sentinel)模式是一种高可用解决方案,用于监控Redis实例,并在主节点发生故障时自动进行故障转移。下面是一个简化的步骤来搭建一主二从的Redis哨兵模式集群。
准备工作
- 安装 Redis:确保你的服务器上已经安装了Redis。如果没有,可以通过包管理器或源代码编译安装。
- 配置文件:为每个Redis实例准备单独的配置文件。
- 网络设置:确保所有Redis实例和哨兵之间可以相互通信。
配置 Redis 实例
主节点 (master)
创建一个名为 redis-master.conf
的配置文件,并设置如下参数:
port 6379
daemonize yes
pidfile /var/run/redis_6379.pid
logfile "/var/log/redis/redis_6379.log"
dir /var/lib/redis/6379
启动主节点:
redis-server /path/to/redis-master.conf
从节点 (slaves)
为两个从节点分别创建配置文件 redis-slave-1.conf
和 redis-slave-2.conf
,并添加以下内容:
port 6380 # 对于第一个从节点
slaveof <master-ip> 6379
daemonize yes
pidfile /var/run/redis_6380.pid
logfile "/var/log/redis/redis_6380.log"
dir /var/lib/redis/6380
port 6381 # 对于第二个从节点
slaveof <master-ip> 6379
daemonize yes
pidfile /var/run/redis_6381.pid
logfile "/var/log/redis/redis_6381.log"
dir /var/lib/redis/6381
将 <master-ip>
替换为主节点的实际IP地址。然后分别启动两个从节点:
redis-server /path/to/redis-slave-1.conf
redis-server /path/to/redis-slave-2.conf
配置哨兵 (Sentinels)
哨兵也需要自己的配置文件。至少需要三个哨兵实例来避免脑裂问题。为每个哨兵创建配置文件如 sentinel-1.conf
, sentinel-2.conf
和 sentinel-3.conf
。
每个哨兵配置文件中包含类似如下设置:
port 26379 # 第一个哨兵端口
sentinel monitor mymaster <master-ip> 6379 2
sentinel down-after-milliseconds mymaster 5000
sentinel failover-timeout mymaster 180000
sentinel parallel-syncs mymaster 1
daemonize yes
pidfile /var/run/sentinel-26379.pid
logfile "/var/log/redis/sentinel-26379.log"
dir /tmp
对其他哨兵做相应修改,比如端口号分别为 26380 和 26381。
启动哨兵服务:
redis-sentinel /path/to/sentinel-1.conf
redis-sentinel /path/to/sentinel-2.conf
redis-sentinel /path/to/sentinel-3.conf
这样你就设置了一个基本的一主两从的Redis哨兵模式。当主节点失败时,哨兵会自动选择一个从节点作为新的主节点,并更新其他从节点指向新主节点。