linux运维以及运维开发

Linux运行是什么
什么是Linux运维
运维是指大型组织已经建立好的网络软硬件的维护,就是要保证业务的上线与运作的正常
在他运转的过程中,对他进行维护,它集合了网络、系统、数据库、开发、安全、监控、应用架构、存储于一身的技术
运维分类
运维开发:是给应用运维开发运维工具的运维平台的
应用运维:是给业务上线、维护和做故障排除的,用开发运维开发出来的工具给业务上线、维护、做故障排查
系统运维:是给应用运维提供业务上的基础设施,比如:系统、网络、监控、硬件等等
数据库运维:负责数据存储方案设计、数据库表设计、索引设计和SQL优化
安全运维:进行常规的安全扫描、渗透测试、进行安全工具和系统研发以及安全事件应急处理
运维的职责
保证服务的稳定运行;
考虑服务的可扩展性;
从系统的稳定性和可运维性的角度,提出开发需求;
定位系统的问题,甚至可以直接修正bug;
对突然出现的问题做到快速响应和处理;
工作中运维应用的场景是什么样的?
1、普及一下Devops交付环常识
我们把开发交付划分为:计划→编码→构建→测试→版本→部署→运维→监控的一个闭环
DevOps的目标是通过建立并不断完善持续交付的流水线
运维的职责覆盖了产品从设计到发布、运行维护、变更升级至下线的生命周期

2、产品发布前
产品的业务熟悉;
产品架构设计的合理性评估,包括是否存在单点,是否可容错,是否有强耦合等,
资源评估,包括所需的服务器资源、网络资源以及资源的分布等,同时把相关产品对资源预算申请的合理性,控制服务成本;
资源就位,将申请的服务器及基础环境/域名准备就位。
3、产品发布过程中
产品发布阶段运维工程师负责发布的具体工作,将具体的软件和系统/硬件资源整合形成产品并对外提供服务。
对于已在线服务的更新也属于发布范畴,这个时候的产品发布一般要保障在线发布,在不中断对外服务的情况下完成产品的升级。
对于大型复杂的变更也存在中止服务部署完成后再重新提供服务的情况,但这种情况需要运维工程师通过尽可能的技术手段来避免。
4、产品运行维护
监控:
对服务运行的状态进行实时的监控,随时发现服务的运行异常和资源消耗情况;
输出重要的日常服务运行报表以评估服务/业务整体运行状况,发现服务隐患;
故障处理:
对服务出现的任何异常进行及时处理,尽可能避免问题的扩大化甚至中止服务。
这之前运维工程师需要针对各类服务异常,如机房/网络故障、程序bug等问题制定处理的预案,问题出现时可以自动或手动执行预案达到止损的目的。
容量管理:
包括服务规模扩张后的资源评估、扩容、机房迁移、流量调度等规划和具体实施。
5、产品性能/成本优化
产品对外提供服务最重要的一点是用户体验,用户体验中非常重要的是产品的可用性和响应速度。
而如何用最合理的资源(如机器、带宽等)支持产品提供高可用和高速度的用户体验,这也是运维工程师的重要职责。
6、产品下线
发展良好的互联网产品将始终在线对外提供服务,但互联网产品快速迭代,也存在相当多孵化的产品最后被淘汰的情况

这些产品都需要做下线处理,这个过程运维工程师主要做好资源回收的工作,将机器/网络等资源回收后纳入资源池*其它服务使用
运维工程师使用的运维平台和工具
运维工程师使用的运维平台和工具
Web服务器:apache、tomcat、nginx
负载均衡:keepalive、lvs、haproxy、nginx
监控:prometheus、zabbix、openfalcon、nagios、cacti
自动部署:ansible、saltstack、sshpt
配置管理:puppet
备份工具:rsync、wget
分布式数据库:hbase、redis、MongoDB
容器:docker、k8s、docker-compose、swarm
安全:kerberos、selinux、acl、iptables
虚拟化:openstack、xen、kvm
问题追查:netstat、top、tcpdump、last
运维工程师要掌握的技能
扎实的计算机基础知识,包括计算机系统架构,操作系统,网络技术等;
通用应用方面需要了解操作系统、网络、安全,存储,CDN,DB等,知道其相关原理;
编程能力,小到运维工具的开发大到大型运维系统/平台的开发都需要有良好的编程能力;
数据分析能力:能够整理、分析系统运行的各项数据,从中发现问题及找到解决方向;
丰富的系统知识,包括系统工具、典型系统架构、常见的平台选型等;