您好,欢迎访问三七文档
当前位置:首页 > 办公文档 > 其它办公文档 > 自动化运维管理(PDF34页)
自劢化运维管理自动化运维体系及开源产品对比大规模服务器自动化配置和管理Puppet开发与Func应用实例XX中心Hartnett内容摘要why•自动化运维的意义•自动化运维的背景what•自动化运维体系介绍•常见开源产品介绍选型how•Puppet的安装、配置和使用•Func的安装、配置和使用e.g•Puppet开发实例•自动化运维实例自动化运维系统的意义与背景传统运维方式自动化运维背景效率低下容易出错不利于伸缩提高工作效率降低运维门槛SA必备技能SA人手有限短时间内开服数百组为什么要使用自动化运维系统自动化运维体系自动化运维体系结构系统预备自动化安装操作系统及常用软件包配置管理1.自动化部署业务系统软件包并完成配置2.远程管理服务器(开关服务等)3.变更回滚监控报警1.服务器可用性、性能、安全监控2.向管理员发送报警信息自动化运维工具介绍自动化运维工具对比选型(1)KickstartCobbler1.供Linux操作系统安装管理器Anaconda读取的无人值守安装配置脚本2.安装配置过程较为繁琐1.一个集成工具,集成了PXE、DHCP、DNS和Kickstart服务管理和yum仓库管理2.简化了运维工程师工作量预备类工具自动化运维工具对比选型(2)ChefPuppet1.学习门槛高(ruby)2.脚本维护调试繁琐3.依赖包多,配置过程复杂繁琐4.chef的配置管理文件二进制文件中,维护不方便5.chef的用户群少,出了问题不方便排查1.入门简单,管理模块开发周期短(puppet语言、资源)2.脚本维护调试方便3.安装、配置简单4.配置管理文件为puppet语言描述的文本文件,易于发布、备份和扩展5.puppet的用户很多,Google、Redhat等大公司都在使用配置管理类工具自动化运维工具对比选型(3)CfenginePuppet+Func1.老牌的配置管理工具,功能强大2.语法晦涩难懂,学习、维护成本高1.新兴的配置管理工具,语法简单,易于学习、维护2.远程执行命令只能返回成功与否,执行过程无法跟踪查看3.Linux集群管理工具Func可以弥补Puppet远程执行命令的不足配置管理类工具自动化运维工具对比选型(4)ZabbixNagois+Cacti1.Zabbix、Nagois和cacti等工具,zabbix和Nagois+cacti组合都是很优秀的工具2.鉴于zabbix参考资料较少,选择了常用的Nagois+cacti组合1.Nagois擅长服务器可用性监控,报警功能强大2.Cacti擅长监控历叱数据收集、存储3.UI美观,数据展示功能强大监控报警类工具Puppet篇章—Puppet介绍PuppetLabs基于ruby语言开发支持以C/S模式或独立模式运行支持对所有UNIX及类UNIX系统的配置管理支持对Windows操作系统管理(功能有限)适用于业务系统的整个生命周期Clients默认每30分钟请求一次Server端支持以节点的方式管理若干的服务器群组Puppet篇章—Puppet架构Puppet篇章—PuppetServer安装安装说明支持源码安装、yum和ruby的gem包安装Centos可以直接使用yum来安装,Centos的默认源中没有puppet,需要先安装EPEL包(注意32位与64位版本区别)安装方法1.安装EPEL:rpm–Uvh–yinstallpuppet-server3.启劢puppetServerServicepuppetmasterstartPuppet篇章—PuppetClient安装Puppet服务器端对客户端的管理是基于主机名的,在安装之前需要为客户端设置唯一的主机名安装过程1.安装EPEL包2.安装puppet客户端:yum-yinstallpuppet3.提交证书申请puppetd--serverjvpuppet.jooov.cn–testPuppet篇章—Puppet证书管理服务器端可用puppetca管理证书1.puppetca–list,查看到申请证书的客户端主机名2.puppetca–s主机名,为特定的主机颁发证书3.puppetca–sand–a,为所有的主机颁发证书4.puppetca–land–a,列出所有主机,+号代表已经领证的机器Puppet篇章—Puppet使用默认安装好的Puppet没有任何配置管理功能,需要运维人员自行开发配置管理模块Puppet开发—Server端目录结构Server端默认安装后,位于/etc/puppet目录下[jvuser@jvpuppetpuppet]$pwd/etc/puppet[jvuser@jvpuppetpuppet]$lsauth.confclient访问puppetserver的ACL配置文件fileserver.confpuppetserver作为文件服务器的ACL配置文件manifestsPuppet脚本主文件目录,至少需要包含site.pp入口脚本文件modulesPuppet模块目录,存放Puppet脚本的功能模块namespaceauth.conf命名空间ACL配置文件puppet.confPuppet服务器端配置文件Puppet开发—Puppet脚本开发规范Puppet开发—Puppet资源介绍Puppet提供了48种资源类型,支持用户自主开发Puppet资源范例—file资源功能:新建一个/tmp/puppettest文件,文件内容为:puppettestonly,文件权限为666代码:classtest{file{/tmp/puppettest:content=Puppettestonly,mode=666}}Puppet资源范例—用户和组资源Ensure参数可以创建或者删除组,设置absent就删除该组,设置present就创建该组以下的例子为删除不必要的用户组代码:$grouplist=[lp,uucp,games,news,floppy,audio]group{$grouplist:ensure=absent,}Puppet资源范例—Package资源功能:为新装的系统安装ntp和screen,删除pppoe和pppoe-conf包代码:package{[ntp,screen]:ensure=installed;[pppoe,pppoe-conf]:ensure=absent;}Puppet资源范例—Service资源功能:以下实例为启劢ssh服务,停止nfs服务代码:service{sshd:ensure=running;nfs:ensure=stopped;}Puppet资源范例—crontab资源功能:在crontab添加时间同步任务代码:cron{ntpdate:command=/usr/sbin/ntpdatetime.windows.com,user=root,hour=0,minute=0,require=Package[crontabs];}Puppet资源范例—exec资源功能:自动执行初始化iptables安全策略脚本代码:exec{/etc/rc.d/jv_firewall.sh:cwd=/etc/rc.d/,path=/usr/bin:/usr/sbin:/bin}Func篇章—Func介绍Func全称为FedoraUnifiedNetworkController(Fedora统一网络控制器),是由Fedara社区维护的一款用于服务器自劢化远程管理的工具特点:1.可以管理任意多台服务器,或任意多个服务器组2.基于Certmaster建立主从SSL证书管控体系3.提供了多个实用的远程管理模块CommandModuleProcessModuleServiceModule4.任何Func命令行能完成的工作,都能通过pythonAPI编程实现Func篇章—Func安装与配置Func的Master端和Slave端安装方式相同,在安装过EPEL的Centos服务器中,可使用yum–yinstallfunc直接完成安装Master的控制端与被控制端是由配置文件指定的Master配置可以保持默认,如需打开证书自动分发功能,将autosign设为yes即可完成配置后需要重启certmaster服务Func篇章—FuncServer端配置#configurationforcertmasterdandcertmaster-ca[main]autosign=nolisten_addr=listen_port=51235cadir=/etc/pki/certmaster/cacert_dir=/etc/pki/certmastercertroot=/var/lib/certmaster/certmaster/certscsrroot=/var/lib/certmaster/certmaster/csrscert_extension=certsync_certs=FalseFunc篇章—FuncClient端配置Client端需要配置/etc/certmaster/minion.conf中的certmaster字段,用于指定Server的证书地址[root@client1~]#cat/etc/certmaster/minion.conf#configurationforminions[main]#设置certmaster的值为master的IP或域名certmaster=puppet.xxxxx.cncertmaster_port=51235log_level=DEBUGcert_dir=/etc/pki/certmasterFunc篇章—Func证书管理证书申请:Client配置完毕后,使用servicefuncdstart启劢funcd服务后,会自劢向控制端提交证书申请请求证书颁发:1.在Server端执行certmaster-ca–l查看到被控端的证书请求2.用certmaster-ca–s主机名可以为相应的主机颁发证书3.证书分发完后,需要在server的hosts中加client的主机名实例:[root@jvpuppetcertmaster]#certmaster-ca-lsxxb4-33[root@jvpuppetcertmaster]#certmaster-ca-ssxxb4-33/var/lib/certmaster/certmaster/csrs/sxxb4-33.csrsigned-certlocatedat/var/lib/certmaster/certmaster/certs/sxxb4-33.certFunc使用—远程管理命令执行方法Func可以远程管理任意台或任意组服务器,func同时支持命令行和pythonapi调用对一台发送指令时,可直接指定其主机名确认主机jooov-web是否存在:1.[root@puppetbin]#funcjooov-webping2.client=func.Client(“jooov-web)printclient.ping()对所有服务器发送指令时,用*表示所有服务器让所有主机执行ifconfig命令:1.func“*”callcommandrun“ifconfig”2.client=func.Client(“*)printclient.command.run(“ifconfig)Func使用—服务器群组管理日常的运维工作更多的对特定的服务器组进行操作Func提供了2种方法对服务器进行分组管理1.GroupApi添加一个新组newgr:[root@fedorabigfunc]#func*group--agnewgr“列出所有组及其服务器成员[root@fedorabigfunc]#func*group–la2.组管
本文标题:自动化运维管理(PDF34页)
链接地址:https://www.777doc.com/doc-20679 .html