运维人员成长与发展指南

一、 核心价值观与服务宗旨

运维人员做事需遵循 “简单、易用、高效” 的原则。

对于运维服务有 3 大宗旨:

  1. 企业数据安全保障:数据是生命线,不可丢失。
  2. 7*24小时业务持续提供服务:保证高可用性。
  3. 不断提升用户感受、体验:关注性能与体验。

二、 运维角色职责划分

初中级运维的日常涉及工作

  1. 评估产品需求及发展需求,设计网站架构。
  2. 选择 IDC 公司、云产品,CDN 等产品。
  3. 采购服务器、安装系统、配置服务、服务器 IDC 上架。
  4. 调试网络、优化系统及服务。
  5. 上线代码、配合研发搭建环境、调试、测试代码。
  6. 监控硬件、软件及各种业务应用。
  7. 配置收集日志,根据日志信息报警及优化系统及服务。
  8. 解决日常问题,如硬件(服务器、交换机、硬件、网络等)、软件(网络服务)、各类业务服务故障。
  9. 编写自动化脚本(Shell/Python),自动化部署服务。

高级运维或者架构师涉及的工作

  1. 监控带宽、流量、并发、业务接口等关键资源及访问信息的变化趋势。
  2. 根据相应趋势变化不断优化网站架构。
  3. 设计各类解决方案,解决公司业务发展中的遇到的网站瓶颈。
  4. 编写各种自动化脚本,自动化部署优化服务。
  5. 开发自动化部署和管理平台(CMDB),实现平台化运维。
  6. 开发运维管理平台及运维工具产品,提升服务效率。
  7. 制定运维流程、规范、制度,并有序推进。
  8. 研究先进运维理念、模式,确保业务持续稳定、有序。

三、 运维必备技能图谱

1. 基础与核心

  • Linux 操作系统:RedHat/CentOS(企业主流),Ubuntu,SUSE,Debian。
    • 重点:系统使用、磁盘管理、软件包管理、进程管理、用户管理。
  • 基础网络服务
    • 核心:SSH, Apache, Nginx(重中之重), Tomcat, FTP, DNS, NFS, Crontab。
    • 要求:不仅要会部署,必须熟悉配置优化。

2. 脚本与自动化

  • Shell 编程:运维人员必备技能,能写系统管理脚本(如监控 CPU/内存)。
  • 文本处理三剑客
    • 核心sed, awk(重中之重), 正则表达式。
    • 辅助:sort, tr, cut, paste, uniq, tee。
  • Python 编程:进阶必备,用于开发运维平台、工具产品。

3. 数据库与中间件

  • MySQL:Linux 环境最主流数据库。
    • 要求增删改查必学,特别是查询,掌握主从复制、备份恢复。
  • Nginx:核心 Web 服务器,需精通配置与优化。

4. 安全与监控

  • 防火墙:iptables(难点在于规则),NAT 表原理。
  • 监控工具
    • 传统:Cacti, Nagios, Zabbix(企业应用最广)。
    • 现代Prometheus(容器监控事实标准,新一代监控)。

5. 高可用与集群

  • 负载均衡:LVS(4层), Nginx/Haproxy(7层)。
  • 高可用:Keepalived(主流), RHCS。
  • 热备:MySQL 主从/双主热备。

6. 存储与备份

  • 原理:掌握 RAID(特别是 1+0 / 0+1)。
  • 工具:tar, dump, rsync。

7. 自动化与云计算

  • 自动化运维:Ansible(较易入手), Puppet, Saltstack。
  • 云平台Openstack(公有云/私有云底层标配), Cloudstack。
  • 容器技术Docker(容器化), Kubernetes/k8s(高薪必备,编排标准)。

8. 架构与日志

  • Web 架构:LNMP/LAMP, JSP体系(Tomcat), CDN 原理, 缓存, 压测。
  • 日志系统ELK(Elasticsearch, Logstash, Kibana) 海量日志收集。
  • 大数据:Hadoop, HBase, Zookeeper。

四、 运维必备意识

  1. 安全意识:权限很大,必须保证账号/私钥安全(建议加密存储 Truecrypt/1password),切勿上传网盘。
  2. 责任/Owner 意识:遇到报警第一时间处理,不推诿;无法处理立即求助,严禁掩盖问题。
  3. 细心/磨刀意识
    • 任何操作前先搞懂原理。
    • 复杂变更必须写操作计划(详细到每一条命令)并请人审核。
    • 重要操作必须有回退方案
  4. 计划与复盘意识
    • 周报/日报:定期汇报网络运行情况(可脚本自动化获取数据生成)。
    • 记录分享:遇到特殊案例,整理成文档(输出博客/wiki),分享知识,减少团队踩坑。
  5. 监控意识:监控是发现异常的眼睛,运维应与监控紧密配合。
  6. 业务意识:了解所维护主机上的业务类型及关联性,以便快速定位故障。
  7. 推进/改善意识:若代码导致系统开销大,应推动研发优化,而非仅仅扩容。
  8. 进取心:运维知识范围广,需不断学习新技术(如容器、云原生)。

五、 从入门到专家的进阶路径

  1. 阶段一:Linux 系统基础
    • 命令使用、用户权限、核心知识点。
  2. 阶段二:系统管理与进阶
    • 进程、资源、任务、文件、磁盘、软件包管理。
  3. 阶段三:常用服务
    • DNS, FTP, HTTP, Mail。
  4. 阶段四:安全与网络
    • Linux 安全架构、加密解密、常见攻击防范、iptables。
  5. 阶段五:脚本编程
    • Shell 入门到精通,企业级脚本。
  6. 阶段六:数据库
    • MySQL 安装、管理、授权、SQL 语句。
  7. 阶段七:Web 与代理
    • HTTP 高级协议、Nginx 缓存、Web 服务。
  8. 阶段八:集群与高可用
    • LVS/Nginx/Haproxy 负载均衡, Keepalived 高可用。
  9. 阶段九:监控
    • Zabbix 监控体系。
  10. 阶段十:自动化
    • Ansible/Puppet 运维自动化。
  11. 阶段十一:大型架构
    • Tomcat, JSP, CDN, 缓存, 压测, 动静分离。
  12. 阶段十二:数据库进阶
    • 分库分表、备份策略、读写分离、MHA。
  13. 阶段十三:云计算
    • OpenStack 核心组件。
  14. 阶段十四:大数据
    • Hadoop, HBase, Zookeeper。
  15. 阶段十五:虚拟化
    • KVM。
  16. 阶段十六:NoSQL
    • Redis, MongoDB 复制与集群。
  17. 阶段十七:日志与持续集成
    • ELK 日志系统, Jenkins + GitHub。
  18. 阶段十八:容器与编排
    • Docker, Kubernetes (K8s)
  19. 阶段十九:系统调优
    • CPU, 内存, IO, 网络参数。
  20. 阶段二十:综合能力
    • 表达能力、团队协作、执行能力。

六、 高效工作与效率提升技巧

  1. 汇报自动化:利用脚本(Telnet/SSH/SNMP)获取数据,结合 Excel 或 Python 生成图表,自动发送邮件日报/周报。
  2. 台账管理:使用 Django 开发内部 CMDB 系统,替代 Excel 维护设备/配置台账,解决数据混乱问题。
  3. 移动化运维:将常用诊断命令和修复脚本封装成 Web 界面或微信小程序,现场运维手机操作即可。
  4. 知识库建设:利用 Django/Flask 搭建内部 Wiki,沉淀经验,形成团队知识库。
  5. 统一告警平台:利用正则分析日志,聚合监控和安全告警,通过短信/微信/Websocket 推送给指定负责人。