如何從 Elastic Beanstalk 環境解耦 Amazon RDS 執行個體,而不會發生停機、資料庫同步問題或資料遺失?

2 分的閱讀內容
0

我擁有 Amazon Relational Database Service (Amazon RDS) 資料庫執行個體,該執行個體已連接至我的 AWS Elastic Beanstalk 環境。當我移除執行個體和環境之間的相依性時,我想要避免停機、資料庫同步問題和資料遺失。

簡短描述

下列程序會從 Elastic Beanstalk 環境解耦您的資料庫,不會影響環境的運作狀態:

  1. 建立 Amazon RDS 資料庫快照。
  2. 保護您的 RDS 資料庫執行個體免遭刪除。
  3. 建立新的 Elastic Beanstalk 環境。
  4. 執行藍/綠部署。
  5. 更新舊環境的資料庫刪除政策。
  6. 從舊環境解耦 RDS 執行個體。
  7. 終止舊環境。

**重要:**作為最佳實務,僅在開發和測試環境中,將 RDS 資料庫執行個體連接至 Elastic Beanstalk 環境。在生產環境中,資料庫執行個體的生命週期與應用程式環境的生命週期相關聯。因此,最佳實務是不要將 RDS 資料庫執行個體連接至生產環境中的 Elastic Beanstalk 環境。如果您終止環境,則因為環境會刪除資料庫執行個體而會遺失資料庫執行個體。如需詳細資訊,請參閱將 Elastic Beanstalk 與 Amazon RDS 搭配使用

解決方法

建立執行個體的資料庫快照

若要建立執行個體的資料庫快照,請完成下列步驟:

  1. 開啟 Elastic Beanstalk 主控台
  2. 選擇您的 Elastic Beanstalk 環境。
  3. 複製環境 ID。
  4. 開啟 Amazon RDS 主控台
  5. 在導覽窗格中,選擇資料庫
  6. 在搜尋欄位中輸入環境 ID,然後選取資料庫。
  7. 建立資料庫快照

保護您的資料庫執行個體免遭刪除

若要保護資料庫執行個體免遭刪除,請完成下列步驟:

  1. 開啟 Amazon RDS 主控台
  2. 在導覽窗格中,選擇資料庫
  3. 選擇您的資料庫,然後選擇修改
  4. 刪除保護下,選取啟用刪除保護,然後選擇繼續
  5. 對於排程修改,選擇立即套用,然後選擇修改叢集
  6. 重新整理 Amazon RDS 主控台,然後確認刪除保護已開啟。

建立新的 Elastic Beanstalk 環境

**注意:**您的新 Elastic Beanstalk 環境不得包含資料庫執行個體。

若要建立新的 Elastic Beanstalk 環境,請完成下列步驟:

  1. 建立新的 Elastic Beanstalk 環境。
  2. 將新的 Elastic Beanstalk 環境連接至舊的 Elastic Beanstalk 環境的現有資料庫執行個體。如需詳細資訊,請參閱在預設虛擬私有雲端 (VPC) 中啟動和連接至外部 Amazon RDS 執行個體
  3. 確認新環境是否連接至現有的資料庫執行個體,並且您的應用程式是否正常運作。

執行藍/綠部署以避免停機

**注意:**若要稍後執行藍/綠部署或 CNAME 交換,兩個 Elastic Beanstalk 環境都必須是相同應用程式的一部分。

若要執行藍/綠部署,請完成下列步驟:

  1. 開啟新環境的 Elastic Beanstalk 主控台
  2. 交換舊和新的 Elastic Beanstalk 環境的環境 URL。如需詳細資訊,請參閱使用 Elastic Beanstalk 的藍/綠部署
  3. 確認新環境的 URL 已回應,且您的應用程式正常運作。

**重要:**只有在傳播 DNS 變更並且舊的 DNS 記錄過期後,才會終止舊的 Elastic Beanstalk 環境。DNS 記錄最多可能需要 48 小時才會過期。DNS 伺服器不會根據您在 DNS 記錄上設定的存留時間 (TTL) 清除其快取中的舊記錄。

更新舊環境的資料庫刪除政策

若要更新舊環境的資料庫刪除政策,請完成下列步驟:

  1. 開啟舊環境的 Elastic Beanstalk 主控台
  2. 在導覽窗格中,選擇組態
  3. 聯網和資料庫下,選擇編輯
  4. 資料庫設定下,將資料庫刪除政策設定為保留
  5. 選擇套用。儲存組態變更可能需要幾分鐘的時間。

重要:只有將資料庫刪除政策變更套用至舊環境之後,才會繼續進行下一步。

從舊環境解耦 RDS 執行個體

若要從舊環境解耦 RDS 執行個體,請完成下列步驟:

  1. 開啟舊環境的 Elastic Beanstalk 主控台
  2. 在導覽窗格中,選擇組態
  3. 聯網和資料庫組態下,選擇編輯
  4. 資料庫設定下,確認資料庫刪除政策設定為保留
  5. 資料庫連線區段中,選擇解耦資料庫
  6. 選擇套用

**注意:**當資料庫解耦時,資料庫仍會維持運作狀態。通常需要不到 5 分鐘即可解耦資料庫。

終止舊環境

驗證新環境的功能之後,終止舊的 Elastic Beanstalk 環境。

當您終止環境時,除了 Elastic Beanstalk 建立的資料庫執行個體和 RDS 安全群組以外,系統會刪除所有 Elastic Beanstalk 資源。當您建立 RDS 執行個體作為負載平衡 Elastic Beanstalk 環境的一部分時,Elastic Beanstalk 會建立 Elastic Load Balancing (ELB) 安全群組。Elastic Beanstalk 還會建立 Amazon Elastic Compute Cloud (Amazon EC2) 安全群組,以連接至環境中的 EC2 執行個體。此外,Elastic Beanstalk 會建立 RDS 安全群組,以連接至 RDS 執行個體。若要允許從 EC2 安全群組的連接埠 3306 傳入流量,Elastic Beanstalk 會將安全群組傳入規則新增至 RDS 安全群組。

在您解耦資料庫時,Elastic Beanstalk 不會移除安全群組傳入規則。此安全群組傳入規則會參考 Elastic Beanstalk 所建立 RDS 安全群組中的 EC2 安全群組。終止環境時,Elastic Beanstalk 無法終止環境,因為解耦 RDS 安全群組仍會參考 EC2 安全群組。

若要終止 Elastic Beanstalk 環境,請完成下列步驟:

  1. 開啟舊環境的 Elastic Beanstalk 主控台
  2. 在導覽窗格中,選擇組態
  3. 執行個體流量和擴展下,記下位於 EC2 安全群組下的 EC2 安全群組名稱。
  4. 開啟 Amazon EC2 主控台
  5. 在導覽窗格中,選擇安全群組
  6. 安全群組頁面上,輸入 EC2 安全群組名稱。
  7. 請記下安全群組 ID。格式類似於 "sg-xxxxxxxx"。
  8. 開啟 Amazon RDS 主控台
  9. 在導覽窗格中,選擇資料庫,然後選擇資料庫執行個體的名稱。
  10. 連線和安全下,記下子網路、安全群組和端點。然後,在安全下,選擇安全群組名稱。
  11. 在 EC2 主控台中開啟安全群組頁面之後,選取安全群組。
  12. 對於傳入規則,選擇編輯傳入規則
  13. 識別安全群組規則。
  14. 選擇刪除,然後選擇儲存規則
  15. 開啟舊環境的 Elastic Beanstalk 主控台
  16. 選擇動作,然後選擇終止環境。在您解耦資料庫時,Elastic Beanstalk 不會移除安全群組傳入規則。安全群組傳入規則會參考 Elastic Beanstalk 所建立 RDS 安全群組中的 EC2 安全群組。
AWS 官方
AWS 官方已更新 4 個月前