容器技术与微服务架构在跨境电商领域的集成实践

一、跨境电商业务特征及技术特点
二、微服务架构及面临的困境
三、基于Docker的私有容器云平台设计
四、Docker实践中遇到的问题及解决方案
五、总结

展开查看详情

1. 容器技术与微服务架构 在跨境电商领域的集成实践 陈天影 敦煌网-容器云平台负责人

2. 容器技术与微服务架构在跨境电商领域的集成实践 陈天影 大纲 一、跨境电商业务特征及技术特点 二、微服务架构及面临的困境 三、基于Docker的私有容器云平台设计 四、Docker实践中遇到的问题及解决方案 五、总结

3.一、跨境电商的业务特征及技术特点

4. 跨境电商的业务特征 海外市场拓展 跨境支付 综合物流服务 互联网金融服务 社交商务 其他 服务 DHpay DHlink DHfinet Socialshops 增值服务 约120万家国内供应商; 国际合作伙伴 8个多语言 4000万 1000万买家 物流&支付 平台 在线产品 遍布全球230个国家和地区

5.跨境电商的技术特点 可扩展 业务多 可管理 流 品 高并发 量 类 大 多 海外部署 覆盖广 可监控 多机房

6.二、微服务架构及面临的困境

7. 通信和路由 微服务框架 服务注册中心-zookeeper集群 监控 服务提供者 服务提供者 报警 业务代码 业务代码 多语言 Server Agent Server Agent 异构 实时数据监控 语言 apsaras Kafka Storm Proxy Http 集群 Client Agent 暂停 异构语言 恢复 业务代码 业务代码 下线 治理 服务消费者 服务消费者 服务监控 服务治理 服务依赖 调用链路 服务流量 性能瓶颈 历史信息 SLA分析 关系分析 追踪 控制 分析 统计 微服务架构要解决的问题:服务通信、路由寻址、服务监控、服务治理、多语言

8.服务拆分之后(静态依赖关系) 优势: 解耦(模块化),易扩展 效率(开发、测试、部署) 高可用(多实例) 弹性伸缩,灵活应对峰值流量(分布式、独立运行) 多机房部署

9.困境 微服务的独立性使得系统具备弹性伸缩的能力,但仍需人为介入 开发效率提高、交付速度有所提升,新业务上线仍受限于资源申请流程 微服务架构导致模块数量快速增长,服务粒度与资源粒度的矛盾 一台服务器部署多个微服务,产生资源竞争 运行环境差异性引发错误 部署海外机房周期太长(每个应用一一分配资源、配置、部署) 降低物力资源成本的需求 ……

10.Docker 标准化:集装箱式的交付方式,快速部署,并避免运行环境差异化 轻量:资源占用小、启动速度快,在一个服务器上可以部署很多容器 便捷:直接部署应用、无需申请资源 隔离:一定的资源隔离性 灵活:可以快速回滚和更新变更 开源:生态系统发展迅速 成本:搭建成本低、学习成本低

11.三、基于Docker的私有容器云平台设计

12.设计原则 兼容已有软件架构 混合部署,历史资产无缝迁移 减少对已有业务开发流程的影响

13.整体架构 容器管理平台 容器统一配置中心(Etcd) 自定义调度策略 统一监控 Docker Registry(Harbor) Swarm 虚机 服务集群 容器监控 服务 Docker 主机 Docker 主机 (shell + Service Docker Docker influxdb) apsaras 服务 服务 apsaras 服务监控 物理机 (zk+日志分析) 监控代理 监控代理 服务 Service Swarm Agent Swarm Agent 主机监控 zabbix Docker Daemon Docker Daemon Infrastructure AWS **云 物理机 虚拟机

14.开发运维流程变化 DEV OPS 主机维护 Cluster1 Commit DockerDaemon Git Container Build Container 发布 Jenkins DockerDaemon Pull Container Container DhDocker docker run Monitor 管理平台 Controller Cluster2 Monitor DockerDaemon Container Container DockerDaemon Container Docker pull Container Elastic computing Registry 镜像维护 DEV:代码提交、构建、申请机器资源、发版 OPS:集群、主机维护(一键初始化),镜像维护,线上监控

15. 四、Docker实践中 遇到的问题及解决方案

16.遇到的问题 镜像 容器状态 混合部署 不一致 监控 混合网段 排障 浮动IP

17.Problem1- 镜像的制作和维护 BaseImage APP/BIN VS BaseImage + APP/BIN 优点: 优点: 避免mount,应用和镜像一体 镜像不用重新构建 缺点: 缺点: 频繁构建 所有宿主机维护应用副本 镜像数量猛增 违背了Docker集装箱原则 改造工作量大 不同环境配置文件不同

18.Solution1-基础镜像+应用下载 Build Repository DEV Container APP/BIN Conf Repository Deploy Container APP/BIN DEV Container APP/BIN Docker Daemon Registry OPS Dockerfile 开发时,镜像和应用分离, OPS维护 Dockerfile, DEV维护代码 部署时,镜像和应用合体 多环境不同配置, 分布式配置管理中心+配置文件中心

19. Problem2-混合部署的网段互通 网络连通要求: DockerDaemon Container Vmware集群 同一宿主机内的容 器互通 Container 不同宿主机之间的 容器互通 其他 物理机 容器与其他虚机、 Container 物理机互通-混合部 署的必要条件 Container DockerDaemon Docker集群 Legacy资产

20.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

21. Solution2-桥接网络 Docker集群 DockerDaemon DockerDaemon Container Container Container Container Eth0 Eth0 Eth0 Eth0 打通容器与局域网网络 Br0 Br0 Eth0 Eth0 Docker Deamon • --iptables=false • --ip-forward=false 物理交换机 Vmware集群 物理机 其他 Legacy资产 docker network create --driver=bridge -o com.docker.network.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

22.MacVlan 优点:性能较好;可以在一台物理机上部署多个不同网段的容器 限制:Docker 1.11 版本的MacVlan仍然是experimental; 在1.12版本已 标注为: MacVlan driver is out of experimental #23524

23.Problem3-混合网段的容器部署 Problem: 网段过大导致广播风暴,混合网段如何 权衡资源调度和IP分配

24.Solution3-自定义IP资源调度策略 DhDocker Controller Swarm + 自定义调度策略 --label=? Cluster --label subnet=192.168.2.0/24 --label subnet=192.168.3.0/24 --label subnet=192.168.4.0/24 DockerDaemon DockerDaemon DockerDaemon Container Container Container Container Container Container

25.Problem4-浮动ip Problem: 浮动ip 重启一下docker daemon/容器,ip就变了 Ip混乱,不利于定位问题

26.Solution4-使用固定ip 使用固定ip docker run –d --ip=192.168.11.23 --net=dockernet tomcat 引入IPAM模块,负责IP池的创建和维护,IP资源的占用和 释放

27.Problem5-排障 持久化日志 将日志mount到主机,主机上运行轻量级Agent进行日志采集, 集中分析 实时查看:检查日志,调整配置,重启应用,查看资源 使用率 装一个SSH Server vs Docker Exec 别把容器当虚机使!!

28.Solution5-Docker Web Shell Docker Web Shell实现从Web浏览器以类似SSH的方式登录并操作Docker容器 Container DhDocker Docker Web Browser Web Socket Docker Exec Controller Daemon 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

29.Docker Web Shell