运维人员成长与发展指南
一、 核心价值观与服务宗旨
运维人员做事需遵循 “简单、易用、高效” 的原则。
对于运维服务有 3 大宗旨:
- 企业数据安全保障:数据是生命线,不可丢失。
- 7*24小时业务持续提供服务:保证高可用性。
- 不断提升用户感受、体验:关注性能与体验。
二、 运维角色职责划分
初中级运维的日常涉及工作
- 评估产品需求及发展需求,设计网站架构。
- 选择 IDC 公司、云产品,CDN 等产品。
- 采购服务器、安装系统、配置服务、服务器 IDC 上架。
- 调试网络、优化系统及服务。
- 上线代码、配合研发搭建环境、调试、测试代码。
- 监控硬件、软件及各种业务应用。
- 配置收集日志,根据日志信息报警及优化系统及服务。
- 解决日常问题,如硬件(服务器、交换机、硬件、网络等)、软件(网络服务)、各类业务服务故障。
- 编写自动化脚本(Shell/Python),自动化部署服务。
高级运维或者架构师涉及的工作
- 监控带宽、流量、并发、业务接口等关键资源及访问信息的变化趋势。
- 根据相应趋势变化不断优化网站架构。
- 设计各类解决方案,解决公司业务发展中的遇到的网站瓶颈。
- 编写各种自动化脚本,自动化部署优化服务。
- 开发自动化部署和管理平台(CMDB),实现平台化运维。
- 开发运维管理平台及运维工具产品,提升服务效率。
- 制定运维流程、规范、制度,并有序推进。
- 研究先进运维理念、模式,确保业务持续稳定、有序。
三、 运维必备技能图谱
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。
四、 运维必备意识
- 安全意识:权限很大,必须保证账号/私钥安全(建议加密存储 Truecrypt/1password),切勿上传网盘。
- 责任/Owner 意识:遇到报警第一时间处理,不推诿;无法处理立即求助,严禁掩盖问题。
- 细心/磨刀意识:
- 任何操作前先搞懂原理。
- 复杂变更必须写操作计划(详细到每一条命令)并请人审核。
- 重要操作必须有回退方案。
- 计划与复盘意识:
- 周报/日报:定期汇报网络运行情况(可脚本自动化获取数据生成)。
- 记录分享:遇到特殊案例,整理成文档(输出博客/wiki),分享知识,减少团队踩坑。
- 监控意识:监控是发现异常的眼睛,运维应与监控紧密配合。
- 业务意识:了解所维护主机上的业务类型及关联性,以便快速定位故障。
- 推进/改善意识:若代码导致系统开销大,应推动研发优化,而非仅仅扩容。
- 进取心:运维知识范围广,需不断学习新技术(如容器、云原生)。
五、 从入门到专家的进阶路径
- 阶段一:Linux 系统基础
- 命令使用、用户权限、核心知识点。
- 阶段二:系统管理与进阶
- 进程、资源、任务、文件、磁盘、软件包管理。
- 阶段三:常用服务
- DNS, FTP, HTTP, Mail。
- 阶段四:安全与网络
- Linux 安全架构、加密解密、常见攻击防范、iptables。
- 阶段五:脚本编程
- Shell 入门到精通,企业级脚本。
- 阶段六:数据库
- MySQL 安装、管理、授权、SQL 语句。
- 阶段七:Web 与代理
- HTTP 高级协议、Nginx 缓存、Web 服务。
- 阶段八:集群与高可用
- LVS/Nginx/Haproxy 负载均衡, Keepalived 高可用。
- 阶段九:监控
- Zabbix 监控体系。
- 阶段十:自动化
- Ansible/Puppet 运维自动化。
- 阶段十一:大型架构
- Tomcat, JSP, CDN, 缓存, 压测, 动静分离。
- 阶段十二:数据库进阶
- 分库分表、备份策略、读写分离、MHA。
- 阶段十三:云计算
- OpenStack 核心组件。
- 阶段十四:大数据
- Hadoop, HBase, Zookeeper。
- 阶段十五:虚拟化
- KVM。
- 阶段十六:NoSQL
- Redis, MongoDB 复制与集群。
- 阶段十七:日志与持续集成
- ELK 日志系统, Jenkins + GitHub。
- 阶段十八:容器与编排
- Docker, Kubernetes (K8s)。
- 阶段十九:系统调优
- CPU, 内存, IO, 网络参数。
- 阶段二十:综合能力
- 表达能力、团队协作、执行能力。
六、 高效工作与效率提升技巧
- 汇报自动化:利用脚本(Telnet/SSH/SNMP)获取数据,结合 Excel 或 Python 生成图表,自动发送邮件日报/周报。
- 台账管理:使用 Django 开发内部 CMDB 系统,替代 Excel 维护设备/配置台账,解决数据混乱问题。
- 移动化运维:将常用诊断命令和修复脚本封装成 Web 界面或微信小程序,现场运维手机操作即可。
- 知识库建设:利用 Django/Flask 搭建内部 Wiki,沉淀经验,形成团队知识库。
- 统一告警平台:利用正则分析日志,聚合监控和安全告警,通过短信/微信/Websocket 推送给指定负责人。