运维自动化方案
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了运维自动化方案相关的知识,希望对你有一定的参考价值。
运维自动化简写
自动化运维主要包括以下几个方面:
- 系统安装
- 系统优化
- 系统监控
- 日志监控和收集
- 应用自动化部署
- 代码自动化部署
- 自动化测试
- 自动化更新
- 自动化扩容
-
配置文件管理
- 系统自动化安装和优化
系统的自动化安装和优化,可以使用到自动化工具cobbler结合kickstart完成。
优点: - 可以完美支持linux和VMware的esxi系统
- 配置简单
- 可配置性强
- 可以基于mac地址的系统安装,全程无需人工干预
- 可以配置脚本,在安装系统完成之后可以同于yum源和安装上必须要的客户端软件,如salt-minion,Zabbix-agent 等,全程实现自动化
- 系统优化配置文件可以分类管理,基于web,基于数据库,基于代理的配置文件可以优化,都可以在配置在系统初始化的时候完成
- 系统监控
系统监控工具我们采用开源的zabbix完成,现在收费产品也很多如基调,监控宝等。
zabbix优点: - 安装配置简单
- 可以实现自动化安装部署
- 可以实现自动化添加和监控客户端
- 形成的图标准确直观
- 可以定制监控项
- 可以基于api调用zabbix的监控项,扩展性强
-
日志监控和收集
日志监控收集和监控工具使用elk(elasticsearch + logstash+ kibana)完成
基本架构为:
Logstash 收集,过滤和转存数据
Elasticsearch: 存储和分析数据
Kibana:展示数据
由于logstash是java完成,需要依赖的java的环境,对系统的资源的消耗较大,且在大规模的日志收集的过程中logstash的读取和写入会是一个瓶颈,所以结构演化为:
Filebeat+redis+logstash+elasticsearch+kibana
Filebeat: 负责收集日志并存储到redis ,非常轻量,基本不消耗资源
Redis: 消息队列
Logstash: 负责从redis拉去日志,并过滤日志,解除客户端过大的瓶颈
Elasticsearch: 存储数据和分析数据
Kibana: 展示数据 -
应用自动化部署和代码自动化部署及更新
应用自动化部署和代码自动化部署我们都可使用工具saltstack完成。
Saltstack是基于python编写的一个自动化工具,配置文件基于yaml语法编写。所以代码非常清晰易读,使用saltstack可以完成应用的自动化部署,配置文件的统一管理和标准化。
代码的自动化部署更新流程见下图(引用赵班长的图): - 获取代码: 可以从代码管理仓库获取,如svn,git等
- 编译: 这一步是可选的,如果是java代码可以使用像jenkins之类的工具自动构建和编译,像php之类的代码不需要编译,可以跳过编译这一步
- 匹配配置文件环境: 不同应用的配置文件不同,拉去相应的环境的代码,需要相应环境的配置文件做支持,如user登录,需要user.conf,用户支付的pay的配置文件pay.conf,配置文件必须单独管理,尤其是在重要的配置文件,可以单独建立一个配置文件仓库,使用svn,git都可以完成
- 打包:拉去代码之后,为了便于分发,需要对代码进行打包处理,tar,zip工具都可以完成
- 将代码包分达到目标主机:分发代码工具有很多,rsync,saltstack,scp等都可以完成
- 部署节点剔除集群: 代码copy完成之后,需要将集群节点提出集群,以免造成数据错乱,saltstack+etcd可以完成
- 代码部署:解压代码和创建软连接,创建软连接的目的是秒级回滚
- 比对配置文件:配置文件至关重要,不要将测试的配置文件同步到生产,这一步必须要匹配配置文件的环境和版本
- 重启web: 代码更新部署之后,需要重启web,推荐平滑重启,如nginx: kill -HUP nginx
- 自动化测试: 基于业务完成,现在很多自动化工具,python脚本,selenium等都是基于业务完成
-
加入集群:在测试完成成功之后将节点加入集群,继续下一节点,如果失败立即回滚到上一版本
- 自动化扩容
自动化扩容,在系统资源出现告警危机的时候,我们需要为应用实现自动化扩容。
自动化扩容跟业务紧密相关,可以使用当下时代的企业私有云完成如kvm,openstack等。Saltstack的salt-cloud提供了基于openstack的api,可以全自动化完成扩容。然后你也可以基于kvm完成全自动化的扩容,基于脚本都可以完成。
以上是关于运维自动化方案的主要内容,如果未能解决你的问题,请参考以下文章