阿里云ECS无法连接阿里云数据库的一般原因

本文涉及的产品
云数据库 Tair(兼容Redis),内存型 2GB
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
云数据库 MongoDB,独享型 2核8GB
推荐场景:
构建全方位客户视图
简介: 阿里云的数据库种类较多,但是网络连接问题出现以及排查和解决方式大部分是一样的,所以以下以RDS控制台为例子进行说明,控制台会与redis,mongodb,ocs等有差别,主要目的是为了举一反三

作者:手辨


实为吾之愚见,望诸君酌之!闻过则喜,与君共勉


适用于:

1,跨地域/本地主机如何公网访问经典/vpc网络的rds?

2,经典网络的ecs如何内网和公网访问经典/vpc网络的rds?

3,vpc网络的ecs如何公网和内网访问经典/vpc网络下的rds?


4,经典/vpc网络的ecs如何内网访问经典/vpc网络的mongodb?


5,经典/vpc网络的ecs如何内网访问经典/vpc网络的redis?


6,经典/vpc网络的ecs如何内网访问经典/vpc网络的ocs(memcached)?




阿里云的数据库种类较多,但是网络连接问题出现以及排查和解决方式大部分是一样的,所以以下以RDS控制台为例子进行说明, 控制台会与redis,mongodb,ocs等有差别 ,主要目的是为了举一反三

第一章 使用阿里云ECS和数据库前需要了解的相关概念


1.1地域和可用区


地域:地域是指物理的数据中心,类似下面的表格

地域名称

华北 1

华北 2

华北 3

华东 1

华东 2

华南 1

所在城市

青岛

北京

张家口

杭州

上海

深圳

RegionId

cn-qingdao

cn-beijing

cn-zhangjiakou

cn-hangzhou

cn-shanghai

cn-shenzhen


可用区:可用区是指在同一地域内,电力和网络互相独立的物理区域


详细说明看这里:


https://help.aliyun.com/document_detail/40654.html?spm=5176.doc51704.6.543.jd1ts9


1.2内网


同地域内的云资源互相访问地址,不同可用区也可以内网访问,但是不同地域正常是不可以内网访问的,不同地域需要公网访问


详细说明看这里:


https://help.aliyun.com/document_detail/25385.html?spm=5176.doc40654.6.557.68NSeb


1.3外网


跨地域之间云资源互相访问的地址,不可以内网访问,可以立即为满足公网访问的地址


1.4安全组


Ecs所特有可以理解为防火墙,区别于windows或者linux系统内部的防火墙,安全组和系统内部防火墙互不影响


详细说明看这里:


https://help.aliyun.com/document_detail/25387.html?spm=5176.doc25385.6.560.F1KUoi



1.5vpc(专有网络)


阿里云的内网隔离的私有网络,同一个vpc内,不同交换机默认是互通的,不同vpc下正常是无法联通的


详细说明看这里:


https://help.aliyun.com/document_detail/34217.html?spm=5176.doc55051.6.539.4PVhVn


1.6白名单


Rds所特有,ip地址写入白名单之后,主机才可以进行访问


https://help.aliyun.com/document_detail/26198.html?spm=5176.product26090.6.686.2Y3o4E


1.7网络类型


经典网络以及专有网络(vpc),经典网络区别于专有网络,经典网络中的云服务在网络上不进行隔离


区别的详细说明看这里:


https://help.aliyun.com/document_detail/26194.html?spm=5176.product26090.6.682.2mjTIX


1.8 Â 访问模式


Rds特有分为高安全模式和标准模式


详细说明看这里:


https://help.aliyun.com/document_detail/26193.html?spm=5176.doc26194.6.681.iNVL3c


第二章 ECS连接RDS问题


以下是指同地域之间的的阿里云ecs访问rds的说明
,皆为正常情况,排除了特殊配置的情况,以下四类情况同样适用于同地域ECS连接云MONGODB,ECS连接云REDIS,ECS连接云OCS(MEMCACHED),并且也适用于不同地域之间连接的问题排查,需要注意的是:


1,云MONGODB,云REDIS,云OCS正常只支持内网连接,所以跨地域公网访问时不支持的,本地主机通过公网访问也是不支持的


2,云REDIS,云OCS在切换到vpc后,是不支持再切换到经典网络的


3,RDS,云MONGODB(复制集版)是可以从经典网络切换到vpc并且也可以从vpc切换到经典网络的


4,云MONGODB(集群版)创建完成后不支持网络类型切换


2.1.1经典网络ECS访问经典网络RDS异常


情况描述:ECS是经典网络(公网和内网都有),RDS是经典网络(公网和内网都有),如下:


Ecs的网络配置:


23d77e9886de1809f85bad518d94aa5a1f363b55


Rds的网络配置:


07e363d81bcb5c1be92bc5db6219cbc7fb3fa8d6


693c5f7b009dde8cdcade9d58a32f2c236646c0f


通过ECS和RDS的配置,它们网络类型相同,又都存在公网和内网地址,所以理论上公网和内网的访问都是没问题的,测试如下:


1d7e97934869c582fe1c97fcda4dd6c0f6c3a7a1


下面模拟一个不可以正常连接的例子进行连通性测试:


Ecs连接rds内网:


5509a9400d488a4c940def2855b6e43449fdd0a0


通过ping内网地址和telnet内网地址,获取了如上的信息,上面说明了如下两点:


1,该rds目前的内网地址是10.50.144.213


2,通过3306端口连接10.50.144.213无法连接


网络类型相同,而无法连接,此类问题一般是ECS的内部的防火墙(或者其他安全软件)或者ECS的安全组设置以及RDS的白名单设置的问题,按照这个思路,往下查:


自带防火墙:


dd690ea1942f8450f0c7443834c1909224719931


结果:状态关闭


Ecs的安全组设置:


1d4722befae191ac283bbd07edcbdab88928d61a


通过安全组可以看到,内网出方向的规则中有一条规则如上,该规则会拒绝发往发往10.50.144.213且目的端口是3306的数据包,所以从ECS发出来的数据包就不可达了


RDS的白名单配置(rds目前提供了高安全的白名单模式,如果是高安全白名单模式,经典网络白名单分组适用于经典网络以及外网主机访问,而专有网络白名单分组适用于专有网络的主机访问):


e29459966613ab5af3423550427be815163faad3


通过白名单可以看到,rds的白名单设置只允许来着127.0.0.0的访问,其他的地址是不允许的


通过上面的查看,一方面是ecs的安全组设置有问题,一方面是rds的白名单设置有问题,先更改ecs的安全组,删除之前的规则(保持rds的白名单不改动),进行测试:


cdd2a70207b9e169cfa97fd790a2f2528ddf7452


红框中的提示是:#28000ip not in whitelist,再结合之前查到的rds的白名单问题,可以判断这是rds的白名单阻止了该ECS的访问,下面修改RDS的白名单,将ecs的内网ip地址10.132.35.143加入:


31bae6998effcfbb02a117a5328a1af9643513b8


再次测试:


ddaeb206f15f7f2e3fef1ddcc28b8324b76ce102


测试正常了,同网络类型的公网访问问题排查方法同上,同地域网络类型相同而无法连接的问题一般是源端或者目标端的安全限制导致的


2.1.2经典网络ECS访问专有网络RDS异常


情况描述:ECS是经典网络(公网和内网都有),RDS是专有网络(公网和内网都有),如下:


ECS网络配置:


23d77e9886de1809f85bad518d94aa5a1f363b55


RDS网络配置:


a050afac721a58414e4e10647b11b34b91bb0523


aabfd465d513ef6187ff1138c307b31cb81339d5


通过上面的信息可以看到,ECS与RDS的网络类型是不同的,ecs是经典网络,rds是专有网络(vpc),这样的话正常内网是无法访问的,只有公网才可以正常访问,测试如下:


c55d159b8505da88baf95ec1438a87022cd2d4f5


376852471846065661bc769c2520397bc9f5bc11


此类情况的解决办法:


1,使用rds的公网地址进行访问


2,如果想使用内网访问,必须是相同网络类型才可以,因为ecs无法直接切换网络类型,则比较好的解决办法就是把rds切换为与ecs相同的网络类型(经典网络),并设置好安全组防火墙已经白名单,具体操作方法如下:


7d8d1b72436c6d739a1b28e1443ae04cf7d4e5a6


71063df3f343072a9719aa0ce2711237c0591631


3710da72521eb698fd3a49a4897977473941f908


再次测试:


e89741c96c4680f619d3f96fd9990bba8e39703c


2.1.3专有网络ECS内网访问经典网络RDS异常


情况描述:ECS是专有网络(只有内网,没有eip),RDS是经典网络(公网和内网都有),如下:


ECS网络配置:


5996a1aaa8e41eaa0dbcbee101fe1d935d4624da


Rds网络配置:


07e363d81bcb5c1be92bc5db6219cbc7fb3fa8d6


693c5f7b009dde8cdcade9d58a32f2c236646c0f


通过上面的信息可以看到,ECS与RDS的网络类型是不同的,ecs是专有网络,rds是经典网络,这样的话与2.1.2相同,也是正常内网是无法访问的,又因为ecs没有eip,所以rds的公网也是无法访问的。


解决办法:


1,配置ECSeip(取决于购买时的配置,此处我购买时选择的不分配公网地址),使用rds的公网访问RDS,操作如下:


1baa79190e235892e0b023dc57510eb973015690


362d574ab4bc446ec0dbe8b810f2cc0ac4782085


92a2d9540f1d53c73ee1f76c503d44145fb0a0d8


测试如下:


67b30d19fce5cea3ee50248951f5739a5f43c5f7


2,如果需要内网的话,需要将rds切换到与ecs相同的vpc下才可以(交换机可以不同,但是交换机必须在同一个vpc下),具体操作如下:


Ecs所在vpc以及交换机:


1c94419ecdb6b45d5f12ee71b7504e240e90383f


相应的vpc以及交换机信息


c1e3e48967469b44df13018ab45316219628f12d


8cf53e1242d1ef482b422c4b2dd0b3bacaacee32


Rds进行网络类型切换:


2f6f0fa9033f8dd8b8fd252fe474d40639fd5f6c


26cea46d3b7bbb781ed1f02a6249f53a711e2dcc


a0ff27905e17a49af5a985c11b8cfd5e812932c1


测试内网如下:


120ab48baffa7bb9e5de29b46e40c523dec6fc45


2.1.4专有网络ECS内网访问专有网络RDS异常


情况描述:ECS是专有网络(只有内网,没有eip),RDS是专有网络(公网和内网都有),如下:


Ecs的网络配置:


3756a6d5b18da4fcf2d4b9c7ee898e07977574f1


0db5dc31a152babf3051dc0d966adb0bfe993e66


RDS网络配置:


13765986cc0aa8ac00cf023358ab756976871fee


92bdb3a17f2fc8592129a962add03c101fe7585c


通过上面的信息,可以看到ECS和RDS都是同一个vpc下的,但是他们内网可以连接吗?外网可以吗?做个测试(测试公网需要申请eip):


绑定eip:


3f4fca6d50c3e787782fc7c4dbabe54fd84438fa


43ab14ae3a1210f2f4a77e462cc2cdb2dc368556


0505624cd45228cc7abc2b7caaa7ea5b95fe4c82


45cc69c9a3f281fe73137cf7118685175395a8e3




内网测试:


7bfa7bc24828dab7f13e757320959de5eee08d3c


结果:内网测试不通


外网测试:


0e9fe0cb27237df44f57ccbf13159d05c89052c5


结果:外网测试可以联通,只是提示白名单问题


内网无法连通原因:通过上面的ecs的rds的网络类型,可以看到RDS和ECS的vpc是不同的,所以他们处在两个不同的vpc下,所以他们无法连通


下面将RDS切换到与ecs相同的vpc下再测试(ecs无法直接切换vpc):


639887b3f8474a39c86ce1d0a6ed599b3acd2fce


再次内网测试:


f522c08c421bdae7b377add6e9715de2933e4b9c


结果:内网测试可以联通,只是提示白名单问题



第三章 问题延伸


通过第二章的测试和验证,当选择ECS和RDS时,如果需要内网正常连接,可能需要满足(以下均不包括特殊情况):


1,同地域如果需要内网连接,则网络类型要相同,如果是经典网络ecs和rds都为经典网络才可以内网连接,如果是vpc网络,ecs和rds必须是在同一个vpc下才可以内网连接


2,不同地域时,经典网络以及VPC网络的ecs和rds一般需要公网地址进行连接,不同地域无法内网连接


3,云mongodb,云redis,云ocs此类只允许内网连接,一般无法通过公网来连接,所以ecs需要与其在同一地域下,


4,当遇到某个ECS连接数据库出现问题时,可以尝试使用如下方法进行分析:


1)“ping 实例地址”:解析出ip地址即可,如下


5e3df02179222adcdaaf1844d82af1fd4551d1fc


2)“telnet 实例地址 端口” 或者”telnet ip 端口”


5e81b7cf47e0ec4aa1ab0a635ac934c0389278d1


Ps: 28000ip not in whitelist是因为白名单未设置,可以看另一篇:


https://yq.aliyun.com/articles/158321?spm=5176.100240.searchblog.8.XNCQSl


3)如果telnet失败(失败如下,表现为长时间无反应或者超时):


6f0647dde629bdda32cdde4c9dca3e73ac40349d


可以执行route -n检查下路由信息


21af4cd026e35b112fae12e37c6473890d9a391e


如果路由信息也没问题,可以考虑检查下网络类型以及安全限制方面是否符合,如果网络类型和安全限制也没有问题的话,需要检查系统是否有其他的特殊配置,尤其是网络方面的特殊配置(回忆下我在这台主机上做过什么?)


相关实践学习
2分钟自动化部署人生模拟器
本场景将带你借助云效流水线Flow实现人生模拟器小游戏的自动化部署
7天玩转云服务器
云服务器ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,可降低 IT 成本,提升运维效率。本课程手把手带你了解ECS、掌握基本操作、动手实操快照管理、镜像管理等。了解产品详情: https://www.aliyun.com/product/ecs
相关文章
|
8天前
|
机器学习/深度学习 人工智能 弹性计算
什么是阿里云GPU云服务器?GPU服务器优势、使用和租赁费用整理
阿里云GPU云服务器提供强大的GPU算力,适用于深度学习、科学计算、图形可视化和视频处理等多种场景。作为亚太领先的云服务提供商,阿里云的GPU云服务器具备灵活的资源配置、高安全性和易用性,支持多种计费模式,帮助企业高效应对计算密集型任务。
|
10天前
|
存储 分布式计算 固态存储
阿里云2核16G、4核32G、8核64G配置云服务器租用收费标准与活动价格参考
2核16G、8核64G、4核32G配置的云服务器处理器与内存比为1:8,这种配比的云服务器一般适用于数据分析与挖掘,Hadoop、Spark集群和数据库,缓存等内存密集型场景,因此,多为企业级用户选择。目前2核16G配置按量收费最低收费标准为0.54元/小时,按月租用标准收费标准为260.44元/1个月。4核32G配置的阿里云服务器按量收费标准最低为1.08元/小时,按月租用标准收费标准为520.88元/1个月。8核64G配置的阿里云服务器按量收费标准最低为2.17元/小时,按月租用标准收费标准为1041.77元/1个月。本文介绍这些配置的最新租用收费标准与活动价格情况,以供参考。
|
8天前
|
机器学习/深度学习 人工智能 弹性计算
阿里云GPU服务器全解析_GPU价格收费标准_GPU优势和使用说明
阿里云GPU云服务器提供强大的GPU算力,适用于深度学习、科学计算、图形可视化和视频处理等场景。作为亚太领先的云服务商,阿里云GPU云服务器具备高灵活性、易用性、容灾备份、安全性和成本效益,支持多种实例规格,满足不同业务需求。
|
16天前
|
弹性计算
阿里云2核16G服务器多少钱一年?亲测价格查询1个月和1小时收费标准
阿里云2核16G服务器提供多种ECS实例规格,内存型r8i实例1年6折优惠价为1901元,按月收费334.19元,按小时收费0.696221元。更多规格及详细报价请访问阿里云ECS页面。
54 9
|
13天前
|
监控 Ubuntu Linux
使用VSCode通过SSH远程登录阿里云Linux服务器异常崩溃
通过 VSCode 的 Remote - SSH 插件远程连接阿里云 Ubuntu 22 服务器时,会因高 CPU 使用率导致连接断开。经排查发现,VSCode 连接根目录 ".." 时会频繁调用"rg"(ripgrep)进行文件搜索,导致 CPU 负载过高。解决方法是将连接目录改为"root"(或其他具体的路径),避免不必要的文件检索,从而恢复正常连接。
|
16天前
|
弹性计算 异构计算
2024年阿里云GPU服务器多少钱1小时?亲测价格查询方法
2024年阿里云GPU服务器每小时收费因实例规格不同而异。可通过阿里云GPU服务器页面选择“按量付费”查看具体价格。例如,NVIDIA A100的gn7e实例为34.742元/小时,NVIDIA A10的gn7i实例为12.710156元/小时。更多详情请访问阿里云官网。
56 2
|
17天前
|
PHP 数据库 数据安全/隐私保护
布谷直播源码部署服务器关于数据库配置的详细说明
布谷直播系统源码搭建部署时数据库配置明细!
|
19天前
|
SQL Java 数据库连接
在Java应用中,数据库访问常成为性能瓶颈。连接池技术通过预建立并复用数据库连接,有效减少连接开销,提升访问效率
在Java应用中,数据库访问常成为性能瓶颈。连接池技术通过预建立并复用数据库连接,有效减少连接开销,提升访问效率。本文介绍了连接池的工作原理、优势及实现方法,并提供了HikariCP的示例代码。
32 3
|
19天前
|
Java 数据库连接 数据库
深入探讨Java连接池技术如何通过复用数据库连接、减少连接建立和断开的开销,从而显著提升系统性能
在Java应用开发中,数据库操作常成为性能瓶颈。本文通过问题解答形式,深入探讨Java连接池技术如何通过复用数据库连接、减少连接建立和断开的开销,从而显著提升系统性能。文章介绍了连接池的优势、选择和使用方法,以及优化配置的技巧。
17 1
|
13天前
|
弹性计算
阿里云2核16G云服务器多少钱?亲测ECS内存型r8i租赁价格
阿里云2核16G云服务器,内存型r8i实例1年6折优惠后价格为1901元,月付334.19元,按小时计费0.696221元。更多配置及优惠详情,请访问阿里云ECS页面。