运维体系建设-提纲
2019-05-02
标准化建设
标准化的套路
- 第一步,识别对象
- 第二步,识别对象属性
- 第三步,识别对象关系
- 第四步,识别对象场景
基础设施层面的标准化
- 第一步,识别实体对象,主要有服务器、网络、IDC、机柜、存储、配件等。
- 第二步,识别对象的属性,比如服务器就会有 SN 序列号、IP 地址、厂商、硬件配置(如 CPU、内存、硬盘、网卡、PCIE、BIOS)、维保信息等;网络设备如交换机也会有厂商、型号、带宽等信息。
- 第三步,识别对象之间的关联关系,比如服务器所在的机柜,虚拟机所在的宿主机、机柜所在 IDC 等简单关系;复杂一点就会有核心交换机、汇聚交换机、接入交换机以及机柜和服务器之间的级联关系等,这些相对复杂一些,也就是我们常说的网络拓扑关系。
- 第四步,还是以服务器为例,我们针对服务器的日常操作有采购、入库、安装、配置、上线、下线、维修等等。另外,可能还会有可视化和查询的场景,如拓扑关系的可视化和动态展示,交换机与服务器之间的级联关系、状态(正常 or 故障)的展示等,这样可以很直观地关注到资源节点的状态。
应用层面的标准化
- 第一步,识别对象。
我们前面讲过,这个识别过程是在做微服务架构设计或拆分的时候就确定下来的。所以严格地讲,它不应该是运维阶段才被识别出来的,而是在之前设计阶段就被识别和确认下来,然后延伸到运维这里才对。 - 第二步,识别对象属性。
一个应用是业务的抽象逻辑,所以会有业务和运维两个维度的属性。业务属性在业务架构时确定,这主要是需要业务架构师去识别的,但是它的运维属性就应该由运维来识别了。- 应用的元数据属性,也就是简单直接地描述一个应用的信息,如应用名、应用 Owner、所属业务、是否核心链路应用以及应用功能说明等,这里的关键是应用名;
- 应用代码属性,主要是编程语言及版本(决定了后续的构建方式),GitLab 地址;
- 应用部署模式,涉及到基础软件包,如语言包 Java、C++、Go 等;容器如 Tomcat、JBoss 等;
- 应用目录信息,如运维脚本目录、日志目录、应用包目录、临时目录等;
- 应用运行脚本,如启停脚本、健康监测脚本;
- 应用运行时的参数配置,如运行端口、Java 的 JVM 参数 GC 方式、新生代、老生代、永生代的堆内存大小配置等。
- 第三步,识别对象关系
也就是应用与外部的关系,概括起来有三大类:- 第一类是应用与基础设施的关系,包括应用与资源、应用与 VIP、应用与 DNS 等等的关系;
- 第二类是平行层面的应用与应用之间的关系,这里再细分下去就是应用服务或 API 与其它应用服务和 API 的依赖关系。如果你有相关的经验,应该会联想到全链路这样的工具平台了,没错,这样的平台就是用来处理应用间关系管理的。
- 第三类是应用与各类基础组件之间的关系,比如应用与缓存,应用与消息、应用与 DB 等等之间的关系。
- 第四步,识别应用的运维场景。
比如应用创建、持续集成、持续发布、扩容、缩容、监控等;再复杂点的比如容量评估、压测、限流降级等。
基础架构的标准化及服务化
常见的分布式基础架构组件
- 分布式服务化框架 ,业界开源产品比如Dubbo、Spring Cloud这样的框架;
- 分布式缓存及框架 ,业界如Redis、Memcache,框架如Codis和Redis Cluster;
- 数据库及分布式数据库框架 ,这两者是密不可分的,数据库如MySQL,MariaDB等,中间件如淘宝TDDL(现在叫DRDS)、Sharding-JDBC等。当前非常火热的TiDB,就直接实现了分布式数据库的功能,不再额外选择中间件框架;
- 分布式的消息中间件 ,业界如Kafka、RabbitMQ、ActiveMQ以及RocketMQ等;
- 前端接入层部分 ,如四层负载LVS,七层负载Nginx或Apache,再比如硬件负载F5等。
选型的原则:
先组织选型调研,然后进行方案验证和对比,最后确认统一的解决方案。
- 每种基础组件只允许一种选型,至少满足90%的应用场景
- 遵循生态本身的标准
环境建设
环境建设关键点
- 网段规划
- 服务化框架的单元化调用
- 环境域名的访问策略
- 自动化管理
线下环境
- 集成测试环境
- 开发测试环境
- 项目环境
线上环境
- 生产环境
- 预发布环境
- 灰度环境
- 办公网生产环境
持续交付建设
配置管理
- 版本控制
- 依赖配置
- 软件配置
- 代码配置
- 应用配置
- 环境配置
需求拆解
提交管理
- 开发协作模式
- 主干开发模式
- gitflow开发模式
- 分支开发模式
- 构建环节
编译打包
自动化测试
部署发包
稳定性建设
容量规划
压测系统建设
限流降级
开关预案
全链路追踪
故障管理
故障定级标准
故障定责标准
故障应急
故障复盘
安全体系建设
管理安全
- 人员意识
- 流程制度
技术安全
- 物理安全
- 主机安全
- 网络安全
- 应用安全
- 数据安全
运维组织架构建设
- 基础运维
- 应用运维
- 数据运维
- 运维开发