运维自动化简写

自动化运维主要包括以下几个方面:

  1. 系统安装
  2. 系统优化
  3. 系统监控
  4. 日志监控和收集
  5. 应用自动化部署
  6. 代码自动化部署
  7. 自动化测试
  8. 自动化更新
  9. 自动化扩容
  10. 配置文件管理

  11. 系统自动化安装和优化
    系统的自动化安装和优化,可以使用到自动化工具cobbler结合kickstart完成。
    优点:
  12. 可以完美支持linux和VMware的esxi系统
  13. 配置简单
  14. 可配置性强
  15. 可以基于mac地址的系统安装,全程无需人工干预
  16. 可以配置脚本,在安装系统完成之后可以同于yum源和安装上必须要的客户端软件,如salt-minion,Zabbix-agent 等,全程实现自动化
  17. 系统优化配置文件可以分类管理,基于web,基于数据库,基于代理的配置文件可以优化,都可以在配置在系统初始化的时候完成
  18. 系统监控
    系统监控工具我们采用开源的zabbix完成,现在收费产品也很多如基调,监控宝等。
    zabbix优点:
  19. 安装配置简单
  20. 可以实现自动化安装部署
  21. 可以实现自动化添加和监控客户端
  22. 形成的图标准确直观
  23. 可以定制监控项
  24. 可以基于api调用zabbix的监控项,扩展性强
  25. 日志监控和收集
    日志监控收集和监控工具使用elk(elasticsearch + logstash+ kibana)完成
    基本架构为:
    Logstash 收集,过滤和转存数据
    Elasticsearch: 存储和分析数据
    Kibana:展示数据
    由于logstash是java完成,需要依赖的java的环境,对系统的资源的消耗较大,且在大规模的日志收集的过程中logstash的读取和写入会是一个瓶颈,所以结构演化为:
    Filebeat+redis+logstash+elasticsearch+kibana
    Filebeat: 负责收集日志并存储到redis ,非常轻量,基本不消耗资源
    Redis: 消息队列
    Logstash: 负责从redis拉去日志,并过滤日志,解除客户端过大的瓶颈
    Elasticsearch: 存储数据和分析数据
    Kibana: 展示数据

  26. 应用自动化部署和代码自动化部署及更新
    应用自动化部署和代码自动化部署我们都可使用工具saltstack完成。
    Saltstack是基于python编写的一个自动化工具,配置文件基于yaml语法编写。所以代码非常清晰易读,使用saltstack可以完成应用的自动化部署,配置文件的统一管理和标准化。
    代码的自动化部署更新流程见下图(引用赵班长的图):
    运维自动化方案_第1张图片

  27. 获取代码: 可以从代码管理仓库获取,如svn,git等
  28. 编译: 这一步是可选的,如果是java代码可以使用像jenkins之类的工具自动构建和编译,像php之类的代码不需要编译,可以跳过编译这一步
  29. 匹配配置文件环境: 不同应用的配置文件不同,拉去相应的环境的代码,需要相应环境的配置文件做支持,如user登录,需要user.conf,用户支付的pay的配置文件pay.conf,配置文件必须单独管理,尤其是在重要的配置文件,可以单独建立一个配置文件仓库,使用svn,git都可以完成
  30. 打包:拉去代码之后,为了便于分发,需要对代码进行打包处理,tar,zip工具都可以完成
  31. 将代码包分达到目标主机:分发代码工具有很多,rsync,saltstack,scp等都可以完成
  32. 部署节点剔除集群: 代码copy完成之后,需要将集群节点提出集群,以免造成数据错乱,saltstack+etcd可以完成
  33. 代码部署:解压代码和创建软连接,创建软连接的目的是秒级回滚
  34. 比对配置文件:配置文件至关重要,不要将测试的配置文件同步到生产,这一步必须要匹配配置文件的环境和版本
  35. 重启web: 代码更新部署之后,需要重启web,推荐平滑重启,如nginx: kill -HUP nginx
  36. 自动化测试: 基于业务完成,现在很多自动化工具,python脚本,selenium等都是基于业务完成
  37. 加入集群:在测试完成成功之后将节点加入集群,继续下一节点,如果失败立即回滚到上一版本

  38. 自动化扩容
    自动化扩容,在系统资源出现告警危机的时候,我们需要为应用实现自动化扩容。
    自动化扩容跟业务紧密相关,可以使用当下时代的企业私有云完成如kvm,openstack等。Saltstack的salt-cloud提供了基于openstack的api,可以全自动化完成扩容。然后你也可以基于kvm完成全自动化的扩容,基于脚本都可以完成。