容器技术与微服务架构在跨境电商领域的集成实践ppt课件.pptx
,容器技术与微服务架构在跨境电商领域的集成实践,大纲,一、跨境电商业务特征及技术特点二、微服务架构及面临的困境三、基于Docker的私有容器云平台设计四、Docker实践中遇到的问题及解决方案五、总结,容器技术与微服务架构在跨境电商领域的集成实践,陈天影,一、跨境电商的业务特征及技术特点,海外市场拓展服务,跨境支付DHpay,综合物流服务DHlink,互联网金融服务DHfinet,社交商务Socialshops,其他增值服务,跨境电商的业务特征,8个多语言平台,国际合作伙伴物流&支付,约120万家国内供应商;1000万买家遍布全球230个国家和地区,4000万在线产品,业务多,品,类,多,覆盖广,流,量,大,跨境电商的技术特点可扩展,高并发,海外部署,多机房,可管理,可监控,二、微服务架构及面临的困境,微服务框架,多语言,监控,治理,微服务架构要解决的问题:服务通信、路由寻址、服务监控、服务治理、多语言,业务代码服务消费者,Client Agent,服务提供者,业务代码Server Agent,服务提供者,业务代码Server Agent,异构语言业务代码服务消费者,通信和路由服务注册中心-zookeeper集群,apsaras,服务治理,实时数据监控,历史信息统计,报警,服务依赖关系分析,服务流量控制,调用链路追踪,性能瓶颈分析,SLA分析,暂停,恢复下线服务监控,异构,集群,语言Proxy Http,Kafka,Storm,解耦(模块化),易扩展效率(开发、测试、部署)高可用(多实例)弹性伸缩,灵活应对峰值流量(分布式、独立运行)多机房部署,服务拆分之后(静态依赖关系),优势:,困境, 微服务的独立性使得系统具备弹性伸缩的能力,但仍需人为介入 开发效率提高、交付速度有所提升,新业务上线仍受限于资源申请流程 微服务架构导致模块数量快速增长,服务粒度与资源粒度的矛盾 一台服务器部署多个微服务,产生资源竞争 运行环境差异性引发错误, 部署海外机房周期太长(每个应用一一分配资源、配置、部署) 降低物力资源成本的需求 ,Docker,标准化:集装箱式的交付方式,快速部署,并避免运行环境差异化轻量:资源占用小、启动速度快,在一个服务器上可以部署很多容器便捷:直接部署应用、无需申请资源隔离:一定的资源隔离性灵活:可以快速回滚和更新变更开源:生态系统发展迅速成本:搭建成本低、学习成本低,三、基于Docker的私有容器云平台设计,设计原则,兼容已有软件架构,混合部署,历史资产无缝迁移,减少对已有业务开发流程的影响,整体架构,服务集群,Infrastructure,AWS,*云,物理机,虚拟机,apsaras,统一监控,服务监控,Docker 主机Docker服务,Docker 主机Docker服务,apsaras,容器统一配置中心(Etcd)Docker Registry(Harbor),虚机,服务Service,物理机服务Service,容器监控(shell +influxdb),(zk+日志分析)主机监控zabbix,监控代理Swarm AgentDocker Daemon,监控代理Swarm AgentDocker Daemon,容器管理平台自定义调度策略Swarm,开发运维流程变化, DEV:代码提交、构建、申请机器资源、发版, OPS:集群、主机维护(一键初始化),镜像维护,线上监控,DhDockerController,Jenkins,Git,Registry,Cluster1,Commit,Build,管理平台,Pull,Docker pull,Monitor,DEV,OPS,镜像 维护,主机 维护,发布,DockerDaemonContainerContainer,DockerDaemonContainer,Container,Cluster2,DockerDaemonContainerContainerDockerDaemonContainerContainerElastic computing,docker run,Monitor,四、Docker实践中,遇到的问题及解决方案,遇到的问题,监控,排障,镜像,浮动IP,混合部署,混合网段,容器状态不一致,Problem1- 镜像的制作和维护,VS, 优点: 避免mount,应用和镜像一体 缺点: 频繁构建 镜像数量猛增 改造工作量大 不同环境配置文件不同, 优点: 镜像不用重新构建 缺点: 所有宿主机维护应用副本 违背了Docker集装箱原则,BaseImage,APP/BIN,BaseImage,+ APP/BIN, 开发时,镜像和应用分离, OPS维护 Dockerfile, DEV维护代码 部署时,镜像和应用合体 多环境不同配置, 分布式配置管理中心+配置文件中心,Container APP/BIN,Container APP/BINDocker Daemon,Registry,Conf Repository,Deploy,OPS,Solution1-基础镜像+应用下载Build RepositoryDEVContainer APP/BIN,DEV,Dockerfile,Problem2-混合部署的网段互通,网络连通要求:, 同一宿主机内的容器互通 不同宿主机之间的容器互通 容器与其他虚机、物理机互通-混合部署的必要条件,Legacy资产,Vmware集群,物理机,其他,DockerDaemonContainer,ContainerContainer,ContainerDockerDaemonDocker集群,Docker的网络方案,bridge模式:与外界通讯用端口映射,NAT增加通讯复杂性container模式:单机的多个容器之间共享网络,host模式:共享主机网络,端口无法重用,容易冲突自定义, Bridge network is useful in cases where you want to run a relatively small,network on a single host., Overlay network multi-host connection, need swarm or a key store. MACVLAN network multi-host connection Customized network plugin,Solution2-桥接网络,打通容器与局域网网络,Docker集群,DockerDaemon,ContainerEth0,ContainerEth0,Br0Eth0,DockerDaemon,ContainerEth0,ContainerEth0,Br0Eth0,物理交换机,Vmware集群,物理机,其他,Legacy资产 docker network create -driver=bridge -o work.bridge.name=br0-gateway=192.168.2.14 -aux-address DefaultGatewayIPv4=192.168.2.254-subnet=192.168.2.0/24 dockernet docker run -d -net=dockernet tomcat:7.0, Docker Deamon -iptables=false -ip-forward=false, 优点:性能较好;可以在一台物理机上部署多个不同网段的容器 限制:Docker 1.11 版本的MacVlan仍然是experimental; 在1.12版本已标注为: MacVlan driver is out of experimental #23524,MacVlan,Problem3-混合网段的容器部署,Problem: 网段过大导致广播风暴,混合网段如何,权衡资源调度和IP分配,-label subnet=192.168.3.0/24DockerDaemonContainerContainer,Solution3-自定义IP资源调度策略DhDockerControllerSwarm+自定义调度策略-label=?Cluster,-label subnet=192.168.4.0/24DockerDaemonContainerContainer,-label subnet=192.168.2.0/24DockerDaemonContainerContainer,Problem4-浮动ip,Problem: 浮动ip, 重启一下docker daemon/容器,ip就变了 Ip混乱,不利于定位问题,Solution4-使用固定ip使用固定ip docker run d -ip=192.168.11.23 -net=dockernet tomcat,引入IPAM模块,负责IP池的创建和维护,IP资源的占用和释放,Problem5-排障持久化日志 将日志mount到主机,主机上运行轻量级Agent进行日志采集,集中分析,实时查看:检查日志,调整配置,重启应用,查看资源使用率 装一个SSH Server vs Docker Exec别把容器当虚机使!,Solution5-Docker Web ShellDocker Web Shell实现从Web浏览器以类似SSH的方式登录并操作Docker容器,DhDockerController,Web Browser,Web Socket,Docker Exec,Container Web浏览器负责界面呈现。运行JS脚本,通过Web Socket与Docker Controller建立通信链路。 DhDocker Controller是Docker容器应用的控制中心,作为桥梁,负责消息的转发。通过Docker HTTP API与Docker Daemon建立通信链路,利用Exec Start返回的数据流承载Docker Controller和Docker Daemon之间的交互数据。 Docker Daemon提供HTTP API接口给外部系统调用以访问容器内部。 这里用到的API包括:Exec Create、Exec Start、Exec Resize,DockerDaemon,Container,Docker Web Shell,Problem6-监控方案选择,docker stats, docker原生, memory计算争议 性能较差,cAdvisor,Google开发,容器和主机级别监控, 一定的学习成本, 与已有监控报警系统集成有难度,Solution6-自研Shell实现容器级别数据收集应用级别数据统计主机级别-容器总数及状态(性能由zabbix监控)ShellonDocker Host数据采集,InfluxDB汇总分析,报警系统策略和报警,ShellonDocker Host数据采集ShellonDocker Host数据采集,DB,Problem7-容器状态的同步 异常退出 命令行创建Cluster,DockerDaemonContainerContainerContainer,DhDockerController,Docker事件机制,deleteduntaggedtagged,untagimportpull,docker deletedocker importdocker pull,deletetagpush,docker tagdocker push,镜像事件,容器事件,Solution7-监听容器事件,import (,os,dockerApi ,),func main() ,docker, err := dockerApi.NewClient(*dockerHost),if err != nil ,/Add logging hereos.Exit(0),events := make(chan *dockerApi.APIEvents)docker.AddEventListener(events)for msg := range events if msg.Status = die ,go inspectContainer(docker, msg.ID, msg.Status) /inspect the container and,update info to DB,五、总结,总结,Docker+微服务架构,快速部署,弹性伸缩持续集成,快速迭代,简化上线流程混合部署,历史资产无缝迁移基础镜像+应用下载,减小镜像库每个应用都可以有局域网业务IP;指定静态ip基础环境标准化,加速海外部署,