2017-10-04 136 views
-1

我在AWS RDS上安装了AWS服务器的AWS服务器并安装了MS SQL服务器。如何将我的aws ec2 IIS应用程序连接到我的aws rds sql server?

我在AWS EC2上配置了IIS,并在其上部署了我的应用程序。该产品是我无法将我的应用程序连接到AWS RDS上的MS SQL Server。

我的连接字符串

<add name="DefaultConnection" connectionString="Data Source=welocate-instance.*************.rds.amazonaws.com,1433;Initial Catalog=MyDB;persist security info=True;user id=sa;password=********" providerName="System.Data.SqlClient" /> 

我在下面

网络路径的错误没有被发现 而与SQL Server建立连接时出现与网络相关的或特定于实例的错误。服务器未找到或无法访问......

回答

0

如果您添加了更多详细信息(如同一个/不同的VPC中的服务器,安全组入站和出站规则,网络ACL),那么我可以帮助您以更好的方式。

亚马逊RDS支持用于在VPC访问DB实例以下方案:

DB实例在不同的VPC EC2实例访问过由 在VPC EC2实例在同一VPC EC2实例不是在VPC 客户通过互联网 不是在VPC EC2实例在VPC EC2实例不是在VPC 应用程序通过互联网 一个数据库实例的VPC通过EC2实例在访问的客户端应用程序相同的VPC

VPC中RDS实例的常见用法是与在同一VPC中的EC2实例中运行的应用程序服务器共享数据。这是如果您使用AWS Elastic Beanstalk在同一个VPC中创建EC2实例和数据库实例时创建的用户方案。

下图显示了此方案。

   VPC and EC2 security group Scenario 

管理在同一VPC EC2实例和数据库实例之间的访问最简单的方法是做到以下几点:

创建一个VPC安全组,你的数据库实例将在此安全组可以。用于限制对数据库实例的访问。例如,您可以为此安全组创建一个自定义规则,允许使用您在创建数据库实例时分配给数据库实例的端口以及用于访问数据库实例以用于开发或其他目的的IP地址进行TCP访问。 创建您的EC2实例(Web服务器和客户端)所在的VPC安全组。如果需要,此安全组可以允许通过VPC的路由表从Internet访问EC2实例。例如,您可以在此安全组上设置规则,以允许通过端口22对EC2实例进行TCP访问。 为您的数据库实例在安全组中创建自定义规则,该实例允许来自为您的EC2实例创建的安全组的连接。这将允许安全组的任何成员访问数据库实例。 有关向您展示如何为此方案创建具有公共和私有子网的VPC的教程,请参阅教程:创建Amazon VPC以用于Amazon RDS数据库实例。到AWS管理控制台

注册,并在https://console.aws.amazon.com/vpc打开亚马逊VPC控制台:

要创建一个VPC安全组,允许从其他安全组连接的规则,请执行下列操作。

在导航窗格中,选择安全组。

选择或创建一个您希望允许访问另一个安全组成员的安全组。在上面的场景中,这将是您将用于数据库实例的安全组。选择添加规则。

从类型中选择All ICMP。在“源”框中,开始输入安全组的ID;这为您提供了一个安全组列表。选择您希望访问受此安全组保护的资源的成员的安全组。在上面的场景中,这将是您将用于EC2实例的安全组。

重复TCP协议的步骤,方法是创建一个规则,将所有TCP作为“源”框中的“类型”和安全组。如果您打算使用UDP协议,请在Source框中创建一个All UDP作为Type和您的安全组的规则。

创建自定义TCP规则,允许通过您在创建数据库实例时使用的端口(例如MySQL的端口3306)进行访问。输入您将在Source框中使用的安全组或IP地址。

选择完成后保存。

   adding a security group to another security group's rules 

一个数据库实例中通过EC2实例在不同的VPC访问的VPC的

当你的数据库实例是在不同的VPC从您用来访问它的EC2实例,有几种方法访问数据库实例。如果数据库实例和EC2实例位于不同的VPC中,但在同一个区域中,则可以使用VPC对等。如果数据库实例和EC2实例位于不同区域,则必须使用数据库实例的公有IP才能访问它。

下图显示了此方案。

  A DB Instance in a VPC Accessed by an EC2 Instance in a Different VPC 

VPC的对等连接在两个的VPC之间的网络连接,使您可以在它们之间路由流量使用私有IP地址。 VPC中的实例可以相互通信,就好像它们在同一网络中一样。您可以在您自己的VPC之间创建VPC对等连接,也可以在单个区域内的另一个AWS账户中使用VPC创建VPC对等连接。要了解有关VPC对等的更多信息,请参阅VPC文档。

当您需要连接到与您的EC2实例位于不同VPC和区域的数据库实例时,请使用数据库实例的公有IP。数据库实例必须允许公共访问,必须位于公共子网中,并且该子网必须具有Internet网关。当您在创建数据库实例时将VPC选项设置为创建新的VPC并将公众可访问选项设置为是时,Amazon RDS会自动为您的数据库实例创建公有子网。

一个数据库实例的VPC通过EC2实例不是在VPC访问的

您可以在亚马逊RDS数据库实例,它是在一个VPC和EC2实例,它是不是一个Amazon VPC使用之间的沟通ClassicLink。当您使用经典链接时,EC2实例上的应用程序可以通过使用数据库实例的RDS端点连接到数据库实例。 ClassicLink免费提供。

下图显示了此方案。

   A DB Instance in a VPC Accessed by an EC2 Instance Not in a VPC 

使用ClassicLink,您可以EC2实例连接到您定义的IP地址范围,并控制访问控制列表(ACL)来管理网络流量逻辑隔离的数据库。您不必使用公共IP地址或隧道与VPC中的数据库实例进行通信。这种安排为您提供更高的吞吐量和更低的延迟连接以实现实例间通信。

注意 数据库实例必须位于未向公众开放的私有子网中(即不能将其设置为可公开访问)。 要在VPC中的数据库实例与不在VPC中的EC2实例之间启用ClassicLink

登录AWS管理控制台并打开https://console.aws.amazon.com/vpc处的Amazon VPC控制台。

在导航窗格中,选择您的VPC。

对于VPC,请选择数据库实例使用的VPC。

对于操作菜单,请选择启用ClassicLink。在确认对话框中,选择是,启用。

在EC2控制台上,选择要连接到VPC中的数据库实例的EC2实例。

对于操作菜单,请选择ClassicLink,然后选择链接到VPC。

在链接到VPC页面上,选择要使用的安全组,然后选择链接到VPC。

一个数据库实例中由客户端应用程序访问通过互联网

通过互联网从一个客户端应用程序访问VPC的一个数据库实例的VPC,您配置VPC有一个公共子网,以及互联网网关,通过互联网进行通信。

下图显示了此方案。

   A DB Instance in a VPC Accessed by a Client Application Through the Internet 

我们建议以下配置:

大小/ 16(:10.0.0.0/16例如CIDR)的VPC。这个大小提供了65536个私有IP地址。 大小为24的子网(例如CIDR:10.0.0.0/24)。该大小提供256个私有IP地址。 将VPC连接到Internet和其他AWS产品的Internet网关。 在子网范围内具有私有IP地址(例如:10.0.0.6)的实例(使实例能够与VPC中的其他实例通信)以及弹性IP地址(例如:198.51.100.2),该实例启用从Internet访问的实例。 路由表条目,使子网中的实例能够与VPC中的其他实例通信,以及路由表条目,使子网中的实例能够通过Internet直接通信。 有关更多信息,请参阅VPC文档中的方案1。

一个数据库实例不是由一个EC2实例在VPC

在你有一个VPC EC2实例和VPC的一个RDS数据库实例并非如此访问的VPC的,你可以将它们连接起来了公共互联网。

下图显示了此方案。

​​

注意 ClassicLink,如通过EC2实例不是在VPC访问的一个VPC在DB实例描述,不适用于这种情况。 要通过公共Internet连接您的数据库实例和EC2实例,请执行以下操作:

确保EC2实例位于VPC中的公有子网中。 确保RDS数据库实例已标记为可公开访问。 有关网络ACL的说明。网络ACL就像是整个子网的防火墙。因此,该子网中的所有实例都受网络ACL规则的约束。默认情况下,网络ACL允许所有流量,您通常不需要担心它们,除非您特别想将规则添加为额外的安全层。另一方面,安全组与单个实例相关联,您需要担心安全组规则。 将必要的入口规则添加到RDS数据库实例的数据库安全组。 入口规则指定网络端口和CIDR/IP范围。例如,您可以添加允许端口3306连接到MySQL RDS数据库实例和CIDR/IP范围203.0.113.25/32的入口规则。有关更多信息,请参阅从IP范围授权对数据库安全组的网络访问。 注意 如果您有兴趣将现有数据库实例移动到VPC中,可以使用AWS管理控制台轻松完成。了解更多信息。请参阅将不在VPC中的数据库实例移到VPC中。 一个数据库实例不是由一个EC2实例不是在VPC

如果没有你的数据库实例,也不在一个EC2实例的应用程序都在一个VPC,您可以通过使用其端点和端口访问数据库实例访问一个VPC 。

下图显示了此方案。

   A DB Instance Not in a VPC Accessed by an EC2 Instance Not in a VPC 

您必须允许从创建实例时指定的端口访问实例创建一个数据库安全组。例如,可以使用类似于此连接字符串的连接字符串来访问Oracle数据库实例:

复制 PROMPT> sqlplus'mydbusr @(DESCRIPTION =(ADDRESS =(PROTOCOL = TCP)(HOST = ) (PORT =))(CONNECT_DATA =(SID =)))' 有关更多信息,请参阅以下文档。

数据库引擎相关文档 亚马逊极光 连接到亚马逊极光DB集群 MariaDB的 连接到一个数据库实例上运行的MariaDB的数据库引擎 的Microsoft SQL Server 连接到一个数据库实例上运行的Microsoft SQL Server数据库引擎 MySQL 连接到运行MySQL数据库引擎的数据库实例 Oracle 连接到运行Oracle数据库引擎的数据库实例 PostgreSQL 连接到运行PostgreSQL数据库引擎的数据库实例 注意 如果您有兴趣将现有数据库实例移动到VPC中,可以使用AWS管理控制台轻松完成。了解更多信息。请参阅将不在VPC中的数据库实例移到VPC中。 不在VPC中的客户端应用程序通过Internet访问的数据库实例

新的Amazon RDS客户只能在VPC中创建数据库实例。但是,您可能需要通过Internet从客户端应用程序连接到不在VPC中的现有Amazon RDS数据库实例。

下图显示了此方案。

  A DB Instance not in a VPC Accessed by a Client Application via the Internet 

在这种情况下,你必须确保为RDS数据库实例的数据库安全组包括客户端应用程序连接所需的入口规则。入口规则指定网络端口和CIDR/IP范围。例如,您可以添加允许端口3306连接到MySQL RDS数据库实例和CIDR/IP范围203.0.113.25/32的入口规则。有关更多信息,请参阅从IP范围授权对数据库安全组的网络访问。

警告 如果您打算访问防火墙后面的数据库实例,请与您的网络管理员联系以确定您应该使用的IP地址。

查看http://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_VPC.Scenarios.html各种情况的详细信息。

注意 如果您有兴趣将现有数据库实例移动到VPC中,可以使用AWS管理控制台轻松完成此任务。了解更多信息。请参阅将不在VPC中的数据库实例移到VPC中。