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

本文涉及的产品
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 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


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


相关实践学习
通义万相文本绘图与人像美化
本解决方案展示了如何利用自研的通义万相AIGC技术在Web服务中实现先进的图像生成。
7天玩转云服务器
云服务器ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,可降低 IT 成本,提升运维效率。本课程手把手带你了解ECS、掌握基本操作、动手实操快照管理、镜像管理等。了解产品详情: https://www.aliyun.com/product/ecs
相关文章
|
2月前
|
存储 Oracle 关系型数据库
服务器数据恢复—光纤存储上oracle数据库数据恢复案例
一台光纤服务器存储上有16块FC硬盘,上层部署了Oracle数据库。服务器存储前面板2个硬盘指示灯显示异常,存储映射到linux操作系统上的卷挂载不上,业务中断。 通过storage manager查看存储状态,发现逻辑卷状态失败。再查看物理磁盘状态,发现其中一块盘报告“警告”,硬盘指示灯显示异常的2块盘报告“失败”。 将当前存储的完整日志状态备份下来,解析备份出来的存储日志并获得了关于逻辑卷结构的部分信息。
|
2月前
|
安全
基于Reactor模式的高性能服务器之Acceptor组件(处理连接)
本节介绍了对底层 Socket 进行封装的设计与实现,通过 `Socket` 类隐藏系统调用细节,提供简洁、安全、可读性强的接口。重点包括 `Socket` 类的核心作用(管理 `sockfd_`)、成员函数的功能(如绑定地址、监听、接受连接等),以及 `Acceptor` 组件的职责:监听连接、接收新客户端连接并分发给上层处理。同时说明了 `Acceptor` 与 `EventLoop` 和 `TcpServer` 的协作关系,并展示了其成员变量和关键函数的工作机制。
57 2
|
6月前
|
Kubernetes API 网络安全
当node节点kubectl 命令无法连接到 Kubernetes API 服务器
当Node节点上的 `kubectl`无法连接到Kubernetes API服务器时,可以通过以上步骤逐步排查和解决问题。首先确保网络连接正常,验证 `kubeconfig`文件配置正确,检查API服务器和Node节点的状态,最后排除防火墙或网络策略的干扰,并通过重启服务恢复正常连接。通过这些措施,可以有效解决与Kubernetes API服务器通信的常见问题,从而保障集群的正常运行。
370 17
|
7月前
|
存储 SQL 关系型数据库
服务器数据恢复—云服务器上mysql数据库数据恢复案例
某ECS网站服务器,linux操作系统+mysql数据库。mysql数据库采用innodb作为默认存储引擎。 在执行数据库版本更新测试时,操作人员误误将在本来应该在测试库执行的sql脚本在生产库上执行,导致生产库上部分表被truncate,还有部分表中少量数据被delete。
171 25
|
8月前
|
安全 网络安全 数据库
Access denied for user ‘qingtingstpublic’@’171.213.253.88’ (using password: YES)宝塔数据库远程无法连接-宝塔数据远程无法连接的正确解决方案-优雅草央千澈-问题解决
Access denied for user ‘qingtingstpublic’@’171.213.253.88’ (using password: YES)宝塔数据库远程无法连接-宝塔数据远程无法连接的正确解决方案-优雅草央千澈-问题解决
101 28
|
6月前
|
数据库
【YashanDB知识库】数据库获取时间和服务器时间不一致
【YashanDB知识库】数据库获取时间和服务器时间不一致
|
7月前
|
监控 关系型数据库 MySQL
如何解决 MySQL 数据库服务器 CPU 飙升的情况
大家好,我是 V 哥。当 MySQL 数据库服务器 CPU 飙升时,如何快速定位和解决问题至关重要。本文整理了一套实用的排查和优化套路,包括使用系统监控工具、分析慢查询日志、优化 SQL 查询、调整 MySQL 配置参数、优化数据库架构及检查硬件资源等步骤。通过一个电商业务系统的案例,详细展示了从问题发现到解决的全过程,帮助你有效降低 CPU 使用率,提升系统性能。关注 V 哥,掌握更多技术干货。
930 0
|
10月前
|
PHP 数据库 数据安全/隐私保护
布谷直播源码部署服务器关于数据库配置的详细说明
布谷直播系统源码搭建部署时数据库配置明细!
|
10月前
|
存储 关系型数据库 MySQL
查询服务器CPU、内存、磁盘、网络IO、队列、数据库占用空间等等信息
查询服务器CPU、内存、磁盘、网络IO、队列、数据库占用空间等等信息
4466 2
|
9月前
|
存储 Oracle 关系型数据库
服务器数据恢复—华为S5300存储Oracle数据库恢复案例
服务器存储数据恢复环境: 华为S5300存储中有12块FC硬盘,其中11块硬盘作为数据盘组建了一组RAID5阵列,剩下的1块硬盘作为热备盘使用。基于RAID的LUN分配给linux操作系统使用,存放的数据主要是Oracle数据库。 服务器存储故障: RAID5阵列中1块硬盘出现故障离线,热备盘自动激活开始同步数据,在同步数据的过程中又一块硬盘离线,RAID5阵列瘫痪,上层LUN无法使用。

热门文章

最新文章