2022年自动化运维管理PDF .pdf
服务器自动化运维管理方案第 1 页共 20 页_ 服务器自动化运维管理方案_ 名师资料总结-精品资料欢迎下载-名师精心整理-第 1 页,共 20 页 -服务器自动化运维管理方案第 2 页共 20 页目录第 1 章自动化运维概述.31.1.背景.31.2.自动化运维体系介绍.31.3.开源自动化运维工具简介.41.4.常用自动化运维工具对比选型.5第 2 章Puppet 使用说明 .72.1.Puppet 简介 .72.2.Puppet 部署说明.82.2.1.Puppet 服务器端部署.82.2.2.Puppet 客户端安装.82.2.3.证书分发.92.3.Puppet 使用说明.92.3.1.Puppet Server架构介绍 .92.3.2.Puppet 脚本编写规范.92.3.3.Puppet 资源.102.3.4.资源使用实例.11第 3 章Func 安装使用.153.1.Func 介绍.153.2.Func 安装与配置.153.3.Func 使用说明.173.3.1.Func 服务器群组管理.173.3.2.Func 模块说明.183.4.常用模块使用说明.18第 4 章附录 .204.1.参录资料.204.2.招贤纳士.20名师资料总结-精品资料欢迎下载-名师精心整理-第 2 页,共 20 页 -服务器自动化运维管理方案第 3 页共 20 页第1章 自动化运维概述1.1.背景公司的 XXXX 项目于近期上线,预计会短时间内部署几百组服务器,以运维部目前有限的人手,如果不采取自动化安装、配置及监控方案,工作量可想而知,甚至会出现服务器爆满却来不及上新系统的情况。因此运维部的工程师都有必要熟练掌握自动化运维系统的使用。1.2.自动化运维体系介绍一个完善的自动化运维体系包括系统预备、配置管理以及监控报警3 个功能模块:1.系统预备i.自动化安装操作系统及常用软件包2.配置管理i.自动化部署业务系统软件包并完成配置ii.远程管理服务器(开关服务等)iii.变更回滚3.监控报警i.服务器可用性、性能、安全监控ii.向管理员发送报警信息根据提供的功能不同,自动化运维工具也可以分为以下3 类,如下表所示:预备类工具配置管理类监控报警类Kickstart Chef Nagios Cobbler ControlTier OpenNMS OpenQRM Func Zabbix Spacewalk Puppet Cacti 1.预备类工具名师资料总结-精品资料欢迎下载-名师精心整理-第 3 页,共 20 页 -服务器自动化运维管理方案第 4 页共 20 页预备类工具可以使Linux 操作系统及软件安装自动化。它们借助服务器上的软件包系统比如rpm 或者 apt 来安装软件包,甚至会做一些粗略的配置工作。2.配置管理类工具配置管理类工具可以自动化部署常用的应用程序,设置参数或者开启一个新服务器上的服务,也可以用来把对操作系统及业务支撑系统的变更管理回滚到上一版本。3.监控报警类工具监控工具用来收集服务器数据,从而生成可用性、性能和其它系统状态的报告。可用性监控可以第一时间向运维人员发送业务不可用的警告,以便第一时间处理,减少业务中断时间。红帽子资助的Genome 项目是将预备类、配置管理类集成到一起的框架,如下图所示:1.3.开源自动化运维工具简介预备类工具配置管理类监控类Kickstart Chef Nagios 针对红帽 Linux/Fedora等发行版的自动化安装方式,简单的讲就是让系统在安装过程中从一个ks.cfg 配置文件中自动获取所有需要配置的参数。源于 Anaconda项目。技术支持:红帽/Fedora 社区一个系统集成框架,可以用Ruby等代码完成服务器的管理配置并编写自己的库。技术支持:OpsCode 起始于:2009 年 1 月官方网站:http:/ Enterprises【发起人】Ethen Galstad【起始于】1999 年【官方网站】http:/www.nagios.org/名师资料总结-精品资料欢迎下载-名师精心整理-第 4 页,共 20 页 -服务器自动化运维管理方案第 5 页共 20 页Cobbler Cfengine OpenNMS 为了实现快速网络安装环境的Linux 安装服务器,可以为数量众多的 Linux 服务自动化执行任务。【发起人】Michael DeHaan【技术支持】红帽/Fedora 社区【起始于】2007 年之前【官方网站】https:/fedorahosted.org/cobbler/cfengine是一个用 C 语言开发的功能强大的自动化系统管理工具.引用其官网的说法cfengine 是一种 UNIX 管理工具,其目的是使简单的管理的任务自动化,使困难的任务变得较容易。【起始于】1993 年【官网网站】http:/ group【起始于】2005 年之前【官方网站】http:/www.opennms.org/OpenQRM Func Zabbix【描述】针对数据中心管理的开源平台,针对设备的部署、监控等多个方面通过可插拔式架构实现自动化的目的,尤其面向云计算/基于虚拟化的业务。【发起人】Matt Rechenburg【起始于】2005 年之前【官方网站】http:/ Unified Network Controller,Fedora 统一网络控制器,用于自化的远程服务器管理。【发起人】Michael DeHaan 等【技术支持】红帽/Fedora 社区【官方网站】https:/fedorahosted.org/func/【描述】用于监控网络上的服务器/服务以及其他网络设备状态的网络管理系统,后台基于 C,前台由PHP 编写,可与多种数据库搭配使用。提供各种实时报警机制。【技术支持】Zabbix 公司【发起人】Alexei Vladishev【起始于】1998 年【官方网站】http:/ Puppet Cacti【描述】针对红帽/Fedora 等发行版的软件更新管理软件,同时也提供预备和监控的功能。这个项目衍生了红帽 Network Satellite产品。【技术支持】红帽【起始于】2001(Red Hat Network)/2008【官方网站】http:/ Labs【官方网站】http:/ 是一套基于PHP,MySQL,SNMP及 RRDTool开发的网络流量监测图形分析工具。它通过 snmpget 来获取数据,使用RRDtool 绘画图形,它提供了非常强大的数据和用户管理功能,同时也能自己增加模板,功能非常强大完善。起始于 2004 年【技术支持】Cacti Group 1.4.常用自动化运维工具对比选型预备类工具Kickstart Cobbler 供 Anaconda 读取的无人值守安装配置脚本,自动化安装配置过程繁琐一个集成工具,集成了PXE、DHCP、DNS 和Kickstart 服务管理和 yum 仓库管理,简化了运维工程师工作量名师资料总结-精品资料欢迎下载-名师精心整理-第 5 页,共 20 页 -服务器自动化运维管理方案第 6 页共 20 页集中化配置管理类Chef puppet 1.需要用户熟悉 ruby 语言,入门门槛高,管理模块开发周期长2.资源脚本从前向后执行,维护调试繁琐3.chef 在配置中心服务器端需要依赖软件比较多,需要 couchdb、RabbitMQ、Solr、java和 erlang,配置过程复杂繁琐4.chef 的配置管理文件放在couchdb 和 solr索引等二进制文件中,通过远程命令工具knife来操作这些配置,维护不方便5.chef 的用户群少,出了问题不方便排查1.Puppet 自有的配置语言较为高级,入门简单,管理模块开发周期短2.puppet 资源之间有显式的依赖关系,与这些资源在配置文件的位置或前后没有关系3.puppet 安装简单,需要的支持软件也少,配置过程十分简单4.puppe 的配置管理文件为puppet 语言描述的文本文件,易于发布、备份和扩展5.puppet 的用户很多,Google、Redhat等大公司都在使用,可以借鉴成熟的经验Cfengine Puppet+Func 1.老牌的配置管理工具,功能强大,但语法晦涩,学习、维护成本高1.新兴的配置管理工具,语法简单,易于学习、维护,但远程执行命令Exec资源只能返回成功与否,执行过程无法跟踪查看,需要和简单易用的Linux集群管理工具Func 配合使用监控类工具监控类工具中有Zabbix、Nagois 和 cacti等工具,zabbix 和 Nagois+cacti组合都是很优秀的工具,鉴于 zabbix 参考资料较少,选择了常用的Nagois+cacti组合我们的自动化配置管理系统采用了开源的Puppet 与 Func 的组合,Puppet用来对服务器及业务系统进行统一配置,Func 用来集中化管理多台服务器。名师资料总结-精品资料欢迎下载-名师精心整理-第 6 页,共 20 页 -服务器自动化运维管理方案第 7 页共 20 页第2章 Puppet使用说明2.1.Puppet简介Puppet 是 Puppet Labs基于 ruby 语言开发的自动化系统配置工具,可以以C/S 模式或独立模式运行,支持对所有UNIX 及类 UNIX 系统的配置管理,最新版本也开始支持对Windows操作系统有限的一些管理。Puppet 适用于服务器管理的整个过程,比如初始安装、配置、更新以及系统下线。典型的 Puppet 架构为星型结构,Clients 默认每 30 分钟请求一次Server 端,确认是否有新的变更操作指令,puppet支持以节点的方式管理若干的服务器群组,常见的架构图如下:名师资料总结-精品资料欢迎下载-名师精心整理-第 7 页,共 20 页 -服务器自动化运维管理方案第 8 页共 20 页2.2.Puppet部署说明2.2.1.Puppet 服务器端部署Puppet 服务器端可以安装于常见的Linux 发行版本中,我们选了陕西西安机房的一台服务器作为了Puppet 服务器端,操作系统为Centos 5.4 32位。主机名设置为jvpuppet,并在DNS中创建一条指向该IP的A 记录 Puppet 的安装方式支持源码安装、yum 和 ruby 的 gem 包安装,Centos 可以直接使用yum 来安装,Centos的默认源中没有puppet,需要先安装EPEL包。Tips:什么是EPEL EPEL(http:/fedoraproject.org/wiki/EPEL)是由Fedora 社区打造,为RHEL 及衍生发行版如CentOS、Scientific Linux 等提供高质量软件包的项目。安装过程如下:1.安装 EPEL:rpm Uvh http:/ puppet 服务端yum y install puppet-server 3.启动 puppet Server Service puppetmaster start2.2.2.Puppet 客户端安装Puppet服务器端对客户端的管理是基于主机名的,所以在安装之前需要为客户端设置唯一的主机名,主机名命令最好能体现出主机的机房、业务系统名称及 IP 信息。客户端安装的过程如下:1.安装 EPEL 包:rpm-Uvh http:/ puppet 客户端:名师资料总结-精品资料欢迎下载-名师精心整理-第 8 页,共 20 页 -服务器自动化运维管理方案第 9 页共 20 页yum-y install puppet2.2.3.证书分发Puppet 客户端与服务器端是通过SSL 隧道通信的,客户端安装完成后,需要向服务器端申请证书:1.首次连接服务器端会发起证书申请,命令如下:puppetd-server test2.服务器端可以用puppetca list命令查看到申请证书的客户端主机名3.puppetca s命令可以为特定的主机颁发证书,puppetca s and a 表示给所有的主机颁发证书2.3.Puppet使用说明默认安装好的Puppet 没有任何配置管理功能,需要运维工程师自己开发配置管理功能模块。2.3.1.Puppet Server架构介绍Puppet Server默认安装完毕后,位于/etc/puppet目录下,目录结构及简单的描述如下表所示:jvuserpuppet puppet$pwd/etc/puppet jvuserpuppet puppet$ls auth.conf client 访问 puppet server的 ACL 配置文件fileserver.conf puppet server作为文件服务器的ACL 配置文件manifests Puppet 脚本主文件目录,至少需要包含site.pp 文件modules Puppet 模块目录,存放Puppet 脚本的功能模块namespaceauth.conf 命名空间ACL 配置文件puppet.conf Puppet 服务器端配置文件2.3.2.Puppet 脚本编写规范Manifests为 puppet脚本主目录,site.pp为程序入口脚本文件,Modules目录为 puppet 管理脚本模块所在目录,每个模块也有各自的主目录及入口函数文件,如下图所示:名师资料总结-精品资料欢迎下载-名师精心整理-第 9 页,共 20 页 -服务器自动化运维管理方案第 10 页共 20 页2.3.3.Puppet 资源Puppet 提供了 48 种资源类型,用户也可以开发一些其他资源,下表列出了常用的几种资源,用这些资源就可以完成大多数系统的配置管理了,如下表所示:资源类型描述文件文件管理资源,用于管理系统本地文件组管理用户组用户管理系统用户包管理软件包的安装、升级和删除Yum库yum 库配置文件(用file 资源也可以实现同样的功能)服务管理系统服务(启用、禁用和重启等)Crontab 任务Crontab 定时任务管理文件系统挂载管理已挂载的文件系统(挂载、卸载,维护挂载表)Zfs 管理 ZFS,在 zfs 实例上创建,删除并并且设置属性Hosts 主机管理管理系统主机名(/etc/hosts)Exec 资源执行外部命令名师资料总结-精品资料欢迎下载-名师精心整理-第 10 页,共 20 页 -服务器自动化运维管理方案第 11 页共 20 页2.3.4.资源使用实例1.File 资源以下的例子为新建一个/tmp/puppettest文件,文件内容为:puppet test only,文件权限为666:class test file /tmp/puppettest:content=Puppet test only,mode=666 2.User 和 group Ensure 参数可以创建或者删除组,设置 absent 就删除该组,设置present 就创建该组,以下的例子为删除不必要的用户和组:$grouplist=lp,uucp,games,news,floppy,audio user$userlist:ensure=absent,group$grouplist:ensure=absent,3.Package资源为新装的系统安装ntp 和 screen,删除 pppoe 和 pppoe-conf包名师资料总结-精品资料欢迎下载-名师精心整理-第 11 页,共 20 页 -服务器自动化运维管理方案第 12 页共 20 页package ntp,screen:ensure=installed;pppoe,pppoe-conf:ensure=absent;4.Service 资源以下实例为启动ssh 服务,停止nfs 服务service ssh:ensure=running;nfs:ensure=stopped;5.crontab 资源以下实例摘自公司服务器初始化的一个片断,主要功能为在crontab 添加时间自动同步任务,同时使用了package、service 和 crontab 三种资源:class jooov:cron package crontabs:ensure=installed,service crond:ensure=running,enable=true,require=Packagecrontabs;名师资料总结-精品资料欢迎下载-名师精心整理-第 12 页,共 20 页 -服务器自动化运维管理方案第 13 页共 20 页 cron ntpdate:command=/usr/sbin/ntpdate ,user=root,hour=0,minute=0,require=Packagecrontabs;6.exec 资源以下代码片断摘自公司服务器初始化配置脚本,主要作用是自动配置初始化iptables 安全策略:file /etc/rc.d/foruser.sh:ensure=present,mode=755,owner=root,group=root,content=template(iptables/firewall.erb);file /etc/rc.d/rc.local:ensure=present,mode=754,owner=root,group=root,名师资料总结-精品资料欢迎下载-名师精心整理-第 13 页,共 20 页 -服务器自动化运维管理方案第 14 页共 20 页content=touch/var/lock/subsys/localn/etc/rc.d/firewall.shn;exec /etc/rc.d/jv_firewall.sh:cwd=/etc/rc.d/,path=/usr/bin:/usr/sbin:/bin 其他资源的用法请参考puppet 官方文档,URL:http:/ 名师资料总结-精品资料欢迎下载-名师精心整理-第 14 页,共 20 页 -服务器自动化运维管理方案第 15 页共 20 页第3章 Func 安装使用3.1.Func 介绍Func 全称为 Fedora Unified Network Controller(Fedora 统一网络控制器),是由 Fedara 社区维护的一款用于服务器自动化远程管理的工具。有如下特性:Func 可以在主控机上一次管理任意多台服务器,或任意多个服务器组;Func 基于Certmaster(https:/fedorahosted.org/certmaster/)建立了Master Slaves 主从SSL 证书管控体系,可以将证书自动分发到所有受控服务器;Func 命令行可以直接发送远程命令或者远程获取数据;Func 开 发 者 已 经 完 成 了 大 多 数 常 用 任 务 模 块 的 开 发:CommandModule、FileTrackerModule、JBossModule、IPtablesModule、HardwareModule、MountModule、NagiosCheck、NetappModule、NetworkTest、ProcessModule、ServiceModule、SysctlModule、RebootModule、RpmModule、VirtModule、YumModule 等 等,这 些 模 块 的 作 用 都 可 以 顾 名 思 义,或 者 参 考:https:/fedorahosted.org/func/wiki/ModulesList;任何人都可以通过Func 提供的Python API 轻松编写自己的模块,以实现具体功能扩展。而且任何Func 命令行能完成的工作,都能通过API 编程实现;Func 通讯基于XMLRPC 和 SSL 标准协议。3.2.Func 安装与配置Func 的 Master 端和 Slave 端安装方式相同,在安装过EPEL 的 Centos 服务器中,可使用yum y install func直接完成安装。Master的控制端与被控制端是由配置文件指定的,Master 配置,可以保持默认,如需打开证书自动分发功能,将autosign 设为 yes 即可。rootserver#cat/etc/certmaster/certmaster.conf#configuration for certmasterd and certmaster-ca 名师资料总结-精品资料欢迎下载-名师精心整理-第 15 页,共 20 页 -服务器自动化运维管理方案第 16 页共 20 页main autosign=no listen_addr=listen_port=51235 cadir=/etc/pki/certmaster/ca cert_dir=/etc/pki/certmaster certroot=/var/lib/certmaster/certmaster/certs csrroot=/var/lib/certmaster/certmaster/csrs cert_extension=cert sync_certs=False 服务端配置完成后需要重启certmaster服务被控制端需要手动配置/etc/certmaster/minion.conf文件中的certmaster字段,用于指定控制端服务器的地址,如下所示:rootclient1#cat/etc/certmaster/minion.conf#configuration for minions main certmaster=#设置为 master的 IP 或域名certmaster_port=51235 log_level=DEBUG cert_dir=/etc/pki/certmaster 被控制端配置完毕后,使用service funcd start 命令启动funcd 服务后,就会自动向控制端提交证书申请请求。在 控 制 机 中 使 用certmaster-ca l查 看 到 被 控 端 的 证 书 请 求,用certmaster-ca s 主机名可以为相应的主机颁发证书,证书分发后,需要将client 端的主机名加到server 端的 hosts 文件中,如下表所示:rootjvpuppet certmaster#certmaster-ca-l No certificates to sign 名师资料总结-精品资料欢迎下载-名师精心整理-第 16 页,共 20 页 -服务器自动化运维管理方案第 17 页共 20 页rootjvpuppet certmaster#certmaster-ca-l sxxb4-33 rootjvpuppet certmaster#certmaster-ca-s sxxb4-33/var/lib/certmaster/certmaster/csrs/sxxb4-33.csr signed-cert located at/var/lib/certmaster/certmaster/certs/sxxb4-33.cert 3.3.Func 使用说明3.3.1.Func 服务器群组管理Func可以远程管理任意台或任意组服务器,对一台发送指令时,可直接指定其主机台,对所有服务器发送指令使用时,用*表示所有服务器,如下表所示:1.确认主机web1 是否存在rootjvpuppet bin#func web1 ping 2.让所有主机执行ifconfig命令Func“*”call command run“ifconfig”日常的运维工作更多的对特定的服务器组进行操作,Func 提供了 GroupsApi来对服务器进行分组管理,如下表所示:添加一个新组newgr:rootfedorabig func#func*group-ag newgr rootfedorabig func#列出所有组及其服务器成员rootfedorabig func#func*group-la Group:group5 Host:1 Host:3 Host:2 Host:5 Host:4 Group:newgr 但用 groupapi管理服务器组时比较繁琐,容易出错,Func 也支持用配置文名师资料总结-精品资料欢迎下载-名师精心整理-第 17 页,共 20 页 -服务器自动化运维管理方案第 18 页共 20 页件/etc/func/groups管理服务器群组及其成员,如下所示:webservers host=; mailservers host=; 3.3.2.Func 模块说明Func的开发者已经提供了常用的功能模块,用户也可以自己开发相应的功能模块,Func 官网目前提供的模块列表如下所示:3.4.常用模块使用说明1.CPU Module 查看 CPU 状态信息,使用方法func target.example.org call cpu usage func target.example.org call cpu jiffies 2.CommandModule 远程执行命令,使用参数:func target.example.org call command exists/bin/foo func target.example.org call command run/bin/foo arg1 arg2 arg3 3.ServiceModule 名师资料总结-精品资料欢迎下载-名师精心整理-第 18 页,共 20 页 -服务器自动化运维管理方案第 19 页共 20 页服务管理,可以启动、停止服务和查看服务的状态,使用参数:func target.example.org call service start httpd func target.example.org call service stop httpd func target.example.org call service status httpd 4.ProcessModule 进程管理,可以查看、杀掉进程,也可以查看每个进程的内存使用情况:func target.example.org call process info aux func target.example.org call process mem func*call process pkill thunderbird-9 func*call process kill firefox-bin SIGHUP 以上几个模块为日常运维过程中最常用到的,其他模块的功能及使用方法可以参考:https:/fedorahosted.org/func/wiki/ModulesList名师资料总结-精品资料欢迎下载-名师精心整理-第 19 页,共 20 页 -服务器自动化运维管理方案第 20 页共 20 页第4章 附录4.1.参录资料1.Pro Puppet-James Turnbull,Jeffrey McCune 2.puppet docs,URL:http:/ of open source configuration management software,URL:http:/en.wikipedia.org/wiki/Comparison_of_open_source_configuration_management_software 4.Func wiki,URL:https:/fedorahosted.org/func/wiki/5.Linux 运维趋势第0 期4.2.招贤纳士目前公司处于创业期,我们是一个快速学习、成长的技术团队。如果您热爱互联网,喜欢研究和探索新事物,享受在高压下不断成长的过程,喜欢和优秀的人一起工作,请联系我:ID:netxfly QQ:56219693 Mail:名师资料总结-精品资料欢迎下载-名师精心整理-第 20 页,共 20 页 -