首页 > 数据库 >【Azure Redis】因为Redis升级引发了故障转移后的问题讨论

【Azure Redis】因为Redis升级引发了故障转移后的问题讨论

时间:2024-11-17 20:07:35浏览次数:1  
标签:Load Redis 连接数 节点 故障 Azure 连接 客户端

问题描述

Azure Redis是高可用架构,由主节点,从节点 两个节点共同组成。

 

应用客户端连接的Redis服务器的域名,经过DNS解析为上图中Load Balancer的IP,然后连接转发到主节点。发生故障转移(Failover)是LB后的两个Primary和Replica 节点进行了切换,这个期间没有DNS变动。

对于以上情况,有如下疑问:

1:Load Balancer 没有保持和客户端的连接,需要客户端重建连接到新主节点。那为什么Redis连接数指标上一直显示有大量的链接呢?

2:这些大量的连接,是如何产生的呢? 按照应用中的配置计算,达不到上万连接的数量级。如何解释这种情况呢?

3:对于Redis的Server Load指标,每秒创建连接数的并发值,是否有建议呢? 

 

问题解答

1:Load Balancer 没有保持和客户端的连接,需要客户端重建连接到新主节点。那为什么Redis连接数指标上一直显示有大量的链接呢?

【答】:任何时候发生故障转移(主节点离线)或副本节点离线时,其中一个节点会暂时下线。在下线之前,该节点会关闭所有终止于它的客户端连接。预计客户端库会自动重新连接以恢复关闭的连接,Load Balancer 会将该替换连接路由到另一个仍在线的节点。

如果客户端应用程序在切换到第二个缓存时没有正确关闭与原始缓存的连接。如果这些连接确实被放弃且不再接收任何流量或保持活动的 ping,那么服务器将在 10 分钟空闲超时后关闭它们。这些没有正常关闭的连接会导致Redis连接数指标上显示大量连接数。

 

2:这些大量的连接,是如何产生的呢? 按照应用中的配置计算,达不到上万连接的数量级。如何解释这种情况呢?

【答】:缓存内的节点(主节点和副本)发出连接指标,报告的总连接数是每个节点上终止的客户端连接的总和(转发的连接不会被重复计算)。如果这些指标显示的数量高于预期,那么客户端应用程序内部存在连接泄漏,或者 Redis 客户端库内部存在连接泄漏。

 

3:对于Redis的Server Load指标,每秒创建连接数的并发值,是否有建议呢? 

 【答】:为了避免将缓存推到 100% 服务器负载,建议将连接创建速率保持在每秒 30 个以下

当然也可以以更高的速率创建连接(尤其是在更高定价层的Redis上),但这可能会导致Redis Server Load瞬间达到 100% ,并且导致对其它正常的Redis请求的响应变慢,甚至出现Timeout异常。在这种情况下,大部分Redis客户端能正常处理,但是Redisson 无法处理,很可能引发连接风暴。

 

参考资料

Azure Redis 高可用性和灾难恢复  : https://docs.azure.cn/zh-cn/azure-cache-for-redis/cache-high-availability#standard-replication-for-high-availability

 

 

标签:Load,Redis,连接数,节点,故障,Azure,连接,客户端
From: https://www.cnblogs.com/lulight/p/18551019

相关文章

  • Docker部署Redis哨兵
    哨兵,英文名Sentinel,是一个分布式系统,用于对主从结构中的每一台服务器进行监控,当主节点出现故障后通过投票机制来挑选新的主节点,并且将所有的从节点连接到新的主节点上。RedisSentinel包含若干个Sentinel节点和Redis数据节点,每个Sentinel节点会对数据节点和其余Senti......
  • Redis与IO多路复用
    1.Redis与IO多路复用概述1.1Redis的单线程特性Redis是一个高性能的键值存储系统,其核心优势之一便是单线程架构。在Redis6.0之前,其所有网络IO和键值对的读写操作都是由一个主线程顺序串行处理的。这种设计简化了多线程编程中的锁和同步问题,同时避免了上下文切换的开销,提高......
  • Redis7.x安装系列教程(一)单机部署
    Redis7.x安装系列教程(一)单机部署1、前言&环境准备说明本文及接下来3篇将详细介绍在linux环境Redis7.X源码安装系列教程,从最简单的单机部署开始,逐步升级主从部署、哨兵部署和集群部署。环境准备:如果有条件的用云服务器,如果没有的使用VMware虚拟机,我选择的是Centos7,也可以Cen......
  • Redis7.x安装系列教程(二)主从部署&原理详解
    Redis7.x安装系列教程(二)主从部署&原理详解1、什么是主从复制主从复制是指将一台Redis服务器的数据,复制到其他的Redis服务器上。前者称为主节点(master),后者是从节点(slave),数据的复制是单向的,只能是从主节点到从节点。每台Redis服务器未修改配置前都是主节点,一个主节点可以0~N......
  • docker安装单机版redis
    Docker安装Redis方法一、dockerpullredis查找DockerHub上的redis镜像#dockersearchredis这里我们拉取官方的镜像,标签为latest#dockerpullredis:latest(第一次启动Docker-Redis主要是查看Docker里面Redis的默认配置,数据位置,日志位置,配置文件位置)#dockerrun-it......
  • 【Azure App Service】在App Service中调用Stroage SDK上传文件时遇见 System.OutOfMe
    问题描述部署.NET应用到AppService中,应用中调用StorageAccount的SDK上传文件到Blob中。只是比较高频率在UploadAsync方法中遇见:OutOfMemoryException异常信息ERRORMicrosoft.AspNetCore.Server.Kestrel.?[?]-MESSAGE:Connectionid"0HN3UB91BK6BS",Requestid"0H......
  • Gin链接Redis
    packagecacheimport("context""fmt""WchimeGinSystem/conf""log""time""github.com/go-redis/redis/v8")varCTX=context.Background()varRDB*redis.Clientfuncc......
  • Linux系统-redis集群、nacos、nginx、keepalived、mysql开机自启
    一、Redis集群开机自启:如三主三从交叉式redis集群,有两个方法,自行选择。方法一:第一步:分别在各节点添加以下redis.service文件命令:vim/lib/systemd/system/redis_6379.service添加:[Unit]Description=Redispersistentkey-valuedatabaseAfter=network.targetAfter=......
  • 【Azure App Service】在App Service上关于OpenSSH的CVE2024-6387漏洞解答
    问题描述当OpenSSH的版本低于9.8p1,有漏洞风险: Asecurityregression(CVE-2006-5051)wasdiscoveredinOpenSSH'sserver(sshd).Thereisaraceconditionwhichcanleadsshdtohandlesomesignalsinanunsafemanner.Anunauthenticated,remoteattackerma......
  • PostgreSQL libpq的客户端故障转移
    什么是libpqlibpq是应用程序使用PostgreSQL的C接口。libpq是一个库函数的集合,它们允许客户端程序传递查询给PostgreSQL后端服务器并且接收这些查询的结果。libpq也是很多其他PostgreSQL应用接口的底层引擎,包括为C++、Perl、Python、Tcl和ECPG编写的接口。类似于Redis或者Mongo......