服务器运维工程师应该掌握哪些知识
服务器运维工程师应该掌握哪些知识?
首先,谢邀。
运维工程师现在也越来越多元化,并不是每一个阶段掌握的技能都是一样的,发展方向不一样则掌握的技能也会不一样。以下排除掉网络运维、IT运维、存储网络/安全等特种设备运维的方向,列举了几个运维比较常见的发展方向,从基础、进阶到高级三个级别来说明大体需要掌握的技能,有可能不全面。
应用运维方面
:基础:Linux基础/对应的语言环境,如tomcat/LAMP/LNMP这些要能掌握安装、配置、日常维护操作
进阶:Linux存储管理/安全加固/进程资源管理/网络管理,其他应用中间件如缓存(redis/memcached)、MQ(ActiveMQ/RabbitMQ等)、服务发现和治理中间件(如zookeeper)、配置管理工具(如Puppet/Saltstack/CFengine等)
高级:Shell脚本可以信手拈来,Linux内核/网络等常用参数的配置原理和优化场景,资源消耗的排查和优化,熟练掌握iptables,pam,selinux等安全机制。JAVA运行环境还需熟悉JVM优化、GC日志分析、Java线程堆栈分析等。
额外,需要了解一些:
虚拟化技术,如VMware/VirtualBox/KVM
虚拟化管理技术,如vSphere/convirt/oVirt/OpenNebula等
Docker基本使用和管理
私有云平台,如Openstack/CloudStack等
公有云平台,如阿里云/AWS
基础网络技术,如IP网络基础、OSI七层、HTTP/HTTPS/RPC协议、VLAN、路由、NAT、ACL等概念及相关配置技术
虚拟化和云运维方向
,如以商业化的VMware为例:基础:ESXi安装、配置、单主机管理;各种概念,如VM/datastore/vSwitch等;vCenter的基本管理,如模板、网络配置、克隆、迁移等
进阶:vCenter高可用性、vSphere HA高可用性、vSphere Fault Tolerant、VMotion;如使用共享存储还需要了解FC SAN/iSCSI存储网络知识
高级:vSphere Site Recovery/vSphere Data Protection/vSAN管理等
额外,如果使用VMware的其他产品,如NSX/vRealize等,则要学的东西更多。
综合发展
,则还有如下一些需要掌握:基础:监控,如Nagios/Zabbix等基础配置;DNS/NFS/FTP等服务配置;Docker基本使用和管理
进阶:网络分析,如抓包tcpdump/wireshark;性能分析工具,如nmon/iftop/iotop;负载均衡,如nginx/LVS/haproxy。学习一门脚本语言,如python/perl/go等。
高级:进程跟踪和故障分析,如strace/kdump/gdb。Docker编排体系,如kubernetes/swarm等。还有日志分析ELK;指标数据库influxdb/promethus等
上面看起来眼花缭乱,其实并不是每项都需要掌握。以下几个方面都可以成一个单独的发展方向,如果能独立搞定一个方向,就已经迈入运维架构师的层面了。
虚拟化及私有云管理方向
,如独立搞定OpenStack上生产,随便搭个测试环境玩玩不算。Docker和编排体系方向
,如独立搞定Kubernetes上生产。精细化的监控告警设计和实施
,不仅仅是单一的搭建zabbix这类监控工具针对简单的资源、网络、应用可用性监控等。还应包括日志分析、精细指标监控等。如主导研发规范日志,使用ELK进行日志分析并针对详细业务场景出具精准监控和业务数据可视化报表。
再如使用influxdb/grafana或promethus等系统,收集硬件传感器/cpu/mem/io/eth/vm/docker等信息,然后构建精细化的资源使用报表等。
然后再整合日志分析/精细化资源监控打通从业务->应用->资源->硬件的一体化监控联动
自动配置管理方向
,简单点的使用puppet/saltstack等平台加一些定制脚本来管理,高级点的开发一个管理平台,并UI化。需要看实际工作中的应用场景、管理规模、自动程度、监控需求等来配合使用。每个人的精力是有限的,一个优秀的运维最需要的是一颗时刻保持学习的心和强大的自学能力。