去哪儿网DEVOPS 马文:基于Mesos Docker的Elasticsearch容器化私有云

言冰洁

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

Mesos 从 0.23 版本开始提供了动态预留和持久化卷功能,可以利用本地磁盘创建数据卷并挂载到 Docker 容器内,同时配合动态预留的功能,保证容器,数据卷,机器三者的绑定,解决了Docker一直以来数据落地的问题。本次分享主要介绍去哪儿网的ops团队利用 Mesos/Docker开发的Elasticsearch(ESAAS)平台的建设的过程,以及实践过程中的经验总结。

文字内容
1. Ela基st于ics马Me文SeaAs去rcoC哪hs儿C容/网2DD0器oE1VcO7化PkSe私r的有云
2. 目录 目录 1 1 背景与现状 SACC20172 2 技术实现 3 3 配置与部署 4 4 监控与报警 5
3. 一、SA背C景C与20现17状
4. 背景 传统的Elasticsearch交付与维护弊端: • 传统部署以kvm虚机或实体机为节点,需提前申请,过程较慢 • ES运行环境需要人工事先部署,自动化程度不高 017• 集群扩容需要人工一遍一遍的部署环境, 效率低 C2• 集群信息不集中,不易于管理,维护成本高 SAC• ES需求量增加之后,更加加大了维护的成本和繁杂性
5. 设计目标 针对上述弊端, 我们制定的几点设计目标: • 加快集群构建速度 17• 快速扩容和快速迁移能力 C20• ES使用/运维标准化 SAC• 集中的信息展示与良好的用户交互界面
6. 设计目标 容器化的私有云平台 ElasticseaSrcAh aCs Ca s2e0rv1ic7e (ESAAS)
7. 改进 • 成本: • 人力成本: 大大节省,用户只管使用,我们平台方统一维护 • 资源成本: 均摊下来一个ES集群少于2台机器, 且目前仍有大量空闲资源 • 效率: 17• 集群构建:从初始化到任务调度到集群work最快可10min内 20• 集群扩容:扩容节点秒级以内 CC• 规范: SA• ES使用标准化: appcode表示方式,portal查看申请统一入口 • 运维标准化:统一集群管理,统一配置管理,配套监控报警
8. 改进 SACC2017
9. 平台规模 SACC2017
10. 资源使用 资源使用未过半,均摊下来一个ES集群资源使用不到2台物理机 SACC2017
11. S二A、C技C术2实0现17
12. 调研选型 • Elastic Cloud • Amazon Elasticsearch Service SACC2017• Elasticsearch Framework on Mesos
13. 调研选型 SACC2017
14. 总体结构 SACC2017
15. 资源分配结构 SACC2017
16. 集群逻辑隔离 SACC2017
17. 集群逻辑隔离 SACC2017
18. 一个完整ES集群的逻辑结构 SACC2017
19. 单台物理机结构 SACC2017• 一个机器上可有多个ES 节点 • 使用不同的端口来区别
20. 服务发现 discovery.zen.ping.unicast.hosts: [“:<haproxy:port>”] SACC2017
21. 可靠性 & 持久化 • Marathon 持久化卷功能, 保证ES节点重启之后能在原机器节点之上 restart • index.number_of_replicas >= 1 017• 默认配备hdfs插件 SACC2• replica 数量大于ES实例数 (防止主备分片被分配在同一台机器上面)
22. 三S、A配C置C和2部01署7
23. 自助化配置 • ES配置文件存在gitlab上, 自助修改 • 添加pre-run文件, 在ES实例启动之前做自定义的事 SACC2017
24. 信息管理 SACC2017
25. 自助配置 SACC2017
26. 自动化部署 SACC2017
27. 四、监控与报警 SACC2017
28. 指标收集 • pyadvisor 收集docker 容器的指标 SACC2017• es2graphite 收集ES集群的指标
29. 聚合汇总 SACC2017
30. 聚合汇总 SACC2017
31. 报警 • ES集群 • ES集群状态(非green状态) • ES节点GC时间 • 节点数量 • ESAAS平台 • ZK相关 • 节点load • 节点磁盘容量 SACC2017
32. 总结 SACC2017
33. SACC2017