瓜子二手车 彭超:瓜子云的落地

Deis

2017/11/14 发布于 技术 分类

瓜子的云平台基于k8s搭建,在执行过程中,我们平滑的解决了传统部署转到云平台上的各种问题。为此,我们搭建了多套子系统:基于Docker的持续化集成系统,云平台的权限管理系统,任务调度系统,集成测试系统等。我们将会在Talk中,详细讲述我们遇到过的问题,又是如何解决这些问题的。

文字内容
1. SACC2017 瓜子二手车 – 彭超
2. SACC2017
3. 背景介绍  节点数:1000+  微服务:200+ 2017 总QPS:1000k+  语言:golang, php, java, nodejs, python, c++, scala SACC 每周上线:1000+
4. 我们的问题  服务混合部署  资源利用不合理 2017 上线流程繁琐 SACC 测试和线上环境不一致
5. SACC2017
6. 目录  持续化集成  任务调度  日志收集  监控报警  Service Mesh SACC2017
7. SACC2017
8. 瓜子的特点和问题 特点  多种语言  框架繁多  快速迭代 问题 SACC2017 如何构建的问题  快速部署的问题  权限管理的问题  如何方便程序员使用
9. 构建问题的解决 Prepare From golang:1.8 ADD ./ $GOPATH/ RUN go get 准备依赖  为项目搭建依赖环境 SACC2017Build From prepare:v1 ADD ./ $GOPATH/ RUN go install 编译代码  添加最新代码  Build二进制包 Release From ubuntu COPY --from=build app /med/ 构建镜像  copy二进制包  构建镜像
10. 快速部署问题的解决 med set env SACC2017med prepare med build med deploy med release metastore med-sdk kubectl create –f deploy.yml Docker Registry K8S
11. 权限管理和测试流程的解决 Laptop CLI Cloud Manager med-sdk > med status > med log > med enter SACC2017Console Auth K8S api K8S
12. 基于VM的med-sdk 使用方式 遇到问题  在电脑上装一个虚拟机 2017 Vagrant管理 SACC 挂载代码目录  回收磁盘问题  太耗资源  使用不便
13. 基于docker的med-sdk Laptop 2017docker run --rm medsdk build med build med-sdk docker build CCMed SAmed upgrade docker pull medsdk:latest Docker Daemon med-sdk Docker Registry
14. SACC2017 Airflow on kubernetes
15. 起因和功能 起因 功能  需要自己维护环境 2017 资源利用不合理 C 机器回收 SAC 代码更新,部署麻烦  数据仓库复杂依赖  自动扩容缩容  多种环境支持
16. Airflow原始架构 RabbitMQ 2017Worker Node 1 SACCExecutor Master Node Scheduler Web Mysql
17. Airflow上云的主要问题 Master Node Worker Node 2017 不支持多个scheduler  代码更新问题 C Web需要通过worker的 SAChostname获取日志  不同环境  新的任务环境如何搭建
18. Worker问题的解决  Worker里面没有任何环境  只负责启动和监控kubernetes job SACC2017 job由给定的image和script来生成
19. Airflow云上架构 RabbitMQ 2017kjob --image myimage:latest \ --script: ‘hive –e test.sql’ CScheduler SACPod Worker Pod Zookeeper kjob: 1. Generate k8s job.yml 2. kubectl create –f job.yml 3. kubectl logs -f podname 4. Get job status Job 1 Job 2
20. 任务部署流程 Job Config med-sdk Scheduler SACC2017Docker Registry Job Code med-sdk Git Worker Job K8S
21. SACC2017
22. 日志收集问题 瓜子需求  采集存档  实时查询  批量处理  报警监控 主要难点 SACC2017 文件日志如何收集  结构化日志结构改变  实时报警
23. 文件日志收集的解决 解决方案 我们的选择 2017 软链接到stdout  挂载盘 SACC 写到日志收集服务  挂载盘
24. 如何挂载盘 1. 统一挂载/var/log/k8s 2. 在ENTRYPOINT中创建$POD_NAME目录,放在/var/log/k8s下 20173. 软链接该目录到/med/log下 SACC4. 日志文件全部写入/med/log
25. 结构化日志的解决 主要功能 解决方案  实时检索 2017 历史sql查询 C 常常会改日志结构 SAC 日志报警  通过avro来做序列化  引入schema registry  引入log agent  使用spark streaming
26. 结构化日志收集 Avro Schema Registry 2017App A App B CAvro Log SACLog Agent Gobblin Spark Streaming Avro Log Kafka HDFS/Hive ES/Kibana Alert
27. SACC2017
28. Service Mesh是什么  专属基础设施层  提供安全的、快速的、可靠地服务间通信 SACC2017 轻量级高性能网络代理
29. Service Mesh的爆发 2017.1 SACC20172017.5 Istio 发布0.1版 2017.9 Envoy加入CNCF 2017.7 2017.9 Linkerd 加入CNCF Linkerd发布1.1.1 Nginx发布Nginmesh 支持Istio 支持Istio
30. Service Mesh能做什么  服务发现  延迟感知的负载均衡 2017 熔断机制  连接重试和终止 CC 安全性 SA 灰度发布
31. SACC2017
32. Istio架构 SACC2017
33. Istio 组件 Envoy  支持TLS  HTTP 2.0/gRPC  服务发现  负载均衡  监控检查  Metrics Pilot SACC2017 流量管理  请求路由  服务发现  负载均衡  规则配置
34. Istio 组件 Pilot  流量管理  请求路由  服务发现  负载均衡  规则配置 Pilot SACC2017 流量管理  请求路由  服务发现  负载均衡  规则配置
35. Istio 组件 Mixer  前提条件检查  配额管理  遥测报告 SACC2 0用1户7认证
36. Envoy替代品 Linkerd Nginmesh 2017 源自Twitter  大厂验证过 C Linkerd Ingress SAC Per-host/Sidecar  源自Nginx
37. 欢迎加入瓜子二手车 瓜子招聘公众号 瓜子简历投递 SACC2017
38. SACC2017作者微信