開發人員最喜歡作的事情是直接經過IDE管理髮布代碼,AWS Toolkit可讓開發人員將應用程序直接發佈到AWS的雲平臺,並輕鬆實現部署調用與開發,並經過Elastic Beanstalk堆棧實現應用程序的一鍵部署,代碼版本管理,數據庫管理,負載均衡與自動擴展等。AWS Elastic Beanstalk 是一項易於使用的服務,用於在熟悉的服務器(例如 Apache 、Nginx、Passenger 和 IIS )上部署和擴展使用 Java、.NET、PHP、Node.js、Python、Ruby、GO 和 Docker 開發的 Web 應用程序和服務。html
咱們只需上傳代碼,Elastic Beanstalk 便可自動處理從容量預置、負載均衡、自動擴展到應用程序運行情況監控的部署。同時可以徹底控制爲應用程序提供支持的 AWS 資源,並能夠隨時訪問底層資源。數據庫
Elastic Beanstalk 不額外收費,只需爲存儲和運行應用程序所需的 AWS 資源支付費用。windows
AWS Toolkit for Visual Studio 是一個適用於對 Visual Studio 集成開發環境 (IDE) 的插件。該工具包使開發人員使用亞馬遜 AWS 更容易開發,調用和部署 .NET 應用程序。瀏覽器
官方工具下載地址:https://aws.amazon.com/cn/visualstudio/緩存
備用地址:安全
AWS Toolkit for Visual Studio 2017和2019 https://s3testlq01.s3.cn-north-1.amazonaws.com.cn/AWSToolkitPackage.vsix
AWS Toolkit for Visual Studio 2013-2015 https://s3testlq01.s3.cn-north-1.amazonaws.com.cn/AWSToolsAndSDKForNet_sdk-3.3.606.0_ps-3.3.604.0_tk-1.14.5.0.msi服務器
涉及AWS組件:
AWS Elastic Beanstalk
AWS Toolkit for Visual Studio
Application Load Balance
實驗流程
環境準備
配置Visual Studio
配置Elastic Beanstalk
藍綠部署
自動擴展與負載均衡
轉換負載均衡器架構
本次演示選擇使用的環境爲Visual Studio 2019,能夠參考Visual Studio 官方教程安裝並下載https://visualstudio.microsoft.com/zh-hans/vs/app
下載AWS Toolkit for Visual Studio 2019後執行VSIX installer ,執行時須要關閉Visual Studio。負載均衡
在Visual Studio的資源管理器中進行項目發佈,能夠看到Publish to AWS Elastic Beanstalk…。
回到AWS控制檯的IAM,選擇用戶,本次測試選擇具備admin的權限的用戶,可是在生產環境中要按照權限最小化的原則,能夠在IAM Policy中設定具體的用戶具備什麼樣的權限。
這裏咱們直接選擇導入csv文件,固然也能夠手動將Access Key與Secret Key填寫到Visual Studio中。
Account Number就是咱們AWS的帳號。
Account Type 選擇China Region,不然選擇global Region。
這裏注意:點擊OK以後,關閉Publish to Amazon Web Services這個操做界面,而後從新發布項目Publish to AWS Elastic Beanstalk…
咱們能夠將項目或應用程序發佈到Beijing(BJS)或Ningxia(ZHY)。這裏咱們選擇Beijing這個Region。
—這一步要定義本身應用程序的名稱:application name
—定義本身應用環境的名稱:Environment。環境建議定義應用名-test或-dev或-prod。由於後面會介紹到Elastic Beanstalk的藍綠部署,能夠無縫地切換咱們的開發和生產環境。
—最後一步是檢查咱們的域名有沒有被佔用:Check availability…
下一步,定義軟件環境。主要是包含兩個操做:一是運行應用程序的OS環境。二是應用程序所運行的資源配置。
咱們會發現有很是多的instance類型能夠選擇,因爲環境run的是windows server因此推薦至少是C5.xlarge以上的instance類型4vcpu,8GiB RAM.
還有一個配置不要忽略,就是Key pair. 這個是登錄instance虛擬機的密鑰。確保這個密鑰文件在本身的手裏,若是沒有請建立。
下一步仍是安全側,就是Elastic Beanstalk的Role。意思是咱們的部署應用服務器能夠與哪些AWS資源交互。爲了測試,咱們直接給它分配一個默認的role。
下一步來定義Build與IIS的設置,好比App pool runtime, App path等。
檢查沒有問題的話就能夠Deploy發佈。
ElasticBeanstalk發佈應用的全部狀態都是可追蹤的,咱們在Events log上就能夠看到。
能夠看到它將代碼存儲在S3上,建立Security Group安全組,建立EIP,建立EC2等等。
發佈成功後,咱們能夠直接點開URL來驗證是否項目發佈成功。
下一步咱們修改一下View/Home/index.html文件,做爲另一個生產環境。
在進行發佈的時候既能夠覆蓋已有的環境,也能夠建立一個新的環境。爲了測試咱們先覆蓋已有環境。後面會介紹藍綠部署部分。
大概不到1分鐘的時間,更新的代碼環境就部署好了。
如今一切的開發和部署工做都是經過Visual Studio實現的,那麼究竟Elastic Beanstalk在AWS控制檯是什麼樣的?
在Elastic Beanstalk控制檯上能夠對應用程序的配置,監控,版本管理等進行配置。
監控頁面中能夠看到應用程序所在的服務器對資源的使用率是什麼,以下圖:
在應用程序中界面中,能夠回滾到任何應用程序的版本。好比此次咱們發佈了兩個版本的應用。
在配置頁面中,能夠看到ElasticBenstalk的詳細配置,以下圖:
咱們也能夠將 Amazon RDS SQL 數據庫添加到咱們的部署和測試的環境。AWS Elastic Beanstalk 經過設置數據庫主機名、用戶名、密碼、表名和端口的環境屬性,來向實例提供鏈接信息。在將數據庫添加到環境時,其生命週期將與環境的生命週期關聯。對於生產環境,建議將實例配置爲鏈接到外部數據庫。詳細請參考:https://docs.amazonaws.cn/elasticbeanstalk/latest/dg/using-features.managing.db.html?icmpid=docs_elasticbeanstalk_console
好比咱們將 Amazon RDS SQL Server EE 數據庫添加到部署和測試的環境,選擇數據庫的版本和類型等,這裏爲了保障數據庫的高可用,咱們能夠選擇Multi-AZ:
藍綠部署概念:
藍綠部署是最多見的一種0 downtime部署的方式,經過執行藍/綠部署可避免產生停機時間。藍綠部署原理上很簡單,就是經過冗餘來解決問題。一般生產環境須要兩個環境,一個是prod另一個是test或dev。用戶訪問咱們的應用每每是active的服務器集羣prod(綠色環境),當要更新本身的應用時,將更新的應用發佈到test或dev(藍色環境),通過測試完成後,將prod與test切換環境。若是運行出現了問題,能夠經過負載均衡器指向快速回滾到綠色環境。
Elastic Beanstalk 交換舊環境和新環境的別名記錄,以將流量從舊版本重定向到新版本,反之亦然。
咱們能夠經過Visual Studio發佈一個新的環境(藍色環境),具體步驟不在贅述,與前面的一致,以下圖:
如今建立了第二個環境,藍色環境dev,以下圖:
回到AWS控制檯,在Elastic Beanstalk上就有了兩個環境,
經過交換URL來完成藍綠環境的切換,大概5秒鐘左右,環境切換完成。在傳播 DNS 更改而且舊 DNS 記錄過時以前,請勿終止舊環境。DNS 服務器不必定會基於應用所在 DNS 記錄中設置的生存時間 (TTL) 來清除其緩存中的舊記錄。另外,當應用程序使用生產數據庫時,藍/綠部署要求您的環境獨立於生產數據庫運行。若是Elastic Beanstalk的環境附加有 Amazon RDS 數據庫實例,數據將不會傳輸到第二個環境,因此生產環境建議RDS數據庫獨立於Elastic Beanstalk堆棧以外。這個時候咱們再訪問以前的test環境,會發現已經與dev環境切換了,以下圖:
下一步是網站的高可用,負載均衡與彈性擴展和縮減
自動擴展與負載均衡
在Elastic Beanstalk的控制檯中修改容量,將單一實例切換到負載均衡,而後設置觸發條件,這裏咱們以CPU的使用率爲例,高於70%自動擴展1臺實例,低於30%縮減1臺實例。
而後應用,等待Elastic Beanstalk更新環境,這個時候的運行情況會切換成灰色,以下圖:
下一步就是經過ELB的DNS來訪問咱們的應用程序,ELB負載均衡器在EC2操做頁面的負載均衡器中,找到負載均衡DNS名稱,把它Copy到瀏覽器中。
咱們可能注意到了Elastic Beanstalk使用的負載均衡器是CLB,咱們能夠將它遷移到ALB中,啓用ALB遷移向導便可,但須要注意的是ALB要指定不一樣可用區的子網。具體操做步驟跟遷移向導作,因此不在贅述,轉換成功後咱們就能夠經過ALB來訪問.NET應用程序,以下圖:
這樣咱們的應用程序的入口就是負載均衡器ALB,即便在藍綠部署切換環境的時候,也無需切換入口的URL。
將AWS Toolkit for Visual Studio與Elastic Beanstalk結合使用,簡單易用的同時也大大的提升了開發效率。利用AWS的PaaS數據庫和雲計算的彈性提成了應用安全並減小了運維部署的工做。除此以外,還可使用AWS SDK for .NET幫助開發基於原生.NET APIs、經過AWS Tools for PowerShell 以PowerShell腳本的方式直接訪問管理和與AWS的服務交互。若是咱們的應用程序是.NET Core還能夠經過AWS ECS來實現微服務架構。
詳細視頻:https://edu.51cto.com/center/course/lesson/index?id=517074
博客參考:https://amazonaws-china.com/cn/blogs/china/using-visual-studio-aws-elastic-beanstalk-publish-net-applications/