原创
作者:王雪燕 2017-11-21 10:11:19
开发
架构
云计算 由51CTO 主办的第十六期以“Tech Neo”为主题的技术沙龙活动中,来自陌陌科技SRE团队负责人王景学分享了陌陌在K8s容器方面的一些应用实践。
我们提供的服务有:成都做网站、网站制作、微信公众号开发、网站优化、网站认证、庆阳ssl等。为1000多家企事业单位解决了网站和推广的问题。提供周到的售前咨询和贴心的售后服务,是有科学管理、有技术的庆阳网站制作公司
【51CTO.com原创稿件】容器集群管理系统与容器云平台的选择非常重要,因为容器管理系统是否先进智能、容器云管理平台是否灵活易用且高效,直接影响企业开发运维的效率与速度、资源利用率的高低。在这个竞争激烈,风云突变的时代,应用的开发效率、稳定性、扩展性和安全性,决定了企业的竞争力与市值。
当下,K8s凭借在扩展性、管理、大数据分析、网络场景、兼容性、负载均衡、灰度升级、失败冗余、容灾恢复、 DevOps 等方面的优势,受到部分企业的青睐。近日,由51CTO 主办的第十六期以“Tech Neo”为主题的技术沙龙活动中,来自陌陌科技SRE团队负责人王景学分享了陌陌在K8s容器方面的一些应用实践。
在使用k8s之前,陌陌在应用发布和运行环境方面遇到的具体问题,如下:
针对以上遇到的问题,我们决定对架构进行改造,同时制定了一系列架构改进目标,如下:
综合这些问题和目标,陌陌选择使用 Kubernetes来管理 Docker 集群,当 Kubernetes 满足不了需求时,可在部署平台开发相应的功能来满足开发查看日志、监控和报警等需求,尽量避免登录主机和容器。
陌陌从2015年下半年开始对Docker进行调研和实践,2016年初开始调研k8s,尝试架构方面的改进工作,基于自研发布系统及K8s、OVS和Docker构建容器管理平台。实现了基于Docker集群的部署系统,便于开发者便捷地部署自己的应用程序。最终达到部署环境干净一致,可重复部署、迅速扩容和回滚。
如下图,是容器管理平台的架构图:
容器管理平台主要功能有集群管理和状态展示、灰度发布和代码回退、组件模板、应用管理、镜像仓库和权限管理等。它采用前后端分离的架构,前端使用 JS 渲染,后端使用 Python 提供 API。这样开发者可以快速的进行发布和回退操作。
容器管理平台在应用发布流程,集群调度策略,k8s节点网络架构,阿里云支持,基础监控指标等方面进行了优化改进。
应用发布流程
陌陌之前老版本发布系统是串行的,需要单台进行替换。如下图,是新架构下应用的发布流程:
新的发布系统是用户提交代码后,在发布系统选择要部署的commit,点击构建以后,系统会自动编译,打包成镜像,推送镜像仓库。如果构建成功,用户点击发布新版本的实例,灰度没有问题,全量,下线老版本的实例。回退时代码不需要构建,直接发布老版本实例。在某段时间内,新老版本是同时存在的。
集群调度策略
陌陌的集群调度策略是为应用配置默认的location(集群标签),如果是线上应用,应用需要申请location,部署到正式的集群(机房要求,资源充足)。这里应用都不能独占集群,均采用的是混合部署的方式。
同一个集群下,分成不同组并组定义标签,应用支持独占机器,同一个组之间的应用实例可以随意飘移。
IDC网络节点
在IDC网络节点构建部分,陌陌使用的是全局IP地址,容器与容器之间、容器与主机之间都是互通的。这样一来,通信可以不使用任何封装等技术,相对来说比较高效且对现有网络变动影响小(仅需封装trunk,无其他协议,mtu等变化)。
如下图,是IDC网络节点架构图:
在这样的架构下,网络部署和扩展相对简单,因为每台机器的IP地址段是预先静态配置的。
这里值得注意的是,服务器双链路上联,trunk上联物理交换机需要合理避免二层环路。
这样的方式存在的不足是,当容器较多时,mac地址数量增多,给物理交换机Mac地址表带来压力,广播域扩大就是需要严谨的规划vlan 角色相关信息。
阿里云支持
当前,陌陌K8s master集群下节点包含IDC、阿里云及两者混合三种方式,如下图:
阿里云采用的网络模式是Host-gw,陌陌搭建了一条IDC与阿里云的VPC专线和VPC的虚拟路由进行静态配置。无论是IDC节点,还是阿里云节点上的应用都要适应IP动态变化。
基础监控指标
陌陌的监控方案大多是基于Kublet cadvisor metrics接口去做的数据汇总。最初陌陌采用的方式是利用Python脚本,去调用接口,在取到一些CPU内存、网络、流量的数据,存入ES,分析之后进行展示。之后的报警系统,是利用Java应用去调取Kublet cadvisor metrics接口,进行数据的收集。
基础监控指标主要有内存(total,rss,cache)、流量(incoming,outgoing)、网络packets(drop,error, total)等。
应用迁移方面,陌陌做了很多适配工作,使得应用不需要太多的改动就可以无缝迁移。具体适配细节如下:
在应用迁移过程中,也遇到了一些问题,如Swap、cpu软中断优化、资源利用率、Ip白名单、适用于内网等问题。
当前,陌陌的容器业务规模服务器约400台、线上容器6000、应用700+。应用的类型是java+php+node+python+tomcat。
希望运维可以实现对应用请求量,线程数,流量等指标的监控。基准值部分,达到单实例可承载请求量,线程数,流量。伸缩方面,做到最小保留实例数,最大扩容实例数,根据监控反馈和基准值计算需要扩容和缩容的实例数, 按照各个集群资源余量按比例伸缩。
【嘉宾简介】
陌陌王景学,现任SRE团队负责人,以前运维相关工作都做过,自动化,虚拟化,docker,k8s相关都非常熟悉。
Tech Neo技术沙龙 | 11月25号,九州云/ZStack与您一起探讨云时代网络边界管理实践,点击图片,立即报名。
【51CTO原创稿件,合作站点转载请注明原文作者和出处为51CTO.com】
分享文章:陌陌基于K8s和Docker容器管理平台的架构实践
网页URL:http://www.mswzjz.com/qtweb/news48/177648.html
网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联