温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,汇文网负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。
网站客服:3074922707
容器
技术
微服
架构
跨境电商
领域
集成
实践
容器技术与微服务架构在跨境电商领域的集成实践陈天影敦煌网-容器云平台负责人大 纲一、跨境电商业务特征及技术特点二、微服务架构及面临的困境三、基于Docker的私有容器云平台设计四、Docker实践中遇到的问题及解决方案五、总结容器技术与微服务架构在跨境电商领域的集成实践陈天影一、跨境电商的业务特征及技术特点海外市场拓展服务跨境支付DHpay综合物流服务DHlink互联网金融服务DHfinet社交商务Socialshops其他增值服务跨境电商的业务特征8个多语言平台国际合作伙伴物流&支付约120万家国内供应商;1000万买家遍布全球230个国家和地区4000万在线产品业务多品类多覆盖广流量大跨境电商的技术特点可扩展高并发海外部署多机房可管理可监控二、微服务架构及面临的困境微服务框架通信和路由多语言监控治理微服务架构要解决的问题:服务通信、路由寻址、服务监控、服务治理、多语言服务消费者业务代码Client Agent服务提供者业务代码Server Agent服务提供者业务代码Server Agent服务消费者异构语言业务代码服务注册中心-zookeeper集群apsaras服务监控服务治理实时数据监控历史信息统计报警服务依赖关系分析服务流量控制调用链路追踪性能瓶颈分析SLA分析暂停恢复下线 异构语言Proxy集群HttpKafkaStorm?解耦(模块化),易扩展?效率(开发、测试、部署)?高可用(多实例)?弹性伸缩,灵活应对峰值流量(分布式、独立运行)?多机房部署服务拆分之后(静态依赖关系)优势:困境?微服务的独立性使得系统具备弹性伸缩的能力,但仍需人为介入?开发效率提高、交付速度有所提升,新业务上线仍受限于资源申请流程?微服务架构导致模块数量快速增长,服务粒度与资源粒度的矛盾?一台服务器部署多个微服务,产生资源竞争?运行环境差异性引发错误?部署海外机房周期太长(每个应用一一分配资源、配置、部署)?降低物力资源成本的需求?Docker?标准化:集装箱式的交付方式,快速部署,并避免运行环境差异化?轻量:资源占用小、启动速度快,在一个服务器上可以部署很多容器?便捷:直接部署应用、无需申请资源?隔离:一定的资源隔离性?灵活:可以快速回滚和更新变更?开源:生态系统发展迅速?成本:搭建成本低、学习成本低三、基于Docker的私有容器云平台设计设计原则兼容已有软件架构混合部署,历史资产无缝迁移减少对已有业务开发流程的影响整体架构服务集群服务集群Docker Registry(Harbor)InfrastructureAWS*云物理机虚拟机Docker 主机apsaras统一监控服务监控(zk+日志分析)Docker 主机Docker服务Docker服务apsaras容器统一配置中心(Etcd)Swarm监控代理Docker Daemon监控代理Docker Daemon容器管理平台虚机Service服务物理机Service服务容器监控(shell+influxdb)主机监控zabbixSwarm AgentSwarm Agent自定义调度策略开发运维流程变化?DEV:代码提交、构建、申请机器资源、发版?OPS:集群、主机维护(一键初始化),镜像维护,线上监控DhDocker ControllerJenkins GitRegistryCluster1CommitBuild管理平台PullDocker pullMonitorElastic computingDEVOPS镜像维护主机维护发布DockerDaemonContainerContainerDockerDaemonContainerContainerCluster2DockerDaemonContainerContainerDockerDaemonContainerContainerdocker runMonitor四、Docker实践中遇到的问题及解决方案遇到的问题监控排障镜像浮动IP混合部署混合网段容器状态不一致Problem1-镜像的制作和维护VS?优点:?避免mount,应用和镜像一体?缺点:?频繁构建?镜像数量猛增?改造工作量大?不同环境配置文件不同?优点:?镜像不用重新构建?缺点:?所有宿主机维护应用副本?违背了Docker集装箱原则BaseImageAPP/BINBaseImageAPP/BIN+Solution1-基础镜像+应用下载?开发时,镜像和应用分离,OPS维护 Dockerfile,DEV维护代码?部署时,镜像和应用合体?多环境不同配置,分布式配置管理中心+配置文件中心Docker DaemonContainerAPP/BINContainerAPP/BINContainerAPP/BINRegistryBuild RepositoryConf RepositoryDeployOPSDEVDEVDockerfileProblem2-混合部署的网段互通网络连通要求:?同一宿主机内的容器互通?不同宿主机之间的容器互通?容器与其他虚机、物理机互通-混合部署的必要条件Legacy资产Docker集群Vmware集群物理机其他DockerDaemonContainerContainerDockerDaemonContainerContainerDocker的网络方案?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 connectionCustomized network pluginSolution2-桥接网络打通容器与局域网网络Docker集群DockerDaemonBr0ContainerEth0ContainerEth0Eth0DockerDaemonBr0ContainerEth0ContainerEth0Eth0物理交换机Legacy资产Vmware集群物理机其他?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#23524MacVlanProblem3-混合网段的容器部署?Problem:网段过大导致广播风暴,混合网段如何权衡资源调度和IP分配Solution3-自定义IP资源调度策略Swarm+自定义调度策略ClusterDockerDaemonContainerContainer-label subnet=192.168.2.0/24-label subnet=192.168.3.0/24-label subnet=192.168.4.0/24-label=?DhDockerControllerDockerDaemonContainerContainerDockerDaemonContainerContainerProblem4-浮动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容器?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 ResizeDhDocker ControllerWeb BrowserWeb SocketDocker ExecContainerDockerDaemonContainerDocker Web ShellProblem6-监控方案选择?docker stats,docker原生?memory计算争议?性能较差?cAdvisor,Google开发,容器和主机级别监控?一定的学习成本?与已有监控报警系统集成有难度Solution6-自研Shell实现?容器级别数据收集?应用级别数据统计?主机级别-容器总数及状态(性能由zabbix监控)报警系统InfluxDBShell on Docker Host数据采集汇总分析策略和报警Shell on Docker HostShell on Docker Host数据采集数据采集Problem7-容器状态的同步?异常退出?命令行创建DBClusterDockerDaemonContainerContainerContainerDhDocker ControllerDocker事件机制importtaggeduntaggeddeleteddocker importdocker tagtaguntagdocker deletedeletepulldocker pullpushdocker push镜像事件容器事件Solution7-监听容器事件import(osdockerApi 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基础环境标准化,加速海外部署http:/