【Azure 应用服务】App Service 项目部署成功后,应用连接 Azure Redis时报错 Could not get a resource from the pool
问题描述
App Service 项目部署成功后,需要连接到同在云上的Redis服务, Redis启动了专用终结点,只能在于Redis同一个VNET(虚拟网络)的资源能够访问。在进入App Service的Bash中使用Paping测试Redis的网络连通性,验证是通的。但是为什么应用程序中一直出错呢?
Bash中使用Paping:

应用程序中的错误信息:
[INFO] org.springframework.data.redis.connection.PoolException: Could not get a resource from the pool;
nested exception is io.lettuce.core.RedisConnectionException: Unable to connect to xxxxxxx.redis.cache.chinacloudapi.cn:6380 at org.springframework.data.redis.connection.lettuce.LettucePoolingConnectionProvider.getConnection(LettucePoolingConnectionProvider.java:86)
~[spring-data-redis-2.0.6.RELEASE.jar!/:2.0.6.RELEASE]
问题分析
App Service配置了VNET后,可以在Bash中paping通Redis服务,表示从App Service到Redis之间的网络链路是相通的。但是为什么在应用中就是连接不上Redis呢?
仔细查看App Service的文档后,是由于应用与 VNet 集成后,它将使用 VNet 配置的 DNS 服务器。 默认情况下,应用不能用于 Azure DNS 专用区域。需要添加设置(WEBSITE_VNET_ROUTE_ALL & WEBSITE_DNS_SERVER )将所有出站调用从应用发送到 VNet,并允许应用访问 Azure DNS 专用区域。
添加配置参数如下后,应用调用Redis成功。
WEBSITE_VNET_ROUTE_ALL = 1
WEBSITE_DNS_SERVER = 168.63.129.16
但是在App Service for Linux环境中,可以通过全部路由( Route All) 功能来代替 WEBSITE_VNET_ROUTE_ALL 配置。

注意:配置应用程序路由时,可将所有流量或仅将专用流量路由到 VNet。 通过“全部路由(Route All)”设置来配置此设置。
参考资料:
将应用与 Azure 虚拟网络集成:https://docs.microsoft.com/zh-cn/azure/app-service/web-sites-integrate-with-vnet#regional-vnet-integration
Azure DNS 专用区域: https://docs.azure.cn/zh-cn/app-service/web-sites-integrate-with-vnet#azure-dns-private-zones
【Azure 应用服务】App Service 项目部署成功后,应用连接 Azure Redis时报错 Could not get a resource from the pool的更多相关文章
- 【应用服务 App Service】当遇见某些域名在Azure App Service中无法解析的错误,可以通过设置指定DNS解析服务器来解决
问题情形 当访问部署在Azure App Service中的应用返回 "The remote name could not be resolved: ''xxxxxx.com'" ...
- 【应用服务 App Service】Azure 应用服务测试网络访问其他域名及请求超时限制(4分钟 ≈ 230秒)
测试App Service是否可以访问其他DNS 当应用服务(Azure App Service)创建完成后,想通过ping命令来查看是否可以访问其他站点或解析DNS,但是发现ping命令无法使用.这 ...
- 【应用服务 App Service】快速获取DUMP文件(App Service for Windows(.NET/.NET Core))
问题情形 当应用在Azure 应用服务App Service中运行时,有时候出现CPU,Memory很高,但是没有明显的5XX错误和异常日志,有时就是有异常但是也不能明确的指出具体的代码错误.当面临这 ...
- 【应用服务 App Service】App Service使用Git部署时,遇见500错误
问题描述 Azure App Service在部署的时候支持多种方式,如Zip,VS 2019, VS Code,或者是Git部署,当使用Git部署遇见500错误时,可以通过其他的部署方式来验证是否也 ...
- 【应用服务 App Service】App Service中抓取网络日志
问题描述 众所周知,Azure App Service是一种PaaS服务,也就是说,IaaS层面的所有内容都由平台维护,所以使用App Service的我们根本无法触碰到远行程序的虚拟机(VM), 所 ...
- springboot项目启动成功后执行一段代码的两种方式
springboot项目启动成功后执行一段代码的两种方式 实现ApplicationRunner接口 package com.lnjecit.lifecycle; import org.springf ...
- Gerrit部署成功后project下不显示clone地址
gerrit部署成功后使用admin账号登录,在project All-projects下不显示clone地址,新建仓库也不显示. 原因是:默认安装没有安装插件download-commands 安装 ...
- python作业设计:输入用户名密码,认证成功后显示欢迎信息,输错三次后锁定
作业需求: 1.输入用户名密码 2.认证成功后显示欢迎信息 3.输错三次后锁定实现思路: 1.判断用户是否在黑名单,如果在黑名单提示账号锁定. 2.判断用户是否存在,如果不存在提示账号不存在. 3.判 ...
- idea启动服务连接mysql后 Navicat连接mysql就报错2013-Lost connection toMySQL server at
我是使用navicat的windows端 连接centos下mysql服务器 第一次常规连接mysql正常,idea启动服务连接mysql后 Navicat连接mysql就报错2013-Lost co ...
- 【Azure 应用服务】一个 App Service 同时部署运行两个及多个 Java 应用程序(Jar包)
问题描述 如何在一个AppService下同时部署运行多个Java 应用程序呢? 问题解答 因为App Service的默认根目录为 wwwroot.如果需要运行多个Java 应用程序,需要在 www ...
随机推荐
- 分布式日志追踪ID实战 | 京东物流技术团队
本文通过介绍分布式应用下各个场景的全局日志ID透传思路,以及介绍分布式日志追踪ID简单实现原理和实战效果,从而达到通过提高日志查询排查问题的效率. 背景 开发排查系统问题用得最多的手段就是查看系统日志 ...
- 介绍一个golang库:zstd
zstd是facebook开源的一个C语言的压缩库. 从官方提供的压测数据看,它的压缩速度与众所周知的以快著称的snappy的压缩速度几乎持平,但是压缩率上比老牌的gzip还要高. 再看看zstd吊打 ...
- 【K哥爬虫普法】北京某公司惨遭黑客攻击13000000余次,连夜报警……
我国目前并未出台专门针对网络爬虫技术的法律规范,但在司法实践中,相关判决已屡见不鲜,K 哥特设了"K哥爬虫普法"专栏,本栏目通过对真实案例的分析,旨在提高广大爬虫工程师的法律意识, ...
- 【主流技术】15 分钟掌握 Redis 的安装部署和基本特性
目录 前言 一.Redis 概述 1.1Redis 是什么? 1.2Redis 能做什么? 1.3基础知识 二.Redis 安装与基本命令 2.1Windows 安装 方式一 方式二 2.2Linux ...
- PE结构:VA&RVA&FOA 转换复习
复习一下,不然会忘 1.imagebase 映像基地址 ,默认是0x400000 2.va 虚拟地址,载入OD后的地址,已经映射到内存的地址. 计算实际装入地址 VA imagebase (映像基址) ...
- 操作系统开发:BIOS/MBR基础与调试
这里在实验之前需要下载 Bochs-win32-2.6.11 作者使用的是Linux版本的,在Linux写代码不太舒服,所以最好在Windows上做实验,下载好虚拟机以后还需要下载Nasm汇编器,以及 ...
- C/C++ 操作注册表与服务
枚举注册表启动项: 通过添加注册表启动项,可以很方便地完成自启动,常用的启动位置有CurrentVersion,BootExecute,Active Setup. #include <stdio ...
- PHP实现字符串反转
方法一 用自带的函数strrev echo strrev('hello'); 方法二 自写循环方法 $str = 'hello'; $i = strlen($str); $newStr=''; whi ...
- glTexImage2D: 读取位置XXX时发生访问冲突
在跟着Learn OpenGL教程学习纹理部分时,大家或许会加载一张自己喜欢的图片作为纹理,但加载某些图片时会报以下错误: 读取位置XXX时发生访问冲突. 这个错误通常出现在以下位置: uns ...
- JAVA生成随机数工具类RandomStringUtils详解
public static String random(int count, boolean letters, boolean numbers) /** * count 创建一个随机字符串,其长度是指 ...