项目引入
在一次移动电商系统发布更新上,由于我的不小心,错误地删除了生产服务器上的执行代码,导致整个移动电商系统页面都无法访问,最后花很长时间才恢复,这次事故给公司带来了不小的麻烦。
Philip组织整个运维团队进行故障分析、总结经验,提出了系统运维的两个观点:
第一:进一步减少人为直接干预修改生产环境系统引发的故障;
第二:提升效率,包括对集群进行运维时的日常备份、服务器状态监控和报警等,并告诉我们可以尝试运维自动化。
Philip的一句话犹如迷雾中灯塔,这让非常懊恼自责的我看到了下一步工作的重点和方向。运维工作需要时时保持警惕和清醒,“不小心”的背后意味着错误甚至巨大的损失,人力虽然充满了创造的可能,但是自动化往往代表了更加地稳定而有效率,如何在其中权衡,是我们都要思考的问题。
任务一: 自动化运维探索
1.知识总览
2.任务描述
近期一Web应用业务需要上线,预计短时间内会有几百台服务器要上线,部署几百台服务器,以运维部目前有限的人手根本不够,怎么办?
显然靠传统的运维不能快速有效的解决问题,解决方案就是我们这个项目中重点要讲的运维自动化。什么是运维自动化,一句话概括:采取自动化安装、配置及监控的方案,在最少的人工干预下,利用脚本与第三方工具,保证业务系统7*24小时高效稳定运行。
3.自动化运维概要
什么是自动化运维?
IT运维自动化是一组将静态的设备结构转化为根据IT服务需求动态弹性响应的策略,目的就是实现IT运维的质量,降低成本。
运维自动化对运维人员要求
1.事前预警 2.事中恢复 3.事后存档
运维知识体系
ITSM: ITSM是一个理念,是一套方法论,可以帮助企业对IT服务进行有效管理的高质量。
ITIL: ITIL是CCTA(英国国家计算机和电信局)于20世纪80年代中期开始开发的一套针对IT行业的服务
管理标准库。
两者之间的关系和区别: ITIL是标准,是ITSM实施过程中的抽象和经验总结,它是ITSM实施中的一套流程
和准则
DevOps(DevOps: Development和Operations的组合):DevOps看作开发(软件工程)、技术运营和质量保障(QA)三者的交集。
4.自动化运维工具简介
安装部 署相关 | Cobbler:能够快速建立网络安装环境,可以为各种Linux提供自动化安装任务。 Spacewalk:管理Red Hat衍生发行版的软件内容更新,同时提供预备和监控的功能。 |
配置管 理相关 | Chef:一个IT自动化平台,可让创建、部署、变更和管理基础设施运行时环境和应用。 |
Puppet:基于ruby开发,一种Lin`ux、Unix平台的集中配置管理系统。可管理配置文件、用户、计划任务、软件包、系统服务等。 | |
Ansible:基于Python开发,提供自动化运维框架。结合众多的模块工作,可实现批量系统配置、批量程序部署、批量运行命令等功能。 | |
SaltStack:基于Python开发,一个异构平台基础设置管理工具。具备配置管理、远程执行、监控功能。 | |
监控报警相关 | Nagios:一个Linux/Unix操作系统下的监视系统,可以监控系统、应用、服务以及各种进程的运行状况,并提供多种报警机制。 |
Zabbix:一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案。能监视各种网络参数,保证服务器系统的安全运营,并提供灵活的通知机制。 | |
Cacti:基于PHP开发,一款网络流量监测图形分析工具。要功能是用snmp服务获取数据,然后用rrdtool储存和更新数据,当用户需要查看数据的时候用rrdtool生成图表呈现给用户。 | |
Zenoss Core:一个智能监控软件,可依靠单一的WEB控制台来监控网络架构的状态和健康度。主要功能具有监控可用性,性能,配置和各种事件。 |
5.常用集群软硬件的介绍及选型
企业运维中常用的集群软硬件产品
在互联网企业中常用开源负载均衡软件有:LVS、Nginx、Haproxy,常用于高可用开源软件有:Keepalived、Heartbeat。
常用负载均衡硬件有:F5、Netscaler、Radware、A10等,工作模式相当于Haproxy的工作模式。
对于集群负载均衡产品如何选型?
第一阶段:利用Nginx或者Haproxy进行单点的负载均衡。
第二阶段:随着网络服务进一步扩大,这时使用LVS或者商用F5就是首要选择。
第三阶段:这时网络服务已经成为主流产品,开源的LVS,已经成为首选,这时LVS会成为主流。
如何选择开源集群软件产品?
中小型互联网企业网站,首选Nginx负载均衡,考虑负载均衡的高可用功能,建议首先Keepalived软件,
大型互联网企业,负载均衡产品可以选择LVS+ Keepalived在前端做四层转发,再后面是应用服务器。
任务二:构建cobbler网络自动安装环境
1.任务描述
服务器系统的部署是一件单一且重复性较高的事,那么该怎样避免“重复造轮子”?本节主要对Cobbler的介绍以及部署实践,通过配置Kickstart的无人值守安装方式,服务器通过PXE启动方式,实现通过网络就可以在服务器上自动部署系统的目的。
2.Cobbler简介
Cobbler概述
Cobbler由python语言开发,是对PXE和Kickstart以及DHCP的封装。融合很多特性,提供了CLI和Web的
管理形式,更加方便的实行网络安装。同时,Cobbler也提供了API接口,使用其它语言也很容易做扩展。
它不仅可以安装物理机,同时也支持KVM、XEN虚拟化、Guest OS的安装。
Cobbler 组成
发行版:表示一个操作系统。
配置文件:包含一个发行版、一个 kickstart 文件以及可能的存储库。
系统:表示要配给的机器。
存储库:保存一个 yum 或 rsync 存储库的镜像信息。
镜像:可替换一个包含不属于此类别的文件的发行版对象
3.Cobbler工作原理
任务三:Ansible自动化管理实践
1.任务描述
运维过程中,对服务器上业务程序的配置往往需要每台去连接,如果服务器数量不多尚且可以,但如果存在大量服务器这种连接方式显然耗费大量时间,那么如何解决这一问题?本小节讲解自动化配置管理工具Ansible的部署和使用,通过Ansible实现对服务器批量配置管理,从而提高运维效率。
2.Ansible简介
Ansible是一款基于Python开发的自动化运维的开源工具,主要是实现批量系统配置、批量程序部署、批量运行命令、批量执行任务等诸多功能。
Ansible基本架构
Ansible优点
1).轻量级,无需在客户端安装agent,更新时,只需在操作机上进行一次更新即可
2).批量任务执行可以写成脚本,而且不用分发到远程就可以执行
3).使用python编写,维护更简单,ruby语法过于复杂
4).支持sudo
3.Ansible部署及组件介绍
Ansible安装环境准备
Ansible控制主机系统可以是各种类UNIX操作系统,如Red Hat、Debian、CentOS、OS X、BSD等各种版本,Windows环境系统当前还不能作为控制主机。Ansible所在的控制主机需要的组件包括Python 2.6或以上、paramiko模块、PyYAML、Jinja2、httplib2。
安装Ansible
配置运行环境
1).配置Ansible环境。需要安装Python 2.4或以上版本。使用环境变量方式来配置,设置ansible.cfg配置参数。
2).使用公钥认证 。Ansible 1.2.1之后的版本都默认启用公钥认证,采用SSH方式连接。
3).配置Linux主机SSH无密码访问。通过证书签名达到SSH无密码访问。使用ssh-keygen与ssh-copy-id来实现快速证书的生成及公钥下发,其中ssh-keygen生产一对密钥,使用ssh-copy-id来下发生成的公钥。
4).测试Ansible
4.Ansible组件介绍
Ansible Inventory
Ansible Inventory实际上是包含静态Inventory和动态Inventory两部分。
静态Inventory指的是在文件/etc/ansible/hosts中定义主机和主机组。
1.定义主机和主机组
2.动态 Inventory
调用第三方脚本来动态的配置Inventory文件,Ansible启用动态Inventory 是通过调用外部脚本(任何脚本都可以,二进制文件也可以,只要运行结果返回的是JSON 串就可以)生成指定格式的JSON串 。Ansible可以对JSON格式的字符串对行解析,并最终将值转化为Ansible可用的Inventory文件格式。所以,所谓的动态Inventory文件脚本开发其实就是编写脚本根据具体环境将主机信息及关系(这些数据可以通过抓取数据库,调用外部API或者直接读取文件获得)以JSON格式来表示出来,并将其做为脚本输出结果传给Ansible。
任务四:Zabbix自动化监控实践
1.任务描述
监控是运维过程中不可或缺的一环,监控能使运维人员实时掌握服务器运行状况,第一时间发现并解决故障,为良性运维提供宝贵时间。本小节通过对Zabbix主流开源监控软件部署和管理讲解,实现对Linux主机上所部署应用进行监控预警。
2.Zabbix简介
Zabbix 是一个企业级的、开源的、分布式的监控套件。 Zabbix可以监控网络和服务的监控状况。
Zabbix特性
zabbix架构及组件
Zabbix Server:负责接收agent发送的报告信息的核心组件,所有配置,统计数据及操作数据均由其组织进行,C语言编写;
Database Storage:专用于存储所有配置信息以及由zabbix收集的数据;
Web GUI:zabbix的web接口,通常与Server运行在同一台主机上,通常被称为frontend,PHP语言开发;
Proxy可选组件,常用于分布监控环境中,代理Server收集部分被监控端的监控数据并统一发往Server端;
Agent:部署在被监控主机上,负责收集本地数据并发往Server端或Proxy端.
3.Zabbix部署实验
Zabbix服务端安装
Zabbix自动化监控案列
Zabbix监控Linux主机设置
1.在被监控的Linux主机,配置防火墙,开启10050、10051的TCP和UDP端口 2.关闭SELINUX
3.下载Zabbix客户端 4.安装Zabbix 5.添加zabbix服务对应的端口 6.修改Zabbix配置文件
7.添加开机启动脚本 8 .测试Zabbix客户端与Zabbix服务端通信是否正常
9.添加对Linux主机的监控