從 Microsoft Azure 應用程式服務將 .NET 應用程式遷移至 AWS Elastic Beanstalk - AWS Prescriptive Guidance

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

從 Microsoft Azure 應用程式服務將 .NET 應用程式遷移至 AWS Elastic Beanstalk

由拉格哈文德女士 (AWS) 創建

R 類型 平台重建

來源:應用程式

目標:AWS Elastic Beanstalk

建立者:AWS

:环境 PoC 或試驗

:Technologies 網站與網路應用程式;移轉

工作負載:微軟

Summary

此模式描述如何將裝載在 Microsoft Azure 應用程式服務上的 .NET Web 應用程式遷移到 AWS Elastic Beanstalk。有兩種方式可將應用程式遷移至 Elastic Beanstalk:

  • 使用 AWS Toolkit for Visual Studio-這個外掛程式提供了將自訂 .NET 應用程式部署到 AWS 的最簡單和最直接的方式。您可以使用此方法將 .NET 程式碼直接部署到 AWS,並直接從 Visual Studio 建立支援資源,例如適用於 SQL Server 資料庫的亞馬遜關聯式資料庫服務 (Amazon RDS)。

  • 上傳並部署至 Elastic Beanstalk-每個 Azure 應用程式服務都包含稱為 Kudu 的背景服務,這對於擷取記憶體傾印和部署記錄檔、檢視組態參數以及存取部署套件非常有用。您可以使用 Kudu 主控台來存取 Azure 應用程式服務內容、擷取部署套件,然後使用 Elastic Beanstalk 主控台中的上傳和部署選項,將套件上傳至 Elastic Beanstalk。

這種模式描述了第二種方法(通過庫杜將您的應用程序上傳到 Elastic Beanstalk)。該模式也會使用下列 AWS 服務:AWS Elastic Compute Cloud、Amazon Virtual Private Cloud (Amazon VPC)、Amazon CloudWatch Elastic Compute Cloud (Amazon EC2) Auto Scaling、Amazon Simple Storage Service (Amazon S3) 和 Amazon Route 53。 

.NET Web 應用程式已部署到 AWS Elastic Beanstalk,該應用程式在 Amazon EC2 Auto Scaling 群組中執行。您可以根據 Amazon CloudWatch 指標 (例如 CPU 使用率) 設定擴展政策。對於資料庫,您可以根據您的應用程式和業務需求,在異地同步備份環境或 Amazon DynamoDB 中使用 Amazon RDS。

先決條件和限制

先決條件

  • 作用中的 AWS 帳戶

  • 在 Azure 應用程序服務中運行的 .NET Web 應用程序

  • 使用 Azure 應用程式服務庫杜主控台的權限

產品版本

  • .NET Core (x64) 1.0.1、2.0.0 或更新版本,或 .NET Framework 4.x、3.5 (請參閱Windows Server 平台上的 .NET 歷史記錄)

  • 網際網路資訊服務 (IIS) 版本 8.0 或更新版本,在 Windows 伺服器 2012 年或更新版本上執行

  • .NET 2.0 或 4.0 執行時間。

Architecture

來源堆疊

  •  使用 .NET 架構 3.5 或更新版本或 .NET 核心 1.0.1、2.0.0 或更新版本開發,並裝載在 Azure 應用程式服務 (Web 應用程式或 API 應用程式) 上的應用程式

目標堆疊

  • 在 Amazon EC2 Auto Scaling 群組中執行的 AWS Elastic Beanstalk

遷移架構

部署工作流程

Tools

工具

  • .NET Core 或 .NET 框架

  • C#

  • IIS

  • Kudu 主控台

AWS 服務和功能

  • AWS Elastic Beanstalk— Elastic Beanstalk 是一種易於使用的服務,可以部署和擴展 .NET Web 應用程式。Elastic Beanstalk 會自動管理容量佈建、負載平衡和自動擴充。

  • Amazon EC2 Auto Scaling 群組— Elastic Beanstalk 包含 Auto Scaling 群組,可管理環境中的 Amazon EC2 執行個體。在單一執行個體環境中,Auto Scaling 群組可確保隨時都有一個執行個體正在執行。在負載平衡的環境中,您可以設定群組欲執行的各種執行個體,Amazon EC2 Auto Scaling 會依據負載視需要新增或移除執行個體。

  • Elastic Load Balancing— 當您在 AWS Elastic Beanstalk 中啟用負載平衡時,它會建立負載平衡器,在環境中的 EC2 執行個體之間分配流量。

  • Amazon CloudWatch— Elastic Beanstalk 會自動使用 Amazon CloudWatch 提供應用程式和環境資源的相關資訊。Amazon CloudWatch 支援標準指標、自訂指標和警示。

  • Amazon Route 53— Amazon Route 53 是一種可用性高、可擴展性強的雲端網域名稱系統 (DNS) Web 服務。您可以使用 Route 53 別名記錄將自訂網域名稱對應至 AWS Elastic Beanstalk 環境。

Epics

任務描述所需技能
設定虛擬私有雲端 (VPC)。

在您的 AWS 帳戶中,建立含有所需資訊的 VPC。

系統管理
建立子網路。

在 VPC 中建立兩個或多個子網路。

系統管理
建立路由表。

根據您的需求建立路由表。

系統管理
任務描述所需技能
存取 Azure 應用程式服務庫杜主控台。

瀏覽至 [應用程式服務] 儀表板,然後選擇 [進階工具]、[移至],透過 Azure 入口網站存取 Kudu。或者,您可以修改 Azure 應用程式服務 <appservicename> 網址,如下所示:

系統管理/應用程式開發人員
從庫杜下載部署套件。

選擇 [偵錯主控台] 選項,以瀏覽至 Windows PowerShell。這將會開啟工道主控台。轉到 wwwroot 文件夾並下載它。這將下載 Azure 應用程序服務部署包作為一個 zip 文件。如需範例,請參閱附件。

系統管理/應用程式開發人員
為 Elastic Beanstalk 建立套件。

解壓縮從 Azure 應用程式服務下載的部署套件。創建一個 JSON 文件稱為 aws-Windows-部署-清單 .json(這個文件只需要用於 .NET 核心應用程序)。創建一個 zip 檔案,其中包括 aws-Windows-Windows-部署資訊清單 .json 和 Azure 應用程式服務部署套件檔案。如需範例,請參閱附件。

系統管理/應用程式開發人員
建立新的 Elastic Beanstalk 應用程式。

開啟 Elastic Beanstalk 主控台。選擇現有應用程式或建立新的應用程式。

系統管理/應用程式開發人員
建立環境。

在 Elastic Beanstalk 主控台的「動作」功能表中,選擇「建立環境」。選取網頁伺服器環境和 .NET/IIS 平台。對於應用程式碼,請選擇「上傳」。上傳您為 Elastic Beanstalk 準備的 zip 檔案,然後選擇「建立環境」。

系統管理/應用程式開發人員
設定 Amazon CloudWatch。

根據預設,會啟用基本 CloudWatch 監控。如果您要變更組態,請在 Elastic Beanstalk 精靈中選擇已發佈的應用程式,然後選擇「監視」。

系統管理
確認部署套件位於 Amazon S3 中。

建立應用程式環境後,您可以在 S3 儲存貯體中找到部署套件。

系統管理/應用程式開發人員
測試應用程式。

建立環境後,使用 Elastic Beanstalk 主控台中提供的 URL 來測試應用程式。

系統管理

其他資訊

備註

  • 如果您要將內部部署或 Azure SQL 伺服器資料庫遷移到 Amazon RDS,您也必須更新資料庫連線詳細資料。 

  • 為了測試目的,附加範例示範應用程式。

Attachments

attachment.zip