2017-10-04 133 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中。