Docker容器技术电信运营商应用分析2为什么用容器?3从虚拟化层看容器,轻量级、高性能是核值4容器技术的发展5通过轻量级容器技术,提升资源利用率6容器VS.VM占用资源情况对比7APP+运行环境整体打包一次构建,重复部署8应用监控和弹性伸缩9主要IT公司已推出大量服务和支持10容器的生态与全堆栈11容器操作系统对比12容器编排技术选型比对13APACHEMESOS+MARATHON编排调度框架14MESOS15MESOS处理流程16服务注册与引流17MARATHON健康检测18完整扩缩容流程图19GOOGLEKUBERNETES(K8S)编排调度框架20GOOGLEKUBERNETES(K8S)编排调度框架21GOOGLEKUBERNETES(K8S)编排调度框架22GOOGLEKUBERNETES(K8S)编排调度框架23GOOGLEKUBERNETES(K8S)编排调度框架24DOCKERSWARM+COMPOSE编排调度框架25前端案例:电信运营商CRM前端服务调用改造26后端案例:中心化27实施效果:提升资源利用率28实施效果:自动弹性扩缩容29实施效果:持续集成30实施效果:敏捷运维31容器云平台功能构架视图Mesos资源调度中心基础服务DBService非容器平台Hadoop容器化PAASKubernetes+DockerSparkCacheServiceLogServiceMessageServiceWorkflowServiceStreamService多租户管理多集群管理应用管理负载均衡系统管理DBServiceAnalyzeService用户认证用户授权用户审计事件管理安全管理容器云ManagerPortal部署监控数据采集CI/CD安装用户自定义服务容器云管理平台功能架构32云化要勇于面对应用的改造33世界上没有免费的蛋糕34我们的容器之路1.业务层面:因运营商对业务的稳定性和连续性有比较高的要求,故容器化的演进路径必然是从边缘业务到核心业务,从简单应用到复杂应用,具体到业务,首先可以考虑在Web前端进行容器化迁移,最后动后端业务。2.技术层面:目前原生Docker在服务发现、负载均衡、容器生命周期管理、容器间网络、存储等方面还存在诸多的不足,许多第三方厂家提供的开源解决方案和商业化版本,如Google的Kubenetes、Apache的MESOS、Rancher等,各家方案各具特色,难分高下,当然仅从容器编排引擎的角度来看,某些容器云产品,例如Rancher自身有Cattle也可以兼容Kubenetes、MESOS和DockerSWARM几种主流的编排引擎。用户无论选择何种产品,可靠性、灵活性是需要慎重考虑的2个重要因素。3.兼顾成本效益:综合考虑容器化付出的成本代价与未来收益之间的平衡。4.考虑现有硬件的负载能力,容器化并非包治百病的良药,某些对并发吞吐量要求更高的业务,直接运行在裸机上,通过系统调优提高性能,容器化未必是最好的选择。35DCOS36我们面临的难题如何选择网络方案?如何提高镜像管理?如何选择存储方案?如何解决有状态应用的容器化改造?如何实现的容器化安全要求?如何实现容器化应用的日志采集?如何解决容器在不同环境下的配置更新?37如何选择容器云网络方案Overlay网络物理网络HOSTIPHOSTIPHOSTIPHOSTIPHOSTIPHOSTIPHOSTIPHOSTIPHOSTIP采用Overlay网络:与物理网络解耦,构建出面向应用的自适应网络。Overlay方案包含OVS,flannel,weave,Pipework,DR等VIPVIPVIP容器使用Overlay网络好处:•名址分离,位置无关性:IP地址与设备的物理位置解耦。•业务扩展,灵活部署:业务可以在任意位置灵活部署。•网络简化:提供最简单的数据中心网络模型。•网络连接虚拟化:虚拟网络从物理网络中解耦,从物理网络抽象出一个二层网络资源池。VIPVIPVIP容器VIPVIPVIP容器VIPVIPVIP容器VIPVIPVIP容器VIPVIPVIP容器38如何选择容器存储方案场景一DockerContainerDockerContainerDockerContainerDockerContainer存储存储存储存储共享存储DockerContainerDockerContainer场景二场景三存储置于容器中存储挂在外部宿主机上使用外部的共享存储优缺点:简单,便于水平扩展容器销毁,数据丢失优缺点:复杂,很难随意水平扩展不会因为容器销毁造成数据丢失,数据可永久保存优缺点:可以任意水平扩展不会因为容器销毁造成数据丢失,数据可永久保存。但是读取效率不高。39如何解决有Session应用的容器化改造场景一Tomcat场景二通过proxy的affinty的负载方式将client粘连在某个容器将session数据放在第三方缓存,如redis,数据库等ProxyredisTomcatTomcatTomcat40如何实现容器化应用的日志采集场景一DockerContainerDockerContainerDockerContainerDockerContainer日志日志场景二日志置于容器中日志直接通过消息扔出来ElasticSearchKafakaElasticSearch数据库41如何解决容器在不同环境下的配置数据更新A.config•DB.proerties•server.xml•log4j.properties要解决的问题:1)传统应用不需要做改造即可实现容器化2)在不同环境中部署不需要改变镜像测试环境A.config•DB.proerties•server.xml•log4j.properties生产环境统一配置管理•192.168.1.45•172.153.1.7应用镜像42DOCKER镜像的安全管理通过集成Clair,实现开发容器的安全漏洞扫描,保证容器云平台的安全。Clair是一个容器漏洞分析应用。它提供一个能威胁容器漏洞的列表,并且在有新的容器漏洞发布出来后会发送通知给用户43深化与DEVOPS的整合43持续交付持续运维持续变更持续集成与持续测试自动构建单元测试存储仓库管理功能测试性能负荷测试版本管理自动部署配置与部署需求管理变更管理缺陷问题管理运维监控知识管理MavenSeleniumJmeterSonarQubeSVNDockerRepoJenkinsInfluxDBAnsibleJunitKubernetesDockerKubernetesT.B.DWikiCAdvisorHygieaDevOps流水线可视化面向DevOps流水线自动化构建的容器云平台能力支撑DevOps流水线平台化LoadRunner代码质量分析自动集成Zabbix谢谢大家!