您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 冶金工业 > 亚马逊AWS Docker的云中实战
©2015,AmazonWebServices,Inc.oritsAffiliates.Allrightsreserved.费良宏,AWSTechnicalEvangelistMatch,2016Doker的云中实战通用目的、近实时的微服务运行架构,抵御不可信代码Image: Izabella ReimersDockerTaskContainerInstanceAmazonECSContainerECSAgentELBInternetELBUser/SchedulerAPIClusterManagementEngineTaskContainerDockerTaskContainerInstanceContainerECSAgentTaskContainerDockerTaskContainerInstanceContainerECSAgentTaskContainerAZ1AZ2Key/ValueStoreAgentCommunicationServiceAmazonECSDockerTaskContainerInstanceAmazonECSContainerECSAgentELBInternetELBUser/SchedulerAPIClusterManagementEngineTaskContainerDockerTaskContainerInstanceContainerECSAgentTaskContainerDockerTaskContainerInstanceContainerECSAgentTaskContainerAZ1AZ2Key/ValueStoreAgentCommunicationServiceAmazonECSAmazonECSCLIAWSECS提供的APIAWSECS样例代码(PythonBoto3)现状与规模15million全球的学生2.5million完成了课程1,300+课程125+合作伙伴AunifiedexecutionframeworkCoursera技术架构启用批处理…报表面向教师的报表•评分报告•学生统计数据•课程进度统计内部报表•业务指标•付费意愿启用计划处理…市场•课程推荐邮件•针对性营销/激活电子邮件启用近实时处理…教学创新•同行评议匹配&分析•编程作业的自动评分在早期…January2012早期那些糟糕的日子@CourseraCascade•基于PHP的任务•最初的程序执行屏幕会话•对新的任务(job)提供轮询的APIs•因为无法确定原因的内存泄漏而需要定期重启•脆弱和不可靠的早期…早期那些糟糕的日子@CourseraSaturn•Scala调度批处理作业•采用QuartzSchedulerlibrary•比之前Cascade更好,但是…•全部的任务运行在同一个JVM,导致了相互的干扰(interference)在那以后的日子…寻找更好的办法…需求不过如此…可靠性易于开发易于部署效率高低维护量有效的成本一些可能的选择自建•尝试过,但证明是不可靠的•很难处理协调和同步•强大,但用于生产环境不容易•需要有经验的开发人员•为GoogleGCE而设计•不是一个托管的服务,需要更多的运维投入求助于AmazonECSAmazonre:Invent2014–Dr.WernerVogels宣布了ECS服务Screenshotfrom=LE5uBqNp2DsbyAmazonWebServices求助于AmazonECS很少的维护与其它的AWS服务集成易于开发然而…AmazonECS是一个良好的构建基础,但是仍然需要针对需要开发所需的工具开发的项目:IguazúMarissaStrniste()CC-BY-2.0•为AmazonECS的批处理调度器•立刻•延期(在X时刻运行一次)•重复调度(cron-类似)•通过API和客户端可以编程访问内部•命名为Iguazú瀑布•世界上最大流量的瀑布•希望Iguazú项目能够处理相似的作业量Iguazú:架构ECSAPIIguazúFrontendIguazúSchedulerIguazúBackendCassandraServicesServicesIguazúAdminECSWorkersSQSDevsUsersIguazú:架构ECSAPIIguazúFrontendIguazúSchedulerIguazúBackendCassandraServicesServicesIguazúAdminECSWorkersSQSDevsUsersIguazú:架构ECSAPIIguazúFrontendIguazúSchedulerIguazúBackendCassandraServicesServicesIguazúAdminECSWorkersSQSDevsUsersIguazú:架构ECSAPIIguazúFrontendIguazúSchedulerIguazúBackendCassandraServicesServicesIguazúAdminECSWorkersSQSDevsUsersIguazú:架构ECSAPIIguazúFrontendIguazúSchedulerIguazúBackendCassandraServicesServicesIguazúAdminECSWorkersSQSDevsUsersIguazú:架构ECSAPIIguazúFrontendIguazúSchedulerIguazúBackendCassandraServicesServicesIguazúAdminECSWorkersSQSDevsUsersIguazú:架构ECSAPIIguazúFrontendIguazúSchedulerIguazúBackendCassandraServicesServicesIguazúAdminECSWorkersSQSDevsUsersIguazú:架构ECSAPIIguazúFrontendIguazúSchedulerIguazúBackendCassandraServicesServicesIguazúAdminECSWorkersSQSDevsUsers开发Iguazú的任务classJobextendsAbstractJobwithStrictLogging{overridevalreservedCpu=1024//1CPUcoreoverridevalreservedMemory=1024//1GBRAMdefrun(parameters:JsValue)={logger.info(Iamrunningmyjob!)expensiveComputationHere()}}其它的服务调用任务//invokingajobwithonefunctioncall//fromanotherserviceviaNaptimeRPC/RESTframeworkvalinvocationId=IguazuJobInvocationClient.create(IguazuJobInvocationRequest(jobName=exportQuizGrades,parameters=quizParams))Iguazú:开发人员/运维人员界面任务开发易于开发1.开发人员à代码合并到master上。完成!Jenkins构建步骤:1.从master中构建zip包2.用zip文件准备Dockerimage3.推送image到Dockerregistry4.注册的用户利用AmazonECSAPI更新任务日志•日志位于/var/lib/docker/containers/*•上传到日志分析服务(Sumologic)•封装输出任务的名称和任务ID,以便于方便检索•现在感觉好多了👌度量•使用第三方的检测和分析工具(Datadog)•度量包括任务和容器实例•只要运行的设备能够连接到互联网,就意味着一切良好自从20154月开始…生产环境中运行65个任务每天运行1000个任务44个不同的调度任务编程作业评估编程作业@Coursera安全挑战在你的AmazonEC2上编译并运行未知的任意的代码你愿意编译并运行任意的一个人提交的代码在你位于互联网上一台计算机上吗?第一代系统课程中的学生使用不同的AWS账户客户评分系统运行在不同的云计算提供商课程评分运行在教师的计算中学生课程服务器查询服务第一代系统的缺陷无自动扩展的能力缺乏标准的安全性评分系统崩溃设计目标节省成本免维护近乎实时安全基础设施设计目标节省成本免维护近乎实时安全基础设施设计目标节省成本免维护近乎实时安全基础设施设计目标节省成本免维护近乎实时安全基础设施威胁模型预防提交的代码:•影响对其他提交者的评分•影响评分的环境(例如:DoS)•影响Coursera学习平台的其它部分其它目标:•最大限度减少信息的滲出•测试用例、解决方案等等…•对于提交代码的最小风险(影响最终成绩)•避免成为比特币矿工或者网络僵尸机器威胁模型–假定•运行任意的二进制代码•教师的打分脚本可能存在漏洞•评分的代码不可信•在Docker和Linux命名空间上的未知的漏洞攻击/漏洞类别分为两个大类:•假设基本的容器是安全的,防止因为运行任意的代码而产生的负面的影响•假设基本的容器技术是脆弱的,尽可能减少负面的影响为此而做:GrIDPatrickHoesly()CC-BY-2.0•针对评分服务+架构编程作业•建立在AmazonECS和Iguazú项目上•名字来源于“digitalfrontier”一书中的Tron•头字母:GradingInsideDockerGrID架构LearnersGrIDIguazúS3BucketECSAPIsGradingMachinesVPCFirewallsCourseraProductionAccountCourseraGrIDGradingAccountGrID架构LearnersGrIDIguazúS3BucketECSAPIsGradingMachinesVPCFirewallsCourseraProductionAccountCourseraGrIDGradingAccountGrID架构LearnersGrIDIguazúS3BucketECSAPIsGradingMachinesVPCFirewallsCourseraProductionAccountCourseraGrIDGradingAccountGrID架构LearnersGrIDIguazúS3BucketECSAPIsGradingMachinesVPCFirewallsCourseraProductionAccountCourseraGrIDGradingAccount攻击:资源耗尽防御:•Docker/CGroups:•CPU配额•内存限制•Swap限制•针对容器执行的硬性超时限制•btrfs的限制•文件系统的存储配额•IOPS限流攻击:内核资源耗尽防御:•每个容器打开文件的限制(nofile)•nproc进程限制•每个cgroup中内核使用的内存的限制•执行时间的限制攻击:网络攻击攻击:•比特币挖矿•来自第三方的DoS攻击•存取AmazonS3和其它AWSAPIs防御:•拒绝网络访问修改ECSAgent:网络模式•NetworkDisabled限制太多•部分学生需要本地的loopback•弃用部分功能•--net=none+denynet_admin+auditnetwork•为每个容器简历一个独立的网络栈,实现隔离•github.com/coursera/amazon-ecs-agent攻击:命名空间/容器中的漏洞•强化应用&强制的存取控制
本文标题:亚马逊AWS Docker的云中实战
链接地址:https://www.777doc.com/doc-6165087 .html