以前,运维人员都是作为企业运转幕后工作者,很难为外界所知,甚至企业内部管理者也未曾真正关注过。如今,随着互联网的迅猛发展,越来越多的企业管理者认识到 IT 运维服务对企业运营和发展的重要性,更高的要求将运维人员推向了前台。
以后,运维会更多的和业务绑定在一起,根据业务来做开发和调整。那么运维工程师需要具备哪些利器才能练就十八般武艺呢?
一. 熟悉服务器的基本知识
服务器领域,掌握一些 Linux 操作系统的命令是必不可少的,还要至少熟悉一个内置编辑器:VI 或 Nano,至少熟悉一个发行版,比如 Centos、Debian、Ubuntu,要熟悉很多 Linux 运维的命令,以便出了问题知道如何分析服务器的运行状态,对 LAMP 或 LNMP、FTP、DNS、SAMBA、EMAIL、NTP、DHCP 等 Linux 可以支持的基础协议要了解,熟悉这些协议的故障处理。
还需要掌握服务器一些虚拟化软件技术,以及 KVM 的工作原理,包括在 CPU、内存、存储、网络等各个部分的虚拟化,最为重要的是要掌握 KVM 的各种管理工具:OpenStack、CloudStack、OpenNebula、Zstack 等。
二. 精通一门除 Shell 外的编程语言 Python
Shell 语言是从事运维工作必须要会的,一些简单的系统管理 shell 脚本也是很馋常见的。另一个使用到的语言就是当下比较火的 Python,程序效率高、语法简洁清晰,可以实现自动化运维。
早在 DevOps 刚刚开始盛行的时候,Python 就是一个被寄予厚望的语言,因为大部分 DevOps 工具和实践都需要用到 Python。虽然也有人尝试用 Ruby 或者 NodeJS 构建 DevOps 工具,然而都没有 Python 所构建的工具流行。
随着 Python 在大数据、人工智能、区块链、微服务以及 Docker 中的发展,可以预见 Python 在日后的领域仍然会发挥重要的作用。
三. 掌握一种以上的监控工具
服务器运行情况实时反馈,完全依赖有一个好的监控工具,一些常见的监控、告警工具有 Nagios 、 ganglia、zabbix、onealert 等。发现问题可以第一时间及时有效的处理,避免更大的损失。对于初学者,Nagios 简单直观更容易上手,但是 zabbix 界面更美观,同时由于功能多上手也更难。对于企业的监控应用来说,两者都能实现大规模监控,都足以满足用户需求,没有绝对的孰好孰坏。Zabbix 是商业软件开源,Nagios 是免费软件插件组合多。
这里主要介绍 zabbix 的搭建环境:
要想搭建一个 Zabbix 的工作环境,需要从服务器入手。与服务器通信,管理员需要使用一个 Zabbix 前端界面,与 Zabbix 服务器和数据库进行通信。三个关键 (界面、服务器和数据库) 可以安装在同一台服务器上,但是如果你拥有一个更大更复杂的环境,将它们安装在不同的主机上也是一个选项。Zabbix 服务器能够直接监控到同一网络中的设备,如果其他网络的设备也需要被监控,那还需要一台 Zabbix 代理服务器。
四. 了解数据库运维的技能
互联网企业的数据库以 MySQL 为主 ; 部分金融、证券、银行、政企的数据库会使用 Oracle; 传统企业的老系统会涉及 SQL Server。
StackOverflow 对数据库受欢迎程度进行了调查,下面是对不同级别开发者进行调查后的统计结果:
最受欢迎的是 MySQL,接受调查的开发者中近一半的都使用 MySQL(44.3%),NoSQL 可能不在大多数程序员的需求范围内。
前两天,SQL Server 2017 正式发布,已由原来固守的支持 Windows 的策略,大步地转向了支持 Linux ,Docker 容器和 Windows 的策略。
五. 选择一款适合的框架
运维更多的就是和业务绑定在一起,根据业务来做开发和调整。根据公司 业务需求,选好框架,比如 Nagios, Puppet,SaltStack,Docker 等,这方面的基础搭建要求非常高,需要考虑如何做基础构建,才能达到高度模板化、自动化等。
Docker 可以实现 Immutable Infrastructure, 可以更好的保证应用交付的一致性,尤其是对大规模微服务应用。但是对于一些传统软件的运维,Puppet 等工具也有自己的优势。可以针对情况选择,或者将两者结合起来。
六. 注重运维过程的安全问题
保证帐号 / 私钥的安全
- 最好使用加密工具存储。比如 truecrypt,1password
- 基于本地存储。切勿用网盘,也不建议用 lastpass 等
- ssh 私钥添加密码
本着负责的态度和原则
- 遇到报警,第一时间处理,而不要等着他人去处理。如果无法处理,应该第一时间让同事协助帮忙,而不要禁止报警,让问题掩盖。
- 如果代码有问题,导致系统开销很大,比如负载,io 等。应该第一时间和开发部门确认,要求优化代码。
现如今,要求运维人员会运维、懂开发、精通数据库、熟悉网络,堪称全才啊。未来 3 到 5 年,linux 运维 +linux 架构 +python 开发这三项技术是运维人员必备的技术。