您好,欢迎访问三七文档
Docker在paas平台上的应用探索高哲纲要•畅游web架构进化过程•docker的实践•基于docker的paas架构介绍•问题与理想畅游web架构进化过程畅游web架构进化过程•物理机时代问题:资源申请到位慢,资源和环境难以隔离,服务密度小,缩容扩容效率低…………………吐不完的槽•虚机时代:解决:资源到位快,环境隔离问题:启动慢,环境耗资源,迁移费时费力;进化过程中的思考有没有一个他,能够帮助我们省点心省点力,省的被老板骂呢?优点:•轻量简单:进程级,性能损耗小,Image层叠式•快速节约:秒级完成容器创建到启动,镜像继承•定制灵活:镜像丰富,API接口丰富,移植方便缺点:•没有独立的内核,一定的隔离性,安全并不完善•网络功能比较简单,不能满足复杂的应用场景进化过程中的思考——docker•服务的密度大幅度增加,提升服务器的资源使用率;•提供分钟级的应用部署上线;•服务与硬件解耦;•服务与数据分离;•弹性扩展收敛迅速;•应用运行环境隔离;进化过程中的思考——docker能够帮助我们解决什么?Docker的实践•网络•镜像•dockerfile•仓库•资源定制Docker的实践——网络采用bridge,独立IP方式:•使用pipework;•兼容当前网络架构;•可以通过cgroup,实时提取容器流量;•结构简单,易于docker集群的管理。Docker的实践——镜像镜像构建系统环境redhat6.6+2.6.34KernelDocker1.3/1.5构建基础Image基础软件安装基础服务初使化应用Image应用软件配置文件镜像制作Dockerfile(推荐)通过dockercommit生成镜像(不推荐)通过dockerimport生成镜像(不推荐)Docker的实践——dockerfileDockerfile构建原则解耦性:基础镜像与应用镜像拆分开,只构建应用镜像。可快速替换最小化:不要安装不必要的包和服务,让image尽可能轻巧镜像层:把镜像层数减到最少,减少镜像的大小,加快容器的启动速度Cache:构建的时候使用cache,会复用曾执行过相同命令的镜像层。减少创建时间dockerfile编写技巧•Dockerfile内容越少越好•将用到的文件放入容器•将需要做的事放到脚本中Docker的实践——生成镜像镜像生成过程•从FROM指定的父镜像开始•启动一个容器•在容器里执行指定的一条命令•完毕后关闭容器,并提交为一个none镜像•在从上一个none镜像启动一个容器•不断循环,直到Dockerfile里所有内容执行完毕•最后一个镜像会被打上指定的tag如图:“-ttest”,此时会生成一新的镜像test•属于我们自己的仓库;dk.cyoupic.com:5000/cyou/webbase•目前存放大概80个线上镜像模板;•目前只提供畅游全部IDC内网pull镜像;•平台调用registryAPI,提供镜像选择生成容器Docker的实践——私有镜像仓库Docker的实践——资源定制Docker通过cgroup实现CPU,内存系统资源的限制。CPU:-c给容器分配CPU的相对权重--cpuset可以绑定容器进程固定使用哪几个核--cpu绑定容器使用哪几个核限制是仅仅当它们应该被执行的时候才会强制执行。Mem:参数-m,--memory=“”限制容器的内存使用量,同时指定SWAP内存。不限制内存将导致一个容器可以很容易使得整个系统不可用的问题。Docker的实践——容器启动过程基于docker的paas架构介绍•架构图•服务与发现•配置自动变更•数据存储•容器监控•日志收集•平台展示PAAS架构设计的理念•新平台运维效率不能低于我们目前的效率,否则得不偿失;•新平台能够复用我们当前架构中的组件与规则;•技术不分高低,能够解决问题就是好的;•平台之间/平台内部通讯模型均为:基于消息数据总线通讯;•平台提供服务是基于RestfulAPI,松耦合的。CYOU基于Docker的Paas平台架构设计服务发现:zookeeperwatch.pyrabbitmqregister.pystatus.py畅游Paas平台——服务与发现upstream状态变更:nginx-dyups模块(提供修改upstream的api接口,不需要重启nginx,信息存储在内存中)nginx-lua(ng启动进入init-by-lua阶段抓取Redis的upstream信息生成本地配置文件)redis(存储upstream信息)畅游Paas平台——配置自动变更畅游Paas平台关键组件——zookeeper•为什么是zookeeper,而不是etcd我们在构建paas平台时,etcd还不够稳定,etcd2.0一月份发布,目前大部分功能已稳定zookeeper我们相对更熟悉,目前我们的hadoop集群在使用Zookeeper:实例注册/发现•容器的状态和信息通过注册器写入zookeerper;•注册器在容器里•容器的关注点在于容器内的应用,而非容器本身的状态:应用异常=容器异常WEB类检测方法:URL检测•返回200,注册到Zookeeper上(临时节点)并保持长连接•返回非200,删除临时节点•若网络故障,与Zookeeper的连接自然会断开源的消息队列服务:生产者不断地往队列里面写入信息,消费者不断读取或者订阅队列中的消息通过MQ实现:•将消息推送到外部平台•更新自己的paas平台数据畅游Paas平台关键组件——rabbitMQ目标:•数据不存储在容器内,服务与数据分离;•数据的高可用,高性能,高扩展;•结合dockervolume,数据卷的更新不会影响镜像;•数据在容器间共享和重用。畅游Paas平台关键组件——数据存储畅游Paas平台关键组件——数据存储选型:Ceph:•提供RBD块存储•提供cephfs文件系统,因为Rbd块设备不能满足作为共享文件存储的需要存储内容:•静态文件、日志、代码、临时文件,工具脚本binds={#获得挂载参数'/opt/docker-volume/mount/%s/html'%container_name:{'bind':'/home/htdocs',#统一代码目录'ro':False},'/opt/docker-volume/mount/%s/logs'%container_name:{'bind':'/home/logs',#统一日志目录'ro':False},'/opt/docker-volume/mount/%s/tmp'%container_name:{'bind':'/tmp',#临时文件目录'ro':False},'/opt/docker-volume/init/%s'%img_without_tag:{'bind':'/etc/web/ins-init',#统一脚本目录'ro':True},}畅游Paas平台关键组件——数据存储畅游Paas平台关键组件—容器监控优点:1.Web页面方式展示,可以看到实时数据。2.简单易用,无需安装,启动一个容器即可。缺点:1.不能集中监控,每个宿主机都需要安装一个容器来运行。2.无法查看历史数据和运行趋势。通过编写脚本,可以直接从/cgroup直接读取数据进行分析。将监控数据集中到paas平台进行展示。畅游Paas平台关键组件—容器监控畅游Paas平台关键组件—日志收集Logstash+ElasticSearch+Kibana畅游Paas平台问题与理想问题•自动调度容器•高可用和冗余•安全策略防护•故障自恢复•实时状态统计Paas团队成员
本文标题:搜狐畅游平台事业部综合运维部的经理 高哲 《Docker在 paas平台上的应用探索》
链接地址:https://www.777doc.com/doc-6444852 .html