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

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

使用 Amazon RDS Proxy 端點

了解 RDS Proxy 的端點,以及如何使用它們。透過使用 Proxy 端點,您可以利用下列功能:

  • 您可以使用多個端點搭配代理,來獨立監控和不同應用程式的連線並進行疑難排解。

  • 您可以使用跨 VPC 端點,以允許從資源存取一個 VPC 中的資料庫,例如 Amazon EC2 執行個體。

代理端點概觀

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

對於您建立的代理端點,您還可以將端點與代理本身所用的不同 Virtual Private Cloud (VPC) 建立關聯。如此一來,您可以從不同的 VPC 連線至 Proxy,例如,組織內不同應用程式使用的 VPC。

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

在 RDS Proxy 日誌中,每個項目均會以關聯的代理端點名稱作為前綴。此名稱可以是您針對使用者定義端點所指定的名稱。或者,它可以是執行讀取/寫入要求的 Proxy 預設端點的特殊名稱default

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

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

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

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

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

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

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

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

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

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

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

如果連線鎖定,則連線的下一個查詢會傳回錯誤。不過,您的應用程式可以立即重新連線至相同的 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 代理,您可以從另一個 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。請遵循 建立 RDS Proxy 中的程序。

  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命令進行連線。

建立代理端點

若要建立代理伺服器端點
  1. 登入 AWS Management Console,開啟位於 https://console.aws.amazon.com/rds/ 的 Amazon RDS 主控台。

  2. 在導覽窗格中,選擇 Proxies (代理)。

  3. 按一下您要為其建立新端點的代理名稱。

    該代理的詳細資訊頁面即會出現。

  4. Proxy endpoints (代理端點) 區段中,選擇 Create proxy endpoint (建立代理端點)。

    Create proxy endpoint (建立代理端點) 視窗即會出現。

  5. 對於 Proxy endpoint name (代理端點名稱),輸入您選擇的描述性名稱。

  6. 對於 Target role (目標角色) 下,選擇要讓端點讀取/寫入還是唯讀。

    使用讀取/寫入端點的連線可以執行任何類型的作業,例如資料定義語言 (DDL) 陳述式、資料操作語言 (DML) 陳述式和查詢。這些端點一律連線至 RDS 資料庫叢集的主要執行個體。當您在應用程式中僅使用單一端點時,您可以使用讀取/寫入端點來進行一般資料庫操作。您也可以將讀取/寫入端點用於管理作業、線上交易處理 (OLTP) 應用程式和 extract-transform-load (ETL) 工作。

    使用唯讀端點的連線只能執行查詢。RDS Proxy 可以針對端點的每個連線使用其中一個讀取器執行個體。如此一來,查詢密集型應用程式可以利用多可用區域資料庫叢集的叢集功能。這些唯讀連線不會對叢集的主要執行個體施加任何額外負荷。如此一來,您的報告和分析查詢不會減慢 OLTP 應用程式的寫入操作。

  7. 對於 V irtual Private Cloud (VPC) (VPC),請選擇預設值,以便從通常用於存取 Proxy 或其關聯資料庫的相同 EC2 執行個體或其他資源存取端點。若要設定此代理的跨 VPC 存取,請選擇預設值以外的 VPC。如需跨 VPC 存取的詳細資訊,請參閱跨 VPC 存取 RDS 資料庫

  8. 對於子網路,RDS Proxy 預設會填入與關聯代理相同的子網路。若要將端點的存取限制為僅能夠連線至 VPC 位址範圍的一部分,請移除一或多個子網路。

  9. 若為 VPC Security groups (VPC 安全群組),您可以選擇現有的安全群組,或建立新的安全群組。依據預設,RDS Proxy 會填入與相關聯代理相同的安全群組或群組。如果 Proxy 的輸入和輸出規則適用於此端點,請保留預設選擇。

    如果您選擇建立新的安全群組,請在此頁面上指定安全群組的名稱。然後稍後從 EC2 主控台編輯安全群組設定。

  10. 選擇 Create proxy endpoint (建立代理端點)。

若要建立代理端點,請使用AWS CLIcreate-db-proxy-endpoint指令。

包含下列必要參數:

  • --db-proxy-name value

  • --db-proxy-endpoint-name value

  • --vpc-subnet-ids list_of_ids. 以空格分隔子網路 ID。您沒有指定 VPC 本身的 ID。

您還可以包含下列選用參數:

  • --target-role { READ_WRITE | READ_ONLY }此參數預設為 READ_WRITE。如果代理伺服器與異地同步備份資料庫叢集關聯,只包含寫入器資料庫執行,則無法指定READ_ONLY。如需將唯讀端點與 搭配使用的詳細資訊,請參閱多可用區域資料庫叢集的讀取器端點

  • --vpc-security-group-ids value. 以空格分隔安全群組 ID。如果省略此參數,RDS Proxy 會使用預設的 VPC 安全群組。RDS Proxy 會根據您為 --vpc-subnet-ids 參數指定的子網路 ID 來決定 VPC。

範例

下列範例會建立名稱為 my-endpoint 的代理端點

對於LinuxmacOS、或Unix:

aws rds create-db-proxy-endpoint \ --db-proxy-name my-proxy \ --db-proxy-endpoint-name my-endpoint \ --vpc-subnet-ids subnet_id subnet_id subnet_id ... \ --target-role READ_ONLY \ --vpc-security-group-ids security_group_id ]

在Windows中:

aws rds create-db-proxy-endpoint ^ --db-proxy-name my-proxy ^ --db-proxy-endpoint-name my-endpoint ^ --vpc-subnet-ids subnet_id_1 subnet_id_2 subnet_id_3 ... ^ --target-role READ_ONLY ^ --vpc-security-group-ids security_group_id

若要建立代理主機端點,請使用 RDS API 建立資料庫動作ProxyEndpoint

檢視代理端點

若要檢視代理端點的詳細資訊
  1. 登入 AWS Management Console,開啟位於 https://console.aws.amazon.com/rds/ 的 Amazon RDS 主控台。

  2. 在導覽窗格中,選擇 Proxies (代理)。

  3. 在清單中,選擇您要檢視其端點的代理。按一下代理名稱,以檢視其詳細資訊頁面。

  4. Proxy endpoints (代理端點) 區段中,選擇您要檢視的端點。按一下其名稱,以檢視詳細資訊頁面。

  5. 檢查您感興趣的參數值。您可以檢查如下所示屬性:

    • 端點是讀取/寫入還是唯讀。

    • 您在資料庫連線字串中使用的端點地址。

    • 與端點關聯的 VPC、子網路和安全群組。

若要檢視一或多個 Proxy 端點,請使用AWS CLIdescribe-db-proxy-endpoints指令。

您可以包含下列任一選用參數:

  • --db-proxy-endpoint-name

  • --db-proxy-name

以下範例描述 my-endpoint 代理端點。

範例

對於LinuxmacOS、或Unix:

aws rds describe-db-proxy-endpoints \ --db-proxy-endpoint-name my-endpoint

在Windows中:

aws rds describe-db-proxy-endpoints ^ --db-proxy-endpoint-name my-endpoint

若要描述一或多個代理主機端點,請使用 RDS API 描述 B 作ProxyEndpoints業。

修改代理端點

修改一個或多個代理端點
  1. 登入 AWS Management Console,開啟位於 https://console.aws.amazon.com/rds/ 的 Amazon RDS 主控台。

  2. 在導覽窗格中,選擇 Proxies (代理)。

  3. 在清單中,選擇您要修改其端點的代理。按一下代理伺服器名稱以檢視其

  4. Proxy endpoints (代理端點) 區段中,選擇您要修改的端點。您可以在清單中選取或按一下其名稱,以檢視詳細資訊頁面。

  5. 在代理詳細資訊頁面的 Proxy endpoints (代理端點) 區段中,選擇 Edit (編輯)。或者,在 Proxy 端點詳細資料頁面上,針對「動作」 選擇 「編輯」。

  6. 變更您要修改的參數值。

  7. 選擇儲存變更

若要修改 Proxy 端點,請使用具有下列必要參數的AWS CLImodify-db-proxy-endpoint指令:

  • --db-proxy-endpoint-name

使用下列一個或多個參數來指定對端點屬性的變更:

  • --new-db-proxy-endpoint-name

  • --vpc-security-group-ids. 以空格分隔安全群組 ID。

下列範例會將 my-endpoint 代理端點重新命名為 new-endpoint-name

範例

對於LinuxmacOS、或Unix:

aws rds modify-db-proxy-endpoint \ --db-proxy-endpoint-name my-endpoint \ --new-db-proxy-endpoint-name new-endpoint-name

在Windows中:

aws rds modify-db-proxy-endpoint ^ --db-proxy-endpoint-name my-endpoint ^ --new-db-proxy-endpoint-name new-endpoint-name

若要修改代理主機端點,請使用 RDS API 修改資料庫ProxyEndpoint作業。

刪除代理端點

您可以如下所述使用主控台刪除代理的端點。

注意

您無法刪除 RDS Proxy 為每個代理自動建立的預設代理主機端點。

當您刪除代理時,RDS Proxy 會自動刪除所有關聯的端點。

若要使用 AWS Management Console 來刪除代理端點
  1. 在導覽窗格中,選擇 Proxies (代理)。

  2. 在清單中,選擇您要刪除其端點的代理。按一下代理名稱,以檢視其詳細資訊頁面。

  3. Proxy endpoints (代理端點) 區段中,選擇您要刪除的端點。您可以在清單中選取一個或多個端點,或者按一下單一端點的名稱,以檢視詳細資訊頁面。

  4. 在代理詳細資訊頁面的 Proxy endpoints (代理端點) 區段中,選擇 Delete (刪除)。或者,在 Proxy 端點詳細資料頁面上,針對「動作」 選擇「刪除」。

若要刪除 Proxy 端點,請使用下列必要參數執行delete-db-proxy-endpoint命令:

  • --db-proxy-endpoint-name

下列命令會刪除名稱為 my-endpoint 的代理端點。

對於LinuxmacOS、或Unix:

aws rds delete-db-proxy-endpoint \ --db-proxy-endpoint-name my-endpoint

在Windows中:

aws rds delete-db-proxy-endpoint ^ --db-proxy-endpoint-name my-endpoint

若要使用 RDS API 刪除代理主機端點,請執行刪除資料庫ProxyEndpoint作業。指定代理端點 DBProxyEndpointName 參數的名稱。

代理端點的限制

RDS 代理主機端點有下列限制:

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

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

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