基于docker搭建redis高可用集群版

什么是 Redis

Redis 是用 C 语言开发的一个开源的高性能键值对(key-value)数据库。它通过提供多种键值数据类型来适应不同场景下的存储需求,目前为止 Redis 支持的键值数据类型如下:
• string(字符串)
• hash(哈希)
• list(列表)
• set(集合)
• zset(有序集合)

Redis 的应用场景

• 缓存(数据查询、短连接、新闻内容、商品内容等等)
• 分布式集群架构中的 session 分离
• 聊天室的在线好友列表
• 任务队列(秒杀、抢购、12306 等等)
• 应用排行榜
• 网站访问统计
• 数据过期处理(可以精确到毫秒)

一、什么是高可用集群
高可用集群(High Availability Cluster,简称HA Cluster),是指以减少服务中断时间为目的的服务器集群技术。它通过保护用户的业务程序对外不间断地提供服务,把因为软件,硬件,人为造成的故障对业务的影响降低到最小程度。总而言之就是保证公司业务7*24小时不宕机。

一般有两个或两个以上的节点,且分为活动节点及备用节点。通常把正在执 行业务的称为活动节点,而作为活动节点的一个备份的则称为备用节点。当活动节点出现问题,导致正在运行的业务(任务)不能正常运行时,备用节点此时就会侦测到,并立即接续活动节点来执行业务。从而实现业务的不中断或短暂中断。

基于docker搭建redis高可用集群版_第1张图片

Redis 一般以主/从方式部署(这里讨论的应用从实例主要用于备份,主实例提供读写)该方式要实现 HA 主要有如下几种方案:keepalived,zookeeper,sentinel。

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

基于docker搭建redis高可用集群版_第2张图片
搭建 Redis 集群

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

创建docker/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

启动集群:

基于docker搭建redis高可用集群版_第3张图片

查看启动结果:

在这里插入图片描述
用桌面工具连接:
基于docker搭建redis高可用集群版_第4张图片

搭建 Sentinel 集群进行监控

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

基于docker搭建redis高可用集群版_第5张图片

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.conf

在这里插入图片描述

port 26379
dir /tmp
sentinel monitor mymaster 127.0.0.1 6379 2
sentinel down-after-milliseconds mymaster 30000
sentinel parallel-syncs mymaster 1
sentinel failover-timeout mymaster 180000
sentinel deny-scripts-reconfig yes

注:mymaster 自定义集群名,其中 127.0.0.1 为 redis-master 的 ip(根据自己的ip进行修改),6379 为 redis-master 的端口,2 为最小投票数(因为有 3 台 Sentinel 所以可以设置成 2)

拷贝三个:

基于docker搭建redis高可用集群版_第6张图片
启动:

在这里插入图片描述
结果:

在这里插入图片描述

用桌面工具连的时候会有明显的区别:

普通单机版:

在这里插入图片描述
高可用集群版:

在这里插入图片描述

你可能感兴趣的:(redis,redis)