Archsummit北京2016 《构建高效的私有云平台:今日头条私有云架构设计》 夏绪宏

2020-03-01 71浏览

  • 1.构建⾼高效私有云平台 — 今⽇日头条私有云平台架构设计 夏绪宏
  • 2.关于我 • 夏绪宏 @reeze • 今⽇日头条研发架构负责⼈人 • 基础设施平台 • PHP Committer\LAMP
  • 3.⼤大纲 01. 私有云、公有云在头条 02. 头条私有云平台架构设计 03. 遇到问题以及未来的规划
  • 4.01. 私有云、公有云在头条
  • 5.关于今⽇日头条 • • • 6亿⽤用户 6600W DAU 76分钟⽇日使⽤用时⻓长 DAU 7000w 5250w 3500w 1750w 0w • 迭代部署: 670+次/天 2014-04 2015-04 2016-10
  • 6.今⽇日头条&云 • • IaaS公有云:应对突发和计算资源需求 • 推送场景,峰值效应,带宽占⽤用⼤大 • 国际化服务 SaaS服务 • 服务质量量监控:云监控服务 • 第三⽅方统计服务 • CDN⽹网络 • etc…
  • 7.云计算设施http://nordicapis.com/living-in-the-cloud-stack-understanding-saas-paas-and-iaas-apis/
  • 8.公有云,私有云 公司规模 规模⼩小 规模⼤大 公有云 私有云 公有云 私有云 弹性 好 差 好 好 可控性 弱 强 弱 好 成本 低 ⾼高 ⾼高 低
  • 9.02. 头条私有云平台架构设计
  • 10.平台设计⽬目标 • ⽬目标:⾼高效的在线服务研发PaaS平台 • 思路路: • 松耦合,⽀支持不不同类型业务 • 理理解微服务 • 构建完善周边SaaS服务 • ⾜足够的弹性,混合云⽀支持
  • 11.⽬目前的进展 • TCE: Toutiao Compute Engine • 进展: • 2016-05 启动 2016-10 上线 • 120+服务迁移,继续迁移中 • 扩容效率:10倍提升,< 1分钟
  • 12.总体架构 TCE WebUI ๐‫ۓ‬ଘ‫ݣ‬ PaaS SaaS Services Manager Redis MC Load Balancer (HTTP) NSQ/… GoApp1 ᳩᬳള ള‫੶ف‬ Cron/script manager GoApp2 Python App Nodejs App MySQL Resource Framework AppEngine IaaS Kubernetes vHost1 vHost2 container container container container cluster1 ٌ՜‫ํل‬ԯ container container cluster2 ,'& { Stateful app IDC2 API DevOps 6&0๐‫ۓ‬ ᳒‫؟‬๐‫ۓ‬ &, ୏ ‫ݎ‬ ၥ ᦶ ᛔۖ۸ၥᦶ ᮱ᗟᔮᕹ ᮱ ᗟ ፊഴᔮᕹ ෭பᔮᕹ ௔ᚆ‫ړ‬ຉ ங๐‫ۓ‬လቘ ᬩ ᖌ
  • 13.TCE平台 • • 技术⽅方案 • 技术选型、⽹网络模型、服务发现 • ⽇日志收集、容器器的使⽤用、弹性调度、etc... DevOps研发基础设施 • 开发测试、部署上线 • 微服务的⽀支持
  • 14.技术选型 • • PaaS • 定制需求多 • 没有合适的开源⽅方案,⾃自研 IaaS • Kubernetes • Mesos
  • 15.技术选型 Kubernetes Mesos 编排能⼒力力 强 ⼀一般 集群规模 千级别 massive 有状态服务 不不太好 ⽐比较好 弹性 好 好 ⾃自愈能⼒力力 ⽀支持 ⽀支持
  • 16.技术选型 • IaaS层设计 • 基础设施中⽴立 • 不不强绑定底层IaaS设施 • 通⽤用计算服务
  • 17.Kubernetes
  • 18.Kubernetes
  • 19.Kubernetes⽹网络模型
  • 20.Flannel
  • 21.我们的⽅方案 • 使⽤用Flannel • 不不直接使⽤用虚拟⼦子⽹网 • 为每个实例例expose随机端⼝口
  • 22.服务发现 • • Kubernetes •Service:Cluster IP • DNS 使⽤用Consul⾃自⼰己做服务发现 • 跨集群问题,虚拟⽹网络和已有⽹网络的互通问题 • 性能问题 • 减少层次,问题定位效率 • 我们⼀一直在⽤用Consul
  • 23.服务发现 Container App FOLHQWPSM:toutiao.xx.apiPort:30000 HTTP AppCluster:abcEnv:prodWeight:50 ဳٙ App (server) Watcher Nginx LB Consul App FOLHQW TCP App Watcher
  • 24.弹性调度 • 提升应对突发流量量的能⼒力力 • 资源利利⽤用率提升 • 基于CPU metrics • 后续根据业务指标扩容
  • 25.容器器的使⽤用⽅方式 • 使⽤用init进程守护(systemd) • 好处: • • panic之类的问题的可以更更快的重启 • 和物理理机的守护⽅方式⼀一致 • ⽀支持容器器内应⽤用重启或临时更更新操作 坏处: • 服务⼀一直异常可能会影响服务(LB和RPC框架会屏蔽)
  • 26.容器器的使⽤用⽅方式 • • 不不完全⾃自包含 • 基础服务在容器器外运⾏行行:各种agent • ⽇日志持久化 • 公共Library共享 ⼀一种折衷和过渡
  • 27.容器器的使⽤用⽅方式 Host Container metrics-server Shared Service /tmp /tmpPHWULFVVRFN mount Shared Python Library ss_lib /opt/tiger/ss_lib Platform tools tools /opt/tiger/tce_tools
  • 28.⽇日志收集 Host Consumer A Consumer B Container App databus-collector Log lib Stream processing Consumer C ٟdatabus /tmp/databus_collector.sock RSWWLJHUWFHORJ360 ٟ෈կ /tmp/databus_collector.sock /opt/tiger/toutiao/log
  • 29.监控
  • 30.监控
  • 31.02-1. DevOps、微服务
  • 32.DevOps
  • 33.平台眼⾥里里的服务(App) • 理理解服务化 • 全局唯⼀一标示:P.S.M • {$PRODUCT}.{$SUBSYS}.{$MODULE} • 贯穿⾃自动化测试,服务授权,监控,⽇日志等⽅方⾯面 • 分集群:区别对待不不同的⽤用户, cluster,env,框架⼀一起理理解 • 基本的元信息 • 依赖的程序/lib包信息
  • 34.平台眼⾥里里的服务(App) ๐‫ۓ‬ғP.S.M IDC1 IDC2 1 2 Canary Prod 3 Prod cluster1 cluster1 1 2 Canary Prod cluster2 3 Prod cluster2
  • 35.平台眼⾥里里的服务(App) Host Kubernetes ContainerLabel:-cluster:defaultEnv:'>Env: