建置包含 MongoDB Atlas 的 AWS 登陸區域 - AWS 方案指引

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

建置包含 MongoDB Atlas 的 AWS 登陸區域

Igor Alekseev,Amazon Web Services

Summary

此模式說明如何建置與 MongoDB Atlas 叢集整合的 AWS 登陸區域。基礎設施會使用 Terraform 指令碼自動部署。

結構良好的多帳戶 AWS 環境稱為登陸區域,可提供可擴展性和安全性,特別是企業。它可作為工作負載和應用程式快速部署的基礎,並有助於確保對安全和基礎設施的信心。建置登陸區域需要仔細考慮技術和商業因素,包括帳戶結構、聯網、安全和存取管理。這些考量事項應與組織的未來成長和業務目標保持一致。

此模式的使用案例包括下列項目。

  • 企業 SaaS 和 PaaS 平台:在 上執行的多租戶軟體即服務 (SaaS) 應用程式和平台即服務 (PaaS) 平台 AWS 可以使用此設定,協助提供對 MongoDB Atlas 的安全私有存取,而無需透過公有網際網路公開資料。

  • 高度監管的產業:銀行、金融服務、醫療保健和政府工作負載需要嚴格遵守健康保險流通與責任法案 (HIPAA)、支付卡產業資料安全標準 (PCI DSS)、系統和組織控制 2 (SOC2) 和一般資料保護法規 (GDPR) 等標準,受益於:

    • 透過 加密的私有連線 AWS PrivateLink

    • MongoDB 複本集的異地同步備份高可用性

  • 安全的 AI/ML 工作負載:Amazon Bedrock、Amazon SageMaker AI 或自訂 AI 模型中的訓練或推論管道,可以透過 PrivateLink 安全地擷取和存放 MongoDB Atlas 中的資料。

  • 災難復原和業務持續性:多可用區設計可確保單一可用區域故障不會中斷工作負載。跨可用區域的 Atlas 複本集可確保自動容錯移轉。這對金融技術 (金融技術) 應用程式、數位銀行或醫療保健監控等全年無休的服務至關重要。

先決條件和限制

先決條件

  • 組織擁有者可存取 MongoDB Atlas,因此您可以建立 Atlas API 金鑰。如需此需求的相關資訊,請參閱 MongoDB 文件中的管理組織存取

  • 作用中的 AWS 帳戶

  • Terraform,已安裝並設定。

  • 使用 MongoDB 6.0 版或更新版本建立的 MongoDB Atlas 叢集。

  • 熟悉 MongoDB 和 MongoDB Atlas。如需詳細資訊,請參閱 MongoDB Atlas 文件

限制

架構

下列參考架構圖說明與 MongoDB Atlas 私有端點整合之 AWS 登陸區域的部署設定。此參考架構示範如何建立與 MongoDB Atlas 整合的安全、可擴展且高可用性的 AWS 登陸區域。透過結合多可用區部署、最低權限安全控制和私有連線等 AWS 最佳實務,此設計可讓組織為現代應用程式佈建強大的環境。

與 MongoDB Atlas 整合的 AWS 登陸區域的異地同步備份架構。

此架構包含下列項目:

VPC

  • 單一虛擬私有雲端 (VPC) 跨越三個可用區域。

  • VPC 會細分為與每個可用區域對齊的子網路。這些子網路會分配工作負載以獲得高可用性。

網際網路存取

  • 網際網路閘道可為所需的資源提供傳出網際網路連線,例如應用程式或堡壘主機。

  • 公有子網路可以容納 NAT 閘道,允許私有子網路工作負載下載更新、修補程式和其他必要的套件,而不會將其直接暴露到公有網際網路。

私有子網路和路由表

  • 應用程式元件、微服務或其他敏感資源通常位於私有子網路中。

  • 專用路由表控制流量流程。將輸出流量從私有子網路直接路由到 NAT 閘道,以實現安全、僅限輸出的網際網路存取。

  • 來自網際網路的傳入請求會流經公有子網路中的彈性負載平衡器或堡壘主機 (如果使用),然後適當地路由至私有子網路資源。

透過 PrivateLink 的 MongoDB Atlas 連線

  • 架構使用 PrivateLink (透過 VPC 端點) 安全地連線至 MongoDB Atlas,而不會將您的資料暴露到公有網際網路。

  • 請求會保留在 AWS 骨幹網路上。傳輸中的資料受益於 PrivateLink 加密,且絕不會透過公有網際網路路由。

  • MongoDB Atlas 專用 VPC 託管您的主要和次要節點,並為受管資料庫叢集提供安全、隔離的環境。

Multi-AZ deployment (異地同步備份部署)

  • 關鍵基礎設施元件 (例如 NAT 閘道和應用程式子網路) 會分佈在至少三個可用區域。如果可用區域發生中斷,此架構可確保剩餘可用區域中的工作負載保持運作。

  • 根據預設,MongoDB Atlas 透過複本集提供高可用性,並確保您的資料庫層保持容錯能力。關鍵基礎設施會分散到至少三個可用區域,以提供彈性。

工具

AWS 服務

  • AWS Secrets Manager 可協助您以 API 呼叫取代程式碼中的硬式編碼登入資料,包括密碼,以程式設計方式擷取秘密。

其他產品和工具

  • MongoDB Atlas 是全受管資料庫即服務 (DbaaS),用於在雲端中部署和管理 MongoDB 資料庫。

  • Terraform 是 HashiCorp 的基礎設施即程式碼 (IaC) 工具,可協助您建立和管理雲端和內部部署資源。在此模式中,您會使用 Terraform 執行指令碼,以協助在 AWS 和 MongoDB Atlas 上部署所需的資源。

程式碼儲存庫

此模式的程式碼可在 AWS 和 MongoDB Atlas 登陸區域 GitHub 儲存庫中使用。

史詩

任務描述所需的技能

識別關鍵利益相關者。

識別參與登陸區域專案的所有主要利益相關者和團隊成員。這可能包括下列角色:

  • 資料庫管理員 (DBAs)

  • DevOps 工程師

  • 應用程式開發人員

  • 應用程式架構師

遷移潛在客戶

建立結構藍圖。

建立藍圖,概述 AWS 和啟用 MongoDB Atlas 的登陸區域所需的結構。

遷移潛在客戶

建立架構計劃。

與您的應用程式架構師合作,以分析需求並設計容錯的彈性架構。此模式提供入門架構範本供您參考。您可以自訂此範本,以滿足組織的安全和基礎設施需求。

雲端架構師

規劃設定和部署。

與所有利益相關者一起決定如何部署架構、如何實作安全措施,以及任何其他層面,以確保與組織和請求團隊的利益保持一致。

Migration Lead,DevOps 工程師,DBA
任務描述所需的技能

複製儲存庫。

執行 命令,從 GitHub 儲存庫複製程式碼:

git clone https://github.com/mongodb-partners/AWS-MongoDB-Atlas-Landing-Zone
應用程式開發人員、DevOps 工程師

取得您的 Atlas 組織 ID。

  1. 如果您沒有 MongoDB Atlas 帳戶,請註冊一個。

  2. 遵循 MongoDB 文件中的步驟來建立組織。

  3. 複製組織 ID。

DBA

產生 Atlas 組織層級 API 金鑰。

若要在 Atlas 中產生組織層級 API 金鑰,請遵循 MongoDB 文件中的指示。

DBA

在 中建立秘密 AWS Secrets Manager。

將上一個步驟中產生的 MongoDB Atlas API 金鑰儲存為 Secrets Manager 中的金鑰值秘密。如需說明,請參閱 Secrets Manager 文件

DevOps 工程師

選取 Atlas 叢集層。

若要選取正確的 Atlas 叢集層,請遵循 MongoDB 文件中的指示。

DBA
任務描述所需的技能

修改 Terraform 指令碼。

在 GitHub 儲存庫的本機副本中,更新 module/mongodb-atlas/main.tf 檔案 (第 12 行) 中的秘密名稱,因此 Terraform 可以在部署期間從 Secrets Manager 擷取登入資料。

DevOps 工程師

建立 AWS 存取金鑰 ID 和私密金鑰。

若要建立您的 AWS 存取金鑰 ID 和私密金鑰,請遵循 AWS re:Post 文章中的指示如何建立 AWS 存取金鑰?

最佳實務是指派具有所需最低權限的政策,但在此案例中,請選取AdministratorAccess政策。

建立存取金鑰後,請檢閱 IAM 中的安全最佳實務,以了解管理存取金鑰的最佳實務。

DevOps 工程師

配置彈性 IP 地址。

配置至少兩個彈性 IP IDs。如需說明,請參閱 Amazon Virtual Private Cloud (Amazon VPC) 文件

DevOps 工程師

建立 S3 儲存貯體。

遵循 Amazon Simple Storage Service (Amazon S3) 文件中的指示,建立 S3 儲存貯體以存放 Terraform 部署的狀態。 Amazon S3

DevOps 工程師

更新 S3 儲存貯體以進行儲存。

更新本機版本 environments/development/main.tf 中的 S3 儲存貯體資訊,以符合您在上一個步驟中建立的儲存貯體名稱和區域,並指定金鑰字首。例如:

terraform { ... backend "s3" { bucket = "startup-name-product-terraform" key = "network/dev" region = "ap-southeast-1" } }

在此範例中,您可以將 Terraform 設定為使用金鑰字首network/dev來組織 Terraform 狀態檔案。您可以將 值變更為 prodstaging,以符合您要建立的環境。如需使用多個環境的相關資訊,請參閱本節中的最後一個步驟。

如需 Amazon S3 金鑰字首的詳細資訊,請參閱 Amazon S3 文件中的使用字首組織物件

DevOps 工程師

設定 Terraform 變數。

範例登陸區域使用 Terraform 變數定義檔案來定義輸入變數值。

變數檔案位於 environments/development/variables.tf。您可以在 environments/development/terraform.tfvars 檔案中設定變數值。如 GitHub 儲存庫的讀我檔案所述設定這些變數。

DevOps 工程師

設定環境變數。

如果您打算在本機電腦上執行 Terraform 指令碼,請設定下列環境變數:

  • AWS_ACCESS_KEY_ID: AWS 存取金鑰 ID

  • AWS_SECRET_ACCESS_KEY: AWS secret 存取金鑰

  • AWS_DEFAULT_REGION: AWS 區域

  • TF_LOGTerraform 日誌層級 (DEBUGINFO)

如需設定環境變數的詳細資訊,請參閱 AWS Command Line Interface (AWS CLI) 文件。

DevOps 工程師

檢查 VPC 組態。

若要遵循 建議的最佳實務 AWS,請在 Terraform 指令碼中設定 VPC 和子網路 CIDRs、NAT 閘道、路由和路由表的設定,以符合組織的需求。如需詳細資訊,請參閱 GitHub 儲存庫的讀我檔案

DevOps 工程師

標記 資源。

您可以標記 AWS 資源,以便在 Terraform 指令碼部署資源時對其進行監控。如需範例,請參閱 GitHub 儲存庫的讀我檔案。如需透過標籤監控資源的成本、用量等資訊,請參閱 AWS Billing 文件中的啟用使用者定義的成本分配標籤

DevOps 工程師

使用多個環境。

GitHub 儲存庫提供development環境資料夾。您也可以在環境資料夾中新增自己的環境。

若要新增環境,請將 development 資料夾複製到 下的新資料夾 (例如 prodstaging)environments。然後,您可以使用新值更新terraform.tfvars檔案。

DevOps 工程師
任務描述所需的技能

初始化 Terraform 工作目錄。

若要初始化工作目錄並下載必要的套件,請執行 命令:

terraform init
DevOps 工程師

建立執行計畫。

若要建立執行計畫並將 Terraform 對基礎設施所做的變更視覺化,請執行 命令:

terraform plan
DevOps 工程師

部署變更。

若要如程式碼所述實作基礎設施的變更,請執行 命令:

terraform apply
DevOps 工程師

驗證部署。

驗證 Terraform 在基礎設施中建立或修改的元件。

若要測試設定,請在 中佈建運算資源 (例如 Amazon EC2 執行個體或 AWS Lambda 函數) 或連接到 VPC。

DevOps 工程師,應用程式開發人員
任務描述所需的技能

清除。

完成測試後,請執行下列命令來銷毀 Terraform 部署在基礎設施中的資源:

terraform destroy
DevOps 工程師

相關資源

探索和評估

設定 MongoDB Atlas 和 AWS 環境

部署登陸區域