python运维书籍 知乎_知乎基础架构运维工程师王玉驰《用Python技术栈构建知乎系统运维平台》...

1. 用 Python 技术栈构建知乎系统运维平台 王玉驰 知乎

2. A bit of History

3. A bit of History 2011年 2013年 2015年中 2015年初 2015年末 3

4. 3 个运维, 80% 时间处理理⽇日常需求。
 still…… • 交付的速度不不够快。 • 交付的结果正确性不不好。 • 数据缺失和混乱。 • 线上环境不不稳定。

5. 「知乎技术团队相信⼯工具的⼒力力量量。」

6. 1 个运维, 20% 时间处理理⽇日常需求。(on-call)

7. 为什什么⽤用 Python?

8. 为什什么⽤用 Python? • PyCon

9. 为什什么⽤用 Python? • PyCon • 知乎技术团队普遍使⽤用 Python。 • Python 学习曲线平滑,运维多少都会⼀一点 Python。 • Python 在运维/DevOps 领域⽣生态好。openstack、saltstack、 fabric、ansible、graphite……

10. 架构与实现

11. 监控系统 批处理理任务(fabric) 配置管理理(saltstack) 离线任务
 (通知等) 初始化 ⾃自动发现 装机 控制台 API 后端 前 端 任务队列列 SA/RD/供应商 第三⽅方平台

12. 控制台 • 前端 • Angular + Angular Material • 后端 (restful api server) • tornado web framework • MongoDB

13. 监控系统 批处理理任务(fabric) 配置管理理(saltstack) 离线任务
 (通知等) 初始化 ⾃自动发现 装机 控制台 API 后端 前 端 任务队列列 SA/RD/供应商 第三⽅方平台

14. 「坚持最⼩小可⽤用原则,拒绝过度设计。」 – 知乎运维刺刺客信条 #1

15. 初始化 • OS: 95% Debian, ~5% CentOS, 1-2 Windows.

16. 初始化 • OS: 95% Debian, ~5% CentOS, 1-2 Windows. • The Old Way:调整硬件配置、通知机房上架、录⼊入信息、open iDrac、装操作系统、初始配置…… • 10 台服务器器 ~ ⼀一天时间

17. 初始化 • OS: 95% Debian, ~5% CentOS, 1-2 Windows. • The Old Way:调整硬件配置、通知机房上架、录⼊入信息、open iDrac、装操作系统、 初始配置…… • 10 台服务器器 ~ ⼀一天时间 (后续还有返⼯工) • The New Way: 硬件配置标准化、供应商录⼊入信息、直接上架、⾃自动装机初始化并交付 • 50 台服务器器 ~ 三个⼩小时

18. 初始化 - 实现 • 硬件、操作系统配置标准化,相同业务内的机器器和系统都是同质的。

19. 「不不要相信默认的,⾃自动协商的配置, 重要的配置都写在标准⾥里里。」 – 知乎运维刺刺客信条 #2

20. 初始化 - 实现 • 硬件、操作系统配置标准化,相同业务内的机器器和系统都是同质的。 • 开放控制台给供应商,硬件的原始信息由供应商⼀一次录⼊入。 • 优化⾃自动装机流程。 • 机器器⾃自动发现和标准检查。

21. 初始化 - ⾃自动装机 • 优化 • ⾃自动装操作系统⽩白名单。 • 按业务需求装不不同版本的操作系统发⾏行行版。 • 按业务需求初始化不不同的配置。

22. 初始化 - ⾃自动装机 • PyPXE VS Raw-server VS Cobbler
 PyPXE Raw-server 提供核⼼心功能 Yes Yes Cobbler Yes 易易⽤用 简单 Yes Yes(300 ⾏行行 Python 代码) A little bit. Not quite easy. No No

23. 「选择简单成熟的⽅方案,⽬目标是 ⽤用合适的⼯工具解决问题。」 – 知乎运维刺刺客信条 #3

24. 初始化 - ⾃自动发现 • 发现新上线的服务器器 • 采集服务器器、操作系统的信息。IP 地址、分区、BIOS 设置等…… • 检查配置是否符合标准

25. 「Don’t repeat yourself,把经验 和能⼒力力落实在⼯工具和产品⾥里里。」 – 知乎运维刺刺客信条 #4

26. 监控系统 批处理理任务(fabric) 配置管理理(saltstack) 离线任务
 (通知等) 初始化 ⾃自动发现 装机 控制台 API 后端 前 端 任务队列列 SA/RD/供应商 第三⽅方平台

27. 配置管理理 - Saltstack • Saltstack VS Puppet • Puppet is slower。 • Saltstack 的 state ⽂文件组织起来更更简洁,Puppet 基于 Ruby DSL,配置代码库很容易易变得复杂、易易出错,对新⼈人不不友好。 • Saltstack 和 Python ⽆无缝整合,与其他组件整合起来⽐比 Puppet 便便利利许多。

28. 配置管理理 - Saltstack • 操作系统基础配置管理理 • 基础服务配置 • 命令执⾏行行 • 操作系统状态查询

29. 其他组件 • 任务队列列: Beanstalkd • 监控: collectd + graphite + grafana + Halo(内部报警系统) • 批处理理任务: fabric

30. Interruption is killer of efficiency

31. Interruption is killer of efficiency • 配置远程登录权限 • 管理理内部域名(修改记录,扩容) • 排查疑似⽹网络问题 • 分配 IP 地址 • ……

32. Interruption is killer of efficiency • 配置远程登录权限 • 管理理内部域名(修改记录,扩容) • 排查疑似⽹网络问题 • 分配 IP 地址 •每…天…中断 30+ 次,感觉身体被掏空

33. Interruption is killer of efficiency • 配置远程登录权限 • 管理理内部域名(修改记录,扩容) • 排查疑似⽹网络问题 • 分配 IP 地址 •每…天…中断 30+ 次,感觉身体被掏空

34. 「知乎技术团队相信⼯工具的⼒力力量量。」

35. 更更多的⼯工具 • ⾃自助的远程登录权限管理理。

36. 更更多的⼯工具 • ⾃自助的远程登录权限管理理。 • 内部 DNS 服务平台化。

37. 更更多的⼯工具 • ⾃自助的远程登录权限管理理。 • 内部 DNS 服务平台化。 • 内⽹网 IP 管理理,⾃自助申请和⾃自动回收。 • 简单的容量量管理理。 • ⾃自助排查内⽹网链路路上的⽹网络故障。 • ⾃自助开通云服务资源。 • ……

38. A fine tool is killer of interruption • 控制台⽇日 PV 500+ • 操作接⼝口每⽇日被单独调⽤用量量 100+ • 三个运维 80% 时间专注在⼯工具开发上。

39. 「变更更要有记录、可回滚、可追溯。 消除故障影响最有效的⼿手段是回滚。」 – 知乎运维刺刺客信条 #5

40. 「多做检查,准确交付,线上的 任何操作都要有 checklist。」 – 知乎运维刺刺客信条 #6

41. 「任何⼩小问题都会放⼤大到业务上。 蝴蝶效应和墨墨菲定律律 rules。」 – 知乎运维刺刺客信条 #7

42. 运维的刺刺客信条 & Zen of Python • 做⼯工具坚持最⼩小可⽤用原则,拒绝过度设计。 • 选择简单成熟的⽅方案,⽬目标是⽤用合适的⼯工具解决问题。 • 不不要相信默认的,⾃自动协商的配置,重要的配置都写在标准⾥里里。 • Don’t repeat yourself,把经验落实在⼯工具和产品⾥里里。 • 多做检查,准确交付,线上的任何操作都要有 checklist。 • 变更更要有记录、可回滚、可追溯。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值