使用Docker搭建Redis集群(Redis Sentinel 集群部署)

文章目录

    • 概述
    • 搭建 Redis 集群
    • 搭建 Sentinel 集群
    • 修改 Sentinel 配置文件
    • 查看集群是否生效

概述

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

Redis Sentinel 是官方推荐的高可用性解决方案。它是 Redis 集群的监控管理工具,可以提供节点监控、通知、自动故障恢复和客户端配置发现服务。
使用Docker搭建Redis集群(Redis Sentinel 集群部署)_第1张图片

搭建 Redis 集群

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

version: '2.0'
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

运行如图:
使用Docker搭建Redis集群(Redis Sentinel 集群部署)_第2张图片
Redis集群搭建完成(简直不要太快)

搭建 Sentinel 集群

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

version: '2.0'
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.confsentinel2.confsentinel3.conf,配置文件内容相同:

port 26379
dir "/tmp"
# 自定义集群名,其中 127.0.0.1 为 redis-master 的 ip,6379 为 redis-master 的端口,2 为最小投票数(因为有 3 台 Sentinel 所以可以设置成 2)
sentinel myid f5fb3fd15a7d6332eb1b5ee1945b7ac784f2e757
sentinel deny-scripts-reconfig yes
sentinel monitor mymaster 192.168.37.202 6379 2
sentinel config-epoch mymaster 0
sentinel leader-epoch mymaster 0
# Generated by CONFIG REWRITE
sentinel known-replica mymaster 172.26.0.2 6379
sentinel known-replica mymaster 172.26.0.3 6379
sentinel current-epoch 0

运行Sentinel集群
使用Docker搭建Redis集群(Redis Sentinel 集群部署)_第3张图片

查看集群是否生效

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

docker exec -it redis-sentinel-1 /bin/bash
redis-cli -p 26379
sentinel master mymaster
sentinel slaves mymaster

如图:
使用Docker搭建Redis集群(Redis Sentinel 集群部署)_第4张图片
通过Redis客户端查看情况
使用Docker搭建Redis集群(Redis Sentinel 集群部署)_第5张图片
OK大功告成!

你可能感兴趣的:(Redis)