您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 质量控制/管理 > 亚马逊 基于AWS的DevOps实践指南
©Amazon.com,Inc.anditsaffiliates.Allrightsreserved.基于AWS的DevOps实践指南DamonDeng邓明轩AWS高级解决方案架构师mingxuan@amazon.com什么是DevOps?“DevOps是软件开发、运维和质量保证三个部门之间的沟通、协作和集成所采用的流程、方法和体系的一个集合。它是人们为了及时生产软件产品或服务,以满足某个业务目标,对开发与运维之间相互依存关系的一种新的理解。.”Source:为什么需要DevOps?因为我们不希望事情是这样的…为什么需要DevOps?快速迭代,敏捷开发TimeChange瀑布式开发,版本发布少TimeChange我们希望…怎么在AWS上面实现DevOps?AWS对DevOps的全面支持Programs,CLI,Scripts,DML,…Python,Java,PHP,Node.js,…RESTAPIFoundationServicesPlatformAPISDKFrameworks/ToolsCode基于AWS的DevOps实践要素API&SDKCode&CLIAWSServices代码和命令行CloudFormationCodeDeployOpsWorksElasticBeanstalk第三方服务AnsibleSaltstack…Code&CLI代码和命令行操作AWS服务的三种方式APIsandSDKsManagementConsoleCommandLineInterfaceDevOps基础AWSTools(SDK,CLI,IDE,etc.):代码示例–创建两台EC2实例CLI示例-给EC2实例添加标签awsec2create-tags--resourcesi-ffb064c7i-8eb561b6--tagsKey=Name,Value=QConEC2大规模基础架构的DevOps需要框架和工具AWSDevOps服务适用场景ProvisionDeployMonitor定制化方便性CloudFormationCodeDeployCloudWatchBeanstalkOpsWorksIAMCloudFormation基础平台模板化•简化AWS服务的部署,快速部署一个Stack•模板化基础平台•CloudFormation自动解决资源部署的先后和依赖关系•版本控制•第三方管理工具可以通过API集成CloudFormationInfrastructureasCodeSamples:基于模板的快速部署CodeDeployAgentAgentAgentAgentAgentAgentDeploymentGroupDeploymentAmazonS3GitHubApplicationBundleCodeDeploy是什么?CodeDeploy的价值-自动化部署•部署任何的应用,重用现有的设置代码•跨开发、测试和生产环境一致地部署应用•与AutoScaling集成•随着你的基础架构一起扩展;部署到一个EC2实例或者几千个实例CodeDeploy的价值-最小化停机时间•跨EC2实例执行滚动升级•跟踪应用部署的健康状况•部署可以停止和回滚CodeDeploy的价值-集中的控制通过AWS管理控制台、CLI、SDK和API启动,控制,监控应用部署跟踪和查看部署的历史记录检查变更历史和成功率CodeDeploy的价值-容易上手•部署任何的应用,重用现有的设置代码•与现有的软件分发工具集成•使用来自AWS合作伙伴的预配置集成CodeDeploy架构CodeDeploy相关术语ApplicationRevision#1Revision#2Revision#3部署什么?Revision#1怎么部署?InstanceInstanceInstanceDeploymentGroupAuto-ScalingGroup部署到哪里?ApplicationSpecificationFileversion:0.0os:linuxfiles:-source:/destination:/var/:BeforeInstall:-location:scripts/install_dependencies.shtimeout:300runas:rootAfterInstall:-location:scripts/change_permissions.shtimeout:300runas:rootApplicationStart:-location:scripts/start_server.shtimeout:300runas:rootApplicationStop:-location:scripts/stop_server.shtimeout:300runas:root部署的步骤•创建应用(Application)•创建部署组(DeploymentGroup)•添加EC2实例到部署组•选择ServiceRole•选择部署配置•选择Revision位置•部署OpsWorksOpsWorkAWSOpsWorks是一款应用程序管理服务,可帮助您使用Chef自动执行操作性任务,如代码部署、软件配置、软件包安装、数据库设置和服务器扩展。OpsWorks工作原理OpsWorksBackendOpsWorksAgentAmazonEC2,AmazonEBS,EIP,RDSAmazonVPC,ElasticLoadBalancing….Auto-Scaling,Auto-Healing….On-instanceexecutionviaChefclientCommandJSONCommandLog+Status大大简化了Chef环境的搭建OpsWorks的价值-支持任意的应用•支持非常广泛的架构•使用Chefrecipes和Bash脚本•控制应用的配置相关的所有方面•扩展并兼容内置的layers或者创建自己的layerMonitoringProvisioningLoggingDeploymentModelingConfigurationManagementAutoScalingAccessManagementResourceManagementOpsWorks的价值-通过代码进行配置•使用Chefrecipes和Bash脚本定义全部的环境配置•类似源代码方式维护并版本化管理•确保一致的配置内置以及定制的ChefRecipes自定义的Recipe范例–创建目录OpsWorks的价值-自动化伸缩•动态配置与调度•自动化实例扩展与自动化修复•根据用户的设置创建新的实例•针对系统事件变更实例配置OpsWorks的价值-资源的组织管理•资源通过Stack方式进行建模•保留到存储库中•可复用OpsWorks的价值-支持所有的服务器•支持现有的EC2实例•支持运行在用户数据中心中的服务器•跨越混合架构,统一的平台部署和管理应用你需要做什么?•定义需要的资源,例如EBS卷,RAID,staticIP,等.•定义要安装的软件以及如何配置使用场景1–服务器配置OpsWorks做什么?•供应新的服务器•供应其它资源,例如.EBS卷•安装需要的软件•部署应用•健康检查•注册到负载均衡器中你需要做什么?•定义应用•定义自动扩展使用场景2–应用服务器扩展OpsWorks做什么?•接收容量的告警•供应新的服务器•安装需要的软件•部署应用•安装数据库驱动程序•安全地发送数据库连接信息(例如,密码)•健康检查•注册到负载均衡器中使用场景3–部署的变更•针对任何变更:–数据库登录密码变更–源代码更新–包的更新–安全补丁更新等•OpsWorks为您处理所有这些事情ElasticBeanstalkAWSElasticBeanstalk(EB)•简易部署,监控与扩展3层web应用与服务•由EB供应和管理基础架构–但是你保留完全的控制权•预配置的应用容器•支持下列平台:Beanstalk的价值-快速&简易上手•最快速、最简单的方式部署应用到AWS环境•您只需上传代码,ElasticBeanstalk即可自动处理从容量预配置、负载均衡、自动扩展到应用程序运行状况监控的部署Beanstalk的价值-提高开发者生产力•为您供应和运维基础架构,管理应用堆栈•集中精力在代码编写上,无需花费时间在管理和配置服务器、数据库、负载均衡、防火墙和网络等方面。Beanstalk的价值-自动伸缩•基于应用的特定需要自动化伸缩你的应用•使用CloudWatch指标触发扩展动作Beanstalk的价值-完全的资源控制•对于AWS资源拥有完全的控制,提升应用的灵活性•接管部分(全部)的基础架构的组件常见的使用场景•网站•API后端•移动应用后端部署选项•通过AWS管理控制台•通过Git/EBCLI–$ebdeploy•通过AWSToolkitforEclipse和VisualStudioIDE部署配置区域堆栈(容器)类型单一实例负载均衡器搭配auto-scaling或者数据库(RDS)可选应用代码应用版本所有的版本都保存在AmazonS3,代码甚至可以从Git上面推送!应用版本与环境CLIworkflow示例–首次部署初始应用部署:$gitinit.$gitadd.InitializeyourGitrepository1Addyourcode4$ebinit$gitcommit–m“v1.0”CreateyourElasticBeanstalkapp2Commit5Followthepromptstoconfiguretheenvironment3Createtheresourcesandlaunchtheapplication6$ebcreateCLIworkflow示例–应用更新应用更新:Updateyourcode1$gitadd.$gitcommit–m“v2.0”$ebdeployPushthenewcode2Monitorthedeploymentprogress3$ebstatus小结AWSDevOps服务适用场景ProvisionDeployMonitor定制化方便性CloudFormationCodeDeployCloudWatchBeanstalkOpsWorksIAMAmazonCloudWatchAWSIAM(Identity&AccessMgmt)MonitorresourcesManageusers,groups&permissions贯彻始终的安全与监控谢谢!
本文标题:亚马逊 基于AWS的DevOps实践指南
链接地址:https://www.777doc.com/doc-4343284 .html