PaaS实现与运维管理 -- 前言

96
余何_众神的大师兄
2015.09.27 22:34* 字数 5859

今来古往随风去, 书剑相伴两袖空

笔者在运维领域耕耘十余载,07年加入到平安集团旗下的科技公司。11年主导集团内最大的应用迁徙与架构变更。12年开展IT运维管理变革,打通横向条线,实现技能融合。光阴荏苒,日月如梭,运维往事历历在目,流过汗,熬过夜,摊过事,也拿过奖,运维是一个从无到有、日积月累、不断提升的过程,也是一个需耐得住寂寞,顶得住压力的行当,在此与正奋斗在运维一线的伙伴们共勉。
  平安IT经历了企业信息管理部、国际领先IT服务公司到互联网金融三个历史阶段,每一次蜕变都紧随时代步伐、拥抱技术革新,创造业务价值。从企业ERP、PC互联、移动互联、云计算到大数据,运维人一直在奔袭,从未有停歇。企业信息管理时期的运维人飞行于各大城市的上空,每一次发版、变更就是一次长途远行,分散的管理模式简单直接,但随着业务发展、规模扩大,企业对系统稳定性、运营成本控制的要求越来越高,随之而来的是IT集中管理时代,这个时期追求一流的国际IT服务管理水平,构建独立数据中心,实现开发架构、安全标准与运营规范的全面统一,这一时期形成的IT管理实践堪称行业标杆。13年全面进入互联网金融时期,移动互联、云计算、大数据的火热,业务渠道、流量入口、用户终端的改变,促使我们又一次站在了历史新起点。
  互联网金融在运维方面上演了一场“双城记”。一边是充满贵族气质、为荣誉而战的“英伦君主立宪”。在这个领域内严格执行IT管理规范,稳若磐石,滴水不漏,保证绝对的稳定与安全。而另一边是自由、民主喧哗下的“法国大革命”,为了满足互联网下业务系统的“高并发、高吞吐、版本多变”需求,应用不再拘泥于一致框架、规范与准则,多样选择,以快为先。本书的核心内容就是在这样一个背景下诞生的,我们无法“一刀切”的构建承载所有应用类型的基础环境,只有准确定义应用标准,以一种兼容并存的方式在应用架构上迭代地朝轻量级、微模块方向发展,通过技术、管理双层标准来调和“君主立宪”与“民主共和”间矛盾,转化成优势互补、经验传承、全面共赢,最终完成新时期历史使命。这个过程是无法一步到位、一蹴而就的,而是以一种螺旋式形态探索前进,除了在原有管理规范上引入新技术探究外,还需开发同步配合在应用架构上进行改造,基础架构将从环境运维逐渐转变成平台研发,以提供功能粒度细、服务自助化的运维平台来满足上层应用需求。

通明大道去浮华, 千辛历尽回本真

PaaS并不能解决IT运维上的所有问题,它对应了“民主共和”那部分,提供一个用户自助的开放形式平台来满足部分应用需求。PaaS也不是一开始就从解决异地容灾、流量切换等数据中心级别功能上设计的,而是在兼容当前企业应用架构,满足资源分配、计算单元打包、版本发布控制等基础功能后,再做进一步功能延伸的。PaaS并不是一种新兴技术,而是对以往运维经验的总结,利用容器等技术对开发、运维工作流的重新编排。
  IT技术更新发展快,新词汇层出不尽,特别是云计算、大数据、移动互联下衍生了大量产品,让运维人应接不暇,刚刚掌握Hadoop,又出Spark,才标准化ActiveMQ,又有Kafka,Openstack的IaaS体系才得以了解,又有各种平台下的PaaS......如果要熟练掌握每一门技艺,这将是一个疲于奔命的过程,而这个熟练过程在大部分都是表面的产品架构与配置,但我们会发现一旦深入其中,所有技术却看似是一致的。对于运维人员来说,“亘古不变”的始终是底层的三大基础资源计算、存储、网络,这些知识包括程序的链接、加载与运行;操作系统下的CPU、内存、IO资源管理;基本的TCP/IP协议栈等。随着技术层级越多而复杂性越高,运维人员只有透过眼花缭乱的“新技术”看到其内在一致的本质,在底层长期沉淀,理解好程序是如何调用三大基础资源,找到运维技术的本真,才可以做到最终的不变应万变,这也印证了运维是一个要耐得住寂寞的行当。
  最后让我们回到运维管理上,今年国内互联网上发生了几起影响比较严重的运维故障,一时间在圈内引起广泛的关于“再流弊的技术,也抵不过一次事故”等科技杂谈,足以可见管理在运维上的重要性。管理是一门艺术,而这门艺术在运维上并不是形而上学、趋于神秘主义的,同时也不是绝对的“封”、“杀”、“控”,以怀疑主义、不信任方式来管控。运维管理是人、流程与工具三方面的有机结合。“民主共和”型运维管理往往依赖于人的自觉性,而“君主立宪”则重在流程管控,朝两个极端偏倚而忽视它们与工具的结合都将不能根本解决问题。我们会发现越是技术实力强、自信的人越容易犯运维错误,而再完善的流程制度,如果繁琐到让人感觉“无意义”,那也就无从执行了。工具是人与流程间的桥梁,但一定要注意这个工具不是管控的“枷锁”,而是在满足运维管理需求下关注一线运维人员用户体验的“帮手”,对于管理层它是上层意志的体现,但对于一线运维人员,它是一个效率工具,除了包含精准配置信息、标准变更步骤外,还要囊括人性的知识分享、社交互动等功能,它是为一线运维人员服务,以人为本的。

内容大纲

本书分为四大部分,分别是概念模型基础资源平台实现运维管理,共十五章。各部分之间没有必然联系,读者可依据关注点和个人兴趣来阅读。对于需要系统化理解运维以及PaaS的读者,建议遵循书本原有顺序阅读。
  第一部分:概念模型,阐述了运维与开发的关系,以及这层关系上存在的矛盾,PaaS又是如何有效缓解这层矛盾。这部分介绍了公有PaaS平台的特征,及其开放与约束性。列出12-factor来说明应用系统应当遵循的规则,这样才能适应于在PaaS上运行。
  第二部分:基础资源,本部分勾勒出了数据中心的计算、网络、存储三大资源的主干,从而避免陷入到上层眼花缭乱的产品中。对于已熟悉数据中心三大资源的运维人员来说,本部分是资源的总体概述,让你重拾内在本质,对于一名运维新兵,请以此为纲要寻找外部资源继续深入学习。对于开发人员可通过本部分了解到日常运维工作所管理对象的基本内容。
  第三部分:平台实现,这一部分我们将通过开源产品来构建一个完整的PaaS平台,包括资源管理、任务调度、计算单元打包、分布式协调、日志集中等。通过完成本部分内容,读者实现了一个可扩展、自定义的开放PaaS平台,这个扩展部分包括了各自企业内部的集成部署流程、应用灰度发布、平台门户管理等方方面面内容。
  第四部分:运维管理,本部分论述的运维管理实践。运维管理的核心是配置管理,一个运维人员好用、易用的配置管理系统将直接影响到上层监控管理、变更管理以及事件管理,决定一个企业运维品质的好坏。在随后我们将论述企业运维社交管理以及一些个人知识分享提升的方法。

感谢

首先特别感谢我的太太李嘉,过去一年里写作几乎占用了我所有的周末、休息时间,你承担起了家务,并对我与鱼多多悉心照顾,没有你的理解、宽容与支持,本书无法完成。感谢姐夫喻立新、姐姐何碧,你们在本书插图上给予了我帮助。感谢杨永帮利用周末时间进行审订,感谢梁山在factor-12上给予的帮助,感谢主编孙学瑛老师给予的鼓励与帮助,感谢责任编辑虾米国霞的校对、排版与指导。
  感谢我的公司平安科技,你给予了我一个大平台,让我驰骋在IT运维大草原上得以一览全貌。感谢我的上级胡玮、朱永忠、李毅对我工作的支持,感谢我的同事王欣、于泳、宋楹柯、蓝景全、江锐、常明、黄文建、唐文祥、陈顺星、彭俊清、陈春润对我的帮助。感谢事件处理组的小伙伴们,王耀武、莫广华、陈秋浩、郑司营、赵宝磊、吴磊、林国峰、张浙栋、夏永燕、孟佩佩、罗颖胜、倪沛榆、丁江,感谢基础架构篮球队、感谢所有互联网上帮助过我的朋友们。

目录

第一部分 概念模型
PaaS的动机在于构建一个让应用程序快速部署运行的基础环境,这一部分让我们抛开PaaS的华丽外表,揭开其神秘面纱。很快会我们发现,PaaS解决的是运维与开发间最根本的问题,而在这里,没有统一标准,唯有最佳模型。
第一章 分布式PaaS平台介绍 1
1什么是PaaS 1
1.1开发与运维间的困局 1
1.2 DevOps的自动化 2
1.3 云计算的IaaS 3
1.4 PaaS的到来 4
1.5 PaaS的约束与开放 4
1.6 PaaS解决的具体问题 5
2什么是分布式计算 6
2.1分布式计算与PaaS 6
2.2分布式平台的挑战 7
第二章 PaaS模型与特征 1
2.1 主流PaaS平台架构 1
2.1.1 谷歌GAE 1
2.1.2 亚马逊Elastic Beanstalk 2
2.1.3 Cloud Foundry 5
2.1.4 Herok 6
2.2 PaaS与应用12因素 7
2.1基准代码(Codebase) 7
2.2依赖(Dependencies) 9
2.3配置(config) 10
2.4后端服务(backing services) 11
2.5构建,发布,运行(Build, release, run) 12
2.6进程(process) 14
2.7端口绑定(Port binding) 14
2.8并发(concurrency) 15
2.9快捷性(disposable) 17
2.10开发/生产环境等价(Dev/Prod parity) 17
2.11日志(log) 19
2.12 管理进程(admin process) 20

第二部分 基础原理
计算机系统的核心资源是计算、存储、网络三要素,云计算将这三大资源进行池化,做到按需分配、弹性扩容、自助申请。云计算也好,分布式平台也好,从来就没有改变过这三大基础资源的原本形态。这一部分,我们将重拾计算机系统的本真,回到其原始形态。

第三章 计算资源 1
3.1图灵机与冯诺伊曼模型 2
3.2服务器的种类 7
3.3一切都是二进制 11
3.3.1整数表示法 12
3.3.2文本表示法 14
3.3.3音频信息表示法 16
3.4操作系统,计算机系统的指挥官 17
3.4.1操作系统解决的问题 17
3.4.3 企业级操作系统 19
3.4.4服务器虚拟化 24
3.5进程,资源聚合的抽象 24
3.4.3计算单元的构建 25
3.4.4计算请求的拆解 27
第四章 网络资源 1
4.1协议分层 2
4.1.1 OSI网络体系模型 3
4.1.2 OSI与TCP/IP协议族 5
4.1.3 交换、选路与传输 6
4.2网络物理设备 9
4.2.1连线与接口 10
4.2.2二层交换机 13
4.2.3路由及三层交换 15
4.2.4 四~七层网络设备 17
4.3.4 现实网络构成 17
4.4网络逻辑拓扑 18
4.5网络拓扑的考虑 19
4.6物理布线的考虑 20
4.7 网络虚拟化与SDN 24
第五章 存储资源 1
5.1俯瞰存储系统 2
5.1.1 数据存储功能分类 2
5.1.2 文件存储的三层级 3
5.2磁盘与磁盘阵列 6
5.2.1硬盘的物理构造 6
5.2.2磁盘阵列 8
5.2.3 SCSI协议 11
5.3存储、计算分离 12
5.3.1 磁盘柜与盘阵 12
5.3.2 FC存储网络 13
5.3.3 FC协议栈 16
5.3.4 FC寻址过程 17
5.3.5 FC交换机与适配器 19
5.3.6 FCoE与iSCSI 21
5.4存储访问类型 23
5.4.1 NAS与SAN 23
5.4.2 分布式存储 25

第三部分 平台实现
PaaS的技术核心是什么?PaaS的模块与组件有哪些?企业应用怎样迁移到PaaS平台中?如何找到合适的开源组件实现一个私有PaaS?在这一部分我们将找到答案,让我们从高阶架构开始勾勒出一个PaaS蓝图,摘取社区中优秀的开源软件来填充蓝图模块,最后展现在我们面前的将是一个完整的平台实现。

第六章 平台功能与架构 1
6.1平台运维需求 1
6.1.1软件配置 1
6.1.2服务部署 2
6.1.3服务发现 2
6.1.4监控恢复 2
6.2平台功能划分 2
6.3平台高阶架构 5
6.4企业应用迁移 7
企业应用“厚重” 7
应用部署架构 8
企业应用调整 10
第七章 计算单元 Docker 1
7.1 Docker介绍 1
7.1.1 Docker是什么 1
7.1.2 Docker术语 2
7.1.3 Docker安装 4
7.2 Docker容器命令 5
7.2.1 run command 6
7.2.2 start command 8
7.2.3 stop command 9
7.2.4 restart command 9
7.2.5 attach command 9
7.2.6 ps command 10
7.2.7 inspect command 10
7.3 Docker镜像命令 12
7.3.1 search, pull, push, command 13
7.3.2 commit command 14
7.3.3 images, diff, rmi command 14
7.3.4 save, load, export, import command 15
7.4 Docker网络与链接 15
7.4.1 Docker网络模式 15
7.4.2 pipework管理网络 20
7.4.3 容器链接与数据卷 22
7.5 Dockerfile 24
7.5.1 基本指令集 24
7.5.2 环境指令集 26
7.5.3 数据指令集 26
7.5.4 ENTRYPOINT指令 27
第八章 分布式协调 Zookeeper 1
8.1 Zookeeper介绍 1
8.1.1 Zookeeper是什么 2
8.1.2 Zookeeper架构 3
8.1.3数据模型 4
8.1.4监听与通知 7
8.1.5 API集合 8
8.1.6会话 9
8.1.7观察者 10
8.2 Zookeeper使用 10
8.2.1快速安装 10
8.2.2基本操作 14
8.2.3配置参数 16
8.2.4动态重配置 21
8.2.5监控 24
8.3 Zookeeper进阶 34
8.3.1分组与权重 35
8.3.2 Paxos算法 36
8.3.3 ZAB协议 40
8.3.4分布式协调场景 43

第九章 资源管理 Mesos 1
9.1Mesos介绍 1
9.1.1资源管理需求 1
9.1.2 Mesos起源 3
9.2Mesos架构与工作流 4
9.2.1 Mesos架构组件 4
9.2.2 Mesos工作流 5
9.3 Mesos安装配置 7
9.3.1 安装预先准备 7
9.3.2 构建Mesos 8
9.3.3 启动Mesos 9
9.3.4 高可用Mesos 13
9.3.5 Slave移除限速 18
9.4 Mesos运维 18
9.4.1 认证管理 18
9.4.2 监控管理 22
9.4.3 容器网络限速 32
9.4.4 Framework API限速 34
9.4.5 Restful接口 35
9.4.6 配置参数 37
Mesos资源分配 38
DRF算法 38
DRF权重 41

第十章 服务调度框架 marathon 1
10.1 marathon介绍 1
10.1.1 服务调度平台 1
10.1.2 Marathon实体模型 3
10.2 Marathon使用 7
10.2.1 安装启动 7
10.2.2 运行shell程序 8
10.2.3 运行远程资源 13
10.2.4 Artifact Store 15
10.3 Docker容器运行 18
10.3.1 前提准备条件 19
10.3.2 端口资源分配 20
10.3.3 容器端口分配 23
10.3.4 其他使用方法 25
10.4 marathon管理 27
10.4.1 应用组 27
10.4.2 策略约束 29
10.4.3 健康检查 32
10.4.4 应用部署 36
10.4.5 事件总线 41
10.4.6 命令行参数 44
10.5 服务发现 46
10.5.1 服务发现方法 46
10.5.2 marathon方案 47
10.5.3 Mesos-DNS 51
10.5.4 Bamboo 55
10.6 Chronos作业调度 58
10.6.1 作业调度框架 58
10.6.2 安装运行 59
10.6.3 作业示例 60
10.6.4 REST API 61
第十一章 大数据调度框架 Spark 1
11.1 Apache Spark介绍 1
11.1.1 Apache Spark是什么 1
11.1.2 Lambda架构 2
11.1.3 Spark生态系统 3
11.2 Spark数据处理 5
11.2.1 Spark 运行模式 5
11.2.2 Spark Standalone模式 10
11.2.3 Spark on Mesos 13
11.2.4 Spark Streaming 15

第十二章 日志集中管理 ELK 1
12.1 日志集中概览 1
12.1.1 日志集中介绍 1
12.1.2 日志集中架构 2
12.1.3 日志集中框架 4
12.2 logstash 7
12.2.1 logstash介绍 7
12.2.2 快速安装 8
12.2.3 配置说明 11
12.2.4部署架构 28
12.2.5 处理流程 30
12.2.6 input插件 32
12.2.7 output插件 39
12.2.8 filter插件 45
12.2.9 codec插件 48
12.3 ElasticSearch 50
12.3.1 基本概念 50
12.3.2 安装与使用 54
12.3.3 REST API 56
12.3.4 集群设置 61
12.3.4 备份恢复 66
12.3.5 监控管理 67
12.4 Kibana 69
12.4.1 Kibana介绍 69
12.4.2 discover功能 71
12.4.3 visualize功能 78
12.4.4 Dashboard功能 83

第四部分 运维管理
当运维对象达到一定规模,复杂度会陡增,你会发现哪怕是记录简单的管理对象密码、堡垒机等信息都要几个excel,何况各种复杂的配置资源。运维管理的两个重要职能快速与稳定,既要做得快,又要不出问题,ITIL给了我们一个参考库,在这一部分你将看到具体如何实现,包括配置管理库的如何设计,监控如何管理,变更实施的安全性如何保证,最后我们将回到人员本身,谈一谈运维这道手艺,以及ESNS在运维领域的重要性。

第十三章配置管理 1
13.1 配置管理系统分析 1
13.1.1 服务模型进行分层 2
13.1.2 各IDC团队发现CI 3
13.1.3 IDC管理团队定义CI属性 4
13.3.4 确定CI间的关联 7
13.2 配置管理系统设计 9
13.2.1 用户界面设计 10
13.2.2 权限控制与规则定义 12
13.2.3 数据模型的设计 13
13.3 配置管理数据准确性的保证 15
13.3.1 识别CI的OWNER 15
13.3.2 识别CI的生命周期、关联运维流程 16
13.3.3 数据有效性的审计 16

第十四章 监控管理 1
14.1运维监控管理的问题与价值 1
14.1.1监控管理的无形价值 2
14.1.2 监控平台建立的基础 3
14.1.3 监控管理的WANT原则 3
14.2 运维监控平台的需求分析 5
14.2.1 一次监控过程,调度、规则、告警 5
14.2.2 数据图形化,百分位裁剪、趋势分析、正态分布 12
14.2.3 开源的借鉴与选择,zabbix和nagios 15
14.2.4 商业与开源,最后的决策 25
14.3 JMX监控原理解析 26
14.3.1 JMX的体系结构 27
14.3.2 一个完整的JMX体系架构实例 29
14.3.3通过JMX访问Weblogic Server MBean 33
14.4 SNMP监控原理解析 37
14.4.1 SNMP协议解析,MIB库与消息类型 37
14.4.2 使用SNMP4J实现服务器监控 41
14.4.3 Linux下的监控实现,NET-SNMP 45
14.4.4 MIB库浏览工具,ManageEngine 46
第十五章 运维管理 1
15.1 服务级别管理,IT与业务的一致性 2
15.1.1客户满意度与期望 3
15.5.2服务目录,IT服务的菜谱 6
15.5.3从宏观到可操作性的服务 7
15.4变更管理,服务有效传递 8
15.4.1变更控制的角色、阶段 9
15.4.2变更管理的六原则 10
15.4.3变更分类与风险定级 11
15.4.4表单、步骤、模板与日历 14
15.4事件管理,服务质量保证 18
15.4.1分类管理与评价体系 19
15.4.2 分发、协同与时效 20
15.2 人员管理,自由开放 22
15.2.1 企业社交管理 22
15.2.2目标管理,做好绩效 24
15.2.3 知识管理,人员成长 25
15.2.4 时间管理,个人效率 26

运维管理