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

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

适用于:

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的网络配置:

 

Rds的网络配置:

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

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

Ecs连接rds内网:

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

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

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

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

自带防火墙:

结果:状态关闭

Ecs的安全组设置:

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

RDS的白名单配置:

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

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

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

再次测试:

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

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

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

ECS网络配置:

RDS网络配置:

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

此类情况的解决办法:

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

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

再次测试:

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

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

ECS网络配置:

Rds网络配置:

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

解决办法:

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

测试如下:

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

Ecs所在vpc以及交换机:

相应的vpc以及交换机信息

Rds进行网络类型切换:

测试内网如下:

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

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

Ecs的网络配置:

RDS网络配置:

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

绑定eip:

内网测试:

结果:内网测试不通

外网测试:

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

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

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

再次内网测试:

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

 

第三章  问题延伸

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

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

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

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

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

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

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

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

?spm=5176.100240.searchblog.8.XNCQSl

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

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

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

时间: 2024-11-29 23:14:59

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

java 往新浪云部署 一直连接不上数据库 用户名和密码都已经配置对了呀,求大神解决

问题描述 java 往新浪云部署 一直连接不上数据库 用户名和密码都已经配置对了呀,求大神解决 报错内容 Caused by: org.springframework.web.util.NestedServletException: Request processing failed; nested exception is org.springframework.transaction.CannotCreateTransactionException: Could not open JDBC

阿里云ecs服务器中安装部署node.js的步骤_node.js

首先下载了putty用来连接服务器的控制台,还有flashFXP用来上传文件.下面是详细的步骤,一起来看看. 1.下载node.js 下载地址:node.js 千万不要用命令行下载,太慢. 下载完成后上传至服务器. 2.解压 进入到node.js安装包的目录,然后输入命令: tar zxf node-latest.tar.gz 3.编译 进入解压后的文件夹 输入命令: ./configure 多等一会 再输入命令: make 4.安装 命令: make install 再等一会. 结束后,输入

阿里云ECS服务器配置怎么选择?(新手教程)

阿里云ECS服务器配置怎么选择? 购买前请先领取阿里云幸运券 随机优惠还能百分百中奖小米电源一个! 阿里云ECS服务器节点问题   选择青岛节点还是杭州节点? 阿里云节点地区所对应的城市如下,华北地区:北京,天津,河北,山西,内蒙古. 华东地区:上海,江苏,浙江,山东,安徽,华南地区:广东,广西,海南,福建 杭州节点 是属于华东地区拓扑 ,青岛节点 是属于华北地区拓扑 .如果你网站访问者大部分来自华北 那还是选择青岛,相反就选择杭州! 如果没有自己上方没有自己所在的地区 那么我们就近选择节点,丝

【云中沙箱】如何进行阿里云ECS的备份和恢复?

如何进行阿里云ECS的备份和恢复? 云中沙箱实验"ECS的磁盘挂载.快照及自定义镜像",教您快速掌握阿里云ECS的备份和恢复.   云中沙箱,阿里云官方实验平台.网址:http://lab.aliyunedu.net       一.基本概念   阿里云ECS实例云盘         阿里云ECS实例的云盘提供数据块级别的数据存储,采用三副本的分布式机制,为 ECS 实例提供 99.9999999% 的数据可靠性保证.ECS云盘既可以单独使用,又可以组合使用,从而满足不同应用场景的需求

.net 连接阿里云上的mysql数据库一直报错

问题描述 .net 连接阿里云上的mysql数据库一直报错 代码如下: using MySql.Data; using MySql.Data.MySqlClient; static void Main(string[] args) { string str = "Database=chu;Data Source=rdsja29d3bs0j0z1jg55.mysql.rds.aliyuncs.com;Port=3306;User Id=XXX;Password=XXX;Charset=utf8&q

阿里云ECS建站起步要点二:外部SSH工具连接ECS注意事项

虽然打开实例本身提供一个终端命令管理页面,但我仍然需要使用外部SSH工具进行连接,便于命令的复制粘贴等,体验也好很多.请注意:由于初次使用阿里云ECS,开始没有搞清实例密码与终端密码的区分,因此会出现外部SSH工具无法连接的情况.(网上有不少人求助说Xshell无法连接ECS,多数回答是认为比如防火墙或者服务器端或许出现了问题).实际情况是:在初始申请ECS的时候,实例密码默认是需要用户自己重新设置过的,也就是说,开通ECS后第一件事就是重置实例的密码!如果是默认密码的话,那Xshell无论怎样

阿里云技术教程系列-ECS远程连接 Linux 实例

内容提示:阿里云ECS服务器入门教程:步骤 3 远程连接 Linux 实例 根据您本地的操作系统,您可以从 Windows.Linux.Mac OS X 等操作系统连接 Linux 实例.本文介绍常用的连接服务器方式.更全面详细的连接实例方式介绍,请参考 连接 Linux 实例. 云服务器 ECS 实例创建好之后,您可以使用以下任意一种方式连接 ECS 实例: 管理控制台的 远程连接 功能:无论您在创建实例时是否购买了带宽,都可以通过管理控制台的远程连接 功能连接实例,进行管理. 使用远程连接软

远程连接阿里云SqlServer 2012 数据库服务器的图文教程

前言: 在使用 阿里云 上的一些产品时,遇到不少坑. 安装IIS 时,遇到因买的配置过低,虚拟内存不足,而导致 IIS 总是安装失败: 现在 在上面安装了个 Sql Sever 2012,远程老是 不能连接,百度找半天,终于能够连接上了. 实现步骤如下: 1. 找到 安全组配置,打开 安全组配置,点击配置规则,增加 地址段访问的 授权规则,Sql Server的默认端口时 1433 . 2. 服务器上 win + R  键入  compmgmt.msc ,打开 计算机管理,按照如图所示 设置.注

阿里云ECS服务器搭建wordpress个人博客网站【详细图文教程】

阿里云ECS服务器搭建wordpress个人博客网站[小白专用的图文教程] 在阿里云上搭建使用个人博客主要分为以下几个步骤: 1.购买阿里云ECS主机 2.购买域名 3.申请备案 4.环境配置 5.安装wordpress 6.域名解析 声明一下,本人对服务器端的知识不是很熟悉,但一心想做个自己的个人网站装一下哔,特此记录一下完整的配置过程,也算是给其他小白们的一剂福利吧.   开发环境: 物理机版本:Win 7 旗舰版(64位) xshell版本:Xshell 5 Build 0806 xftp