首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >ASP.NET Core分布式缓存Redis主从Sentinel哨兵模式实战演练

ASP.NET Core分布式缓存Redis主从Sentinel哨兵模式实战演练

作者头像
跟着阿笨一起玩NET
发布2021-02-02 11:38:04
9870
发布2021-02-02 11:38:04
举报

一、课程介绍

Redis是被广泛使用的基础软件之一。对于工程师和,架构师,运维人员来说,了解Redis的高可用方案和背后的原理,是必备的基础知识。 “高可用性”(High Availability)通常来描述一个系统经过专门的设计,从而减少停工时间,而保持其服务的高度可用性。 Redis-Sentinel是Redis官方推荐的高可用性(HA)解决方案之一,当用Redis做Master-Slave(主从复制)的高可用方案时,假如master宕机了,它能监控多个master-slave集群,发现master宕机后能进行自动切换。Redis主从切换技术的方法是:当主服务器宕机后,需要手动把一台从服务器切换为主服务器,这就需要人工干预,费事费力,还会造成一段时间内服务不可用。这不是一种推荐的方式,更多时候,我们优先考虑哨兵模式。 1.1、本次分享课程包含知识点如下: ★Redis的三种集群解决方案对比。 ★Redis哨兵模式概述。 ★如何使用Dcoker部署Redis主从切换哨兵模式(一主二从三哨兵)。 1.2、一句话总结今天我们学习达到的目标 在ASP.NET Core中如何使用分布式缓存Redis主从Sentinel哨兵模式实现故障转移。

二、Redis的三种集群解决方案对比

redis有三种集群方式:主从复制,哨兵模式和集群。 1)、Redis主从复制特点 Redis主从复制不具备自动容错和恢复功能,主机从机的宕机都会导致前端部分读写请求失败,需要等待机器重启或者手动切换前端的IP才能恢复。 2)、Redis主从切换哨兵模式特点 哨兵Sentinel基于主从复制模式,所以优缺点很多重合。最大的优点就是可以主从切换,进行故障转移。缺点就是扩容很难。 3)、Redis-Cluster 集群特点 redis-cluster 集群模式,也是大型企业中使用的模式,无中心架构,支持动态扩容,具备哨兵与主从的优点,客户端只需要连接集群中任意一个节点。

三、Redis哨兵模式概述

  有了主从复制的实现以后,如果想对主服务器进行监控,那么在redis2.6以后提供了一个"哨兵"的机制。顾名思义,哨兵的含义就是监控redis系统的运行状态。可以启动多个哨兵,去监控redis数据库的运行状态。其主要功能有两点:     a、监控所有节点数据库是否在正常运行。     b、master数据库出现故障时,可以自动通过投票机制,从slave节点中选举新的master,实现将从数据库转换为主数据库的自动切换。 一个一主多从的Redis系统中,可以使用多个哨兵进行监控任务以保证系统足够稳健。此时,不仅哨兵会同时监控主数据库和从数据库,哨兵之间也会相互监控。在这里,建议大家哨兵至少部署3个,并且使用奇数个哨兵。Redis Sentinel 的节点数量要满足 2n + 1 (n>=1)的奇数个,所以最小数量是3个! 哨兵模式是一种特殊的模式,首先Redis提供了哨兵的命令,哨兵是一个独立的进程,作为进程,它会独立运行。其原理是哨兵通过发送命令,等待Redis服务器响应,从而监控运行的多个Redis实例。

这里的哨兵有两个作用 1)、通过发送命令,让Redis服务器返回监控其运行状态,包括主服务器和从服务器。 2)、当哨兵监测到master宕机,会自动将slave切换成master,然后通过发布订阅模式通知其他的从服务器,修改配置文件,让它们切换主机。

四、如何使用Dcoker部署Redis主从切换哨兵模式(一主二从三哨兵)

Redis主从结构搭建成功了,系统的可用性变高了,但是如果主发生故障,需要人工手动切换从机为主机。这种切换工作不仅浪费人力资源,更大的影响是主从切换期间这段时间redis是无法对外提供服务的。因此,哨兵系统被开发出来了,哨兵可以在主发生故障后,自动进行故障转移,从从机里选出一台升级为主机,并持续监听着原来的主机,当原来的主机恢复后,会将其作为新主的从机。

一主(master)二从(slave)三哨兵(sentinel)的配置目标, 如下

一主(master)二从(slave)三哨兵(sentinel)

五、ASP.NET Core中使用分布式缓存Redis主从Sentinel哨兵模式

一般实际工作中Redis都是由我们的运维DB工程师帮我们去搭建环境,但是在刚开始的学习过程中,可能需要我们自行去搭建环境哦,这里为了方便起见,阿笨强烈推荐大家采用Docker容器化的方式进行搭建环境。 具体的环境搭建过程请自行研究和攻克一下哦(刚开始需要做好一定心里准备,如果对概念理解不深刻的话,Redis哨兵环境搭建还是比较复杂和繁琐,由于Redis跟平台和开发语言没有任何的关系,所以建议大家还是事先参考一些博客后才自行采取行动噢)。 简单的主从复制架构在 master 故障后会不可用,Redis 官方提供了哨兵(sentinel)机制自动实现主备切换保证高可用。 哨兵机制通过一组哨兵节点监控主从节点的运行状态,并在主节点故障后选举新的主节点。

六、实现步骤

关于.NET Core如何使用Redis的哨兵模式,这里阿笨推荐大家使用CSRedisCore。以下步骤前提条件就是你已经配置到了Redis的哨兵模式,配置推荐大家可以采用Docker的方式相对简单一些,感兴趣的话大家自行百度攻克一下。阿笨这里就只介绍如何去使用功能。

1)、配置连接字符串SentinelConnectString

2、将csredis实例注册到管道中

3、使用redis功能,对调用方在功能上的使用完全透明化,无任何差异。

七、总结

redis通过主从复制来实现高可用,但是发生故障时需要人工进行主从切换,效率低下。哨兵机制实现了redis主从的自动切换,提高了redis集群的可用性,提高了redis集群的故障转移效率。 我们可以看到哨兵机制是有缺点的:   1.主从服务器的数据要经常进行主从复制,这样造成性能下降。   2.当主服务器宕机后,从服务器切换成主服务器的那段时间,服务是不能用的。 为了保证redis的真真的高可用官方推荐使用redis-cluster集群。 一般的项目我们采用redis的哨兵模式架构(推荐采用一主二从三哨兵)就可以满足业务要求了,阿笨水平也有限,关于redis的高可用cluster集群的运用大家就根据个人的项目架构要求去研究和探索了。 希望本次分享课程能够让大家有所收获!最后送大家一句话:希望大家在.NET Core的学习道路上一直跟着阿笨坚持下去。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2021-01-27 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、课程介绍
  • 二、Redis的三种集群解决方案对比
  • 三、Redis哨兵模式概述
  • 四、如何使用Dcoker部署Redis主从切换哨兵模式(一主二从三哨兵)
  • 五、ASP.NET Core中使用分布式缓存Redis主从Sentinel哨兵模式
  • 六、实现步骤
相关产品与服务
云数据库 Redis
腾讯云数据库 Redis(TencentDB for Redis)是腾讯云打造的兼容 Redis 协议的缓存和存储服务。丰富的数据结构能帮助您完成不同类型的业务场景开发。支持主从热备,提供自动容灾切换、数据备份、故障迁移、实例监控、在线扩容、数据回档等全套的数据库服务。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档