使用 Amazon RDS Proxy 端點 - Amazon Relational Database Service

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

使用 Amazon RDS Proxy 端點

RDS Proxy 端點提供彈性且有效率的方式來管理資料庫連線,進而改善可擴展性、可用性和安全性。使用代理端點,您可以:

  • 簡化監控和故障診斷 – 使用多個端點獨立追蹤和管理來自不同應用程式的連線。

代理端點概觀

使用 RDS Proxy 端點涉及與 RDS 執行個體端點相同的程序類型。如果您不熟悉 RDS 端點,請在連線至執行 MySQL 資料庫引擎的資料庫執行個體連線至執行 PostgreSQL 資料庫引擎的資料庫執行個體中查閱詳細資訊。

建立代理端點時,您可以將其與代理 VPC 不同的虛擬私有雲端 (VPC) 建立關聯。這可讓您從另一個 VPC 連線至代理,例如組織內不同應用程式所使用的 VPC。

如需與代理端點關聯的限制相關資訊,請參閱代理端點的限制

RDS Proxy 日誌會在每個項目前加上相關聯的代理端點名稱。這可以是您為使用者定義端點指定的名稱,或default代理預設讀取/寫入端點的特殊名稱。

每個代理端點都有自己的 CloudWatch 指標集。監控代理的所有代理端點、特定端點或代理的所有讀取/寫入或唯讀端點的指標。如需詳細資訊,請參閱使用 Amazon 監控 RDS 代理指標 CloudWatch

代理端點會使用與相關聯代理相同的身分驗證機制。RDS Proxy 會自動設定使用者定義端點的許可和授權,且與相關聯代理的屬性一致。

代理端點的限制

RDS Proxy 端點有下列限制:

  • 每個代理都有一個預設端點,您可以修改,但無法建立或刪除。

  • 代理的使用者定義端點數目上限為 20。因此,代理最多可以有 21 個端點:預設端點,以及您建立的 20 個端點。

  • 當您將其他端點與代理建立關聯時,RDS Proxy 會自動確定叢集中要用於每個端點的資料庫執行個體。

多可用區域資料庫叢集的代理端點

依預設,您將 RDS Proxy 與多可用區域資料庫叢集搭配使用時連線的端點具有讀取/寫入功能。因此,此端點會將所有請求傳送至叢集的寫入器執行個體。所有這些連線都會計入寫入器執行個體的 max_connections 值。如果您的 Proxy 與多可用區域資料庫叢集相關聯,您可以為該 Proxy 建立額外的讀取/寫入或唯讀端點。

您可以將唯讀端點與您的代理搭配使用,進行唯讀查詢。執行此操作的方式與您將讀取器端點用於多可用區域資料庫叢集的方式相同。這樣做有助於您利用多可用區域資料庫叢集的讀取可擴展性,而此叢集具有一個或多個讀取器資料庫執行個體。您可以使用唯讀端點,並視需將更多讀取器資料庫執行個體新增至多可用區域資料庫叢集,來執行更多同時查詢並建立更多同時連線。這些讀取器端點有助於改善查詢密集型應用程式的讀取可擴展性。如果叢集中的讀取器資料庫執行個體變得無法使用,讀取器端點也有助於改善連線的可用性。

多可用區域資料庫叢集的讀取器端點

使用 RDS Proxy,您可以建立和使用讀取器端點。不過,這些端點僅適用於與多可用區域資料庫叢集相關聯的 Proxy。如果您使用 RDS CLI 或 API,您可能會看到具有值 TargetRoleREAD_ONLY 屬性。您可以將代理的目標從 RDS 資料庫執行個體變更為多可用區域資料庫叢集,以利用這類代理。

當您將 RDS Proxy 與多可用區域資料庫叢集搭配使用時,您可以建立並連線至稱為讀取器端點的唯讀端點。

讀取器端點如何協助應用程式變得可用

在某些情況下,叢集中的讀取器執行個體可能無法使用。如果發生此情況,使用資料庫 Proxy 讀取器端點的連線可以比使用多可用區域資料庫叢集讀取器端點的連線更快復原。RDS Proxy 只會將連線路由傳送至叢集中可用的讀取器執行個體。當執行個體變得無法使用時,DNS 快取不會有延遲。

如果連線為多路復用,RDS Proxy 會將後續查詢導向至不同的讀取器執行個體,而不會中斷您的應用程式。如果讀取器執行個體處於無法使用狀態,則會關閉該執行個體端點的所有用戶端連線。

如果連線鎖定,則連線的下一個查詢會傳回錯誤。不過,您的應用程式可以立即重新連線至相同的代理端點。RDS Proxy 會將連線路由至不同但為 available 狀態的讀取器資料庫執行個體。手動重新連線時,RDS Proxy 不會檢查新舊讀取器執行個體之間的複寫延遲。

如果多可用區域資料庫叢集沒有任何可用的讀取器執行個體,RDS Proxy 會在其可用時嘗試連線至讀取器端點。如果連線借用逾時期間內沒有讀取器執行個體變得可用,則連線嘗試會失敗。如果讀取器執行個體變得可用,則連線嘗試會成功。

讀取器端點如何協助實現查詢可擴展性

Proxy 的讀取器端點透過以下方式協助實現多可用區域資料庫叢集查詢可擴展性:

  • 在實際情況下,RDS Proxy 針對使用特定讀取器端點連線的所有查詢問題,使用相同的讀取器資料庫執行個體。如此一來,相同資料表上的一組相關查詢可以利用特定資料庫執行個體上的快取、計劃最佳化等。

  • 如果讀取器資料庫執行個體變得無法使用,則對應用程式的影響取決於工作階段是多路復用還是鎖定。如果工作階段是多路復用,RDS Proxy 會將任何後續查詢路由至不同的讀取器資料庫執行個體,而無需執行任何動作。如果工作階段已鎖定,您的應用程式會收到錯誤,並且必須重新連線。您可以立即重新連線至讀取器端點,並且 RDS Proxy 會將連線路由至可用的讀取器資料庫執行個體。如需代理工作階段的多工處理和鎖定的詳細資訊,請參閱RDS Proxy 概念概觀

跨 VPC 存取 RDS 資料庫

依預設,Aurora 技術堆疊的元件全都在同一個 Amazon VPC 中。例如,假設在 Amazon EC2 執行個體上執行的應用程式連線至 Amazon RDS 資料庫執行個體。在此情況下,應用程式伺服器和資料庫必須都位於同一個 VPC 內。

使用 RDS Proxy,您可以從另一個 VPC 中的資源,例如 EC2 執行個體,設定對一個 VPC 中 Amazon RDS 資料庫執行個體的存取權。例如,您的組織可能有多個存取相同資料庫資源的應用程式。每個應用程式都可能在其自己的 VPC 中。

若要啟用跨 VPC 存取,您可以為代理建立新的端點。Proxy 本身駐留在與 Amazon RDS 資料庫執行個體相同的 VPC 中。然而,跨 VPC 端點駐留在其他 VPC 中,以及 EC2 執行個體等其他資源。跨 VPC 端點與 EC2 和其他資源相同的 VPC 子網路和安全群組關聯。這些關聯可讓您從因 VPC 限制而無法存取資料庫的應用程式連線至端點。

下列步驟說明如何透過 RDS Proxy 來建立和存取跨 VPC 端點:

  1. 建立兩個 VPC,或選擇兩個已用於 和 RDS 工作的 VPC。每個 VPC 都應有自己的關聯網路資源,例如網際網路閘道、路由表、子網路和安全群組。如果您只有一個 VPC,可以參閱Amazon RDS 入門,了解設定另一個 VPC 以成功使用 RDS 的步驟。您也可以在 Amazon EC2 主控台中檢查現有的 VPC,以查看要連接在一起的資源類型。

  2. 建立與您要連線的 Amazon RDS 資料庫執行個體相關聯的資料庫 Proxy。請遵循 為 Amazon RDS 建立代理 中的程序。

  3. 於 RDS 主控台代理的詳細資訊頁面上,在 Proxy endpoints (代理端點) 區段中,選擇 Create endpoint (建立端點)。請遵循 建立代理端點 中的程序。

  4. 選擇要讓跨 VPC 端點讀取/寫入還是唯讀。

  5. 不是接受與 Amazon RDS 資料庫執行個體相同 VPC 的預設值,而是選擇不同的 VPC。此 VPC 必須與代理所在的 VPC 位於相同的 AWS 區域。

  6. 現在,不是接受與 Amazon RDS 資料庫執行個體相同 VPC 的子網路和安全群組預設值,而是選擇新的選項。根據您選擇的 VPC 中的子網路和安全群組進行這些設定。

  7. 您不需要變更 Secrets Manager 機密的任何設定。相同的登入資料適用於代理的所有端點,無論每個端點所在的 VPC 為何。

  8. 等待新端點為可用狀態。

  9. 記下完整的端點名稱。這是以 Region_name.rds.amazonaws.com 結尾的值,作為資料庫應用程式連線字串的一部分提供。

  10. 從與端點相同的 VPC 中的資源存取新端點。測試此程序的簡單方法是,在此 VPC 中建立一個新的 EC2 執行個體。然後,登入 EC2 執行個體,並使用連線字串中的端點值執行 mysqlpsql命令來連線。

  翻译: