开发人员最喜欢作的事情是直接经过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/