Redis Sentinel 集群部署

本文介绍了如何使用Redis集群实现高可用性,包括一主两从环境的搭建,以及Sentinel作为监控和故障恢复工具的配置和使用。通过DockerCompose管理和Sentinel配置文件,确保了在master节点失效时的自动切换和集群健康检查。
摘要由CSDN通过智能技术生成

概述

Redis 集群可以在一组 redis 节点之间实现高可用性和 sharding。在集群中会有 1 个 master 和多个 slave 节点。当 master 节点失效时,应选举出一个 slave 节点作为新的 master。然而 Redis 本身(包括它的很多客户端)没有实现自动故障发现并进行主备切换的能力,需要外部的监控方案来实现自动故障恢复。

Redis Sentinel 是官方推荐的高可用性解决方案。它是 Redis 集群的监控管理工具,可以提供节点监控、通知、自动故障恢复和客户端配置发现服务。

搭建 Redis 集群

搭建一主两从环境,docker-compose.yml 配置如下:

version: '3.1'

services:

  master:

    image: redis

    container_name: redis-master

    ports:

      - 6379:6379



  slave1:

    image: redis

    container_name: redis-slave-1

    ports:

      - 6380:6379

    command: redis-server --slaveof redis-master 6379



  slave2:

    image: redis

    container_name: redis-slave-2

    ports:

      - 6381:6379

    command: redis-server --slaveof redis-master 6379

搭建 Sentinel 集群

我们至少需要创建三个 Sentinel 服务,docker-compose.yml 配置如下:

version: '3.1'

services:

  sentinel1:

    image: redis

    container_name: redis-sentinel-1

    ports:

      - 26379:26379

    command: redis-sentinel /usr/local/etc/redis/sentinel.conf

    volumes:

      - ./sentinel1.conf:/usr/local/etc/redis/sentinel.conf



  sentinel2:

    image: redis

    container_name: redis-sentinel-2

    ports:

      - 26380:26379

    command: redis-sentinel /usr/local/etc/redis/sentinel.conf

    volumes:

      - ./sentinel2.conf:/usr/local/etc/redis/sentinel.conf



  sentinel3:

    image: redis

    container_name: redis-sentinel-3

    ports:

      - 26381:26379

    command: redis-sentinel /usr/local/etc/redis/sentinel.conf

    volumes:

      - ./sentinel3.conf:/usr/local/etc/redis/sentinel.conf

修改 Sentinel 配置文件

需要三份 sentinel.conf 配置文件,分别为 sentinel1.conf,sentinel2.conf,sentinel3.conf,配置文件内容相同:

port 26379

dir /tmp

# 自定义集群名,其中 127.0.0.1 为 redis-master 的 ip,6379 为 redis-master 的端口,2 为最小投票数(因为有 3 台 Sentinel 所以可以设置成 2)

sentinel monitor mymaster 172.16.174.176 6379 2

sentinel down-after-milliseconds mymaster 30000

sentinel parallel-syncs mymaster 1

sentinel failover-timeout mymaster 180000

sentinel deny-scripts-reconfig yes

查看集群是否生效

进入 Sentinel 容器,使用 Sentinel API 查看监控情况:

docker exec -it redis-sentinel-1 /bin/bash

redis-cli -p 26379

sentinel master mymaster

sentinel slaves mymaster

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值