运维自动化Puppet应用与架构
《运维自动化Puppet应用与架构》由会员分享,可在线阅读,更多相关《运维自动化Puppet应用与架构(35页珍藏版)》请在装配图网上搜索。
1、单击此处编辑母版文本样式,,第二级,,第三级,,第四级,,Page,,,*,单击此处编辑母版标题样式,,单击此处编辑母版文本样式,,第二级,,第三级,,第四级,,单击此处编辑母版标题样式,,Page,,,*,单击此处编辑母版文本样式,,第二级,,第三级,,第四级,,单击此处编辑母版标题样式,,Page,,,*,单击此处编辑母版文本样式,,第二级,,第三级,,第四级,,单击此处编辑母版标题样式,,Page,,,*,单击此处编辑母版文本样式,,第二级,,第三级,,第四级,,单击此处编辑母版标题样式,,Page,,,*,单击此处编辑母版文本样式,,第二级,,第三级,,第四级,,单击此处编辑
2、母版标题样式,,Page,,,*,单击此处编辑母版文本样式,,第二级,,第三级,,第四级,,单击此处编辑母版标题样式,,Page,,,*,单击此处编辑母版文本样式,,第二级,,第三级,,第四级,,单击此处编辑母版标题样式,,Page,,,*,单击此处编辑母版文本样式,,第二级,,第三级,,第四级,,单击此处编辑母版标题样式,,Page,,,*,单击此处编辑母版文本样式,,第二级,,第三级,,第四级,,单击此处编辑母版标题样式,,Page,,,*,单击此处编辑母版文本样式,,第二级,,第三级,,第四级,,单击此处编辑母版标题样式,,Page,,,*,单击此处编辑母版文本样式,,第二级
3、,,第三级,,第四级,,单击此处编辑母版标题样式,,Page,,,*,单击此处编辑母版文本样式,,第二级,,第三级,,第四级,,单击此处编辑母版标题样式,,Page,,,*,单击此处编辑母版文本样式,,第二级,,第三级,,第四级,,单击此处编辑母版标题样式,,单击此处编辑母版文本样式,,第二级,,第三级,,第四级,,Page,,,*,单击此处编辑母版标题样式,,单击此处编辑母版文本样式,,第二级,,第三级,,第四级,,Page,,,*,单击此处编辑母版标题样式,,单击此处编辑母版文本样式,,第二级,,第三级,,第四级,,Page,,,*,单击此处编辑母版标题样式,,Puppet 应用
4、与架构,,,吴问志,网站: puppetfans@,,微博:puppetfans@,引言,机器越来越多,,应用越来越复杂,,架构越来越复杂,,审记越来越难,,内容概要,1.puppet 介绍,,- 什么是puppet,,- puppet 能做什么,,- puppet 如何做到,,- puppet 目录结构介绍,,2.运维自动化工具对比,,- puppet vs cfengine,,- puppet vs chef,,3.puppet 使用时注意事项,,,,4.puppet 应用案例,,-puppet 管理用户,,-puppet nginx 管理,,-puppet kick 介绍,,-pupp
5、et MCollective 介绍,,- puppet func 介绍,,5.puppet 架构与集群,,-puppet 架构,,-puppet 集群方案,,- puppet 集群核心思想,,-puppet性能测试方法,,6. QA,,-puppet 未来,,,puppet 介绍,什么是puppet,,,遵循GPL 协议,(2.,7.0,),,基于ruby 语言开发的系统配置管理工具,,说明性语言表达系统,用库实现配置,,基于C/S架构,配置客户端和服务端,也可以独立运行,,puppet 对于系统管理员是抽象,只依赖于ruby与facter.,,默认情况下,客户端每30分钟连接到puppetm
6、aster,,puppet 能做什么,,,puppet 能管理多达将40多种资源管理,例如:file,user group, host,package,service,cron,exec,yumrepo适合整个软件生命周期管理,。,,注:2.7.0以后,使用(,Apache 2.0 license,),,,注:puppet特殊资源--虚拟资源,,.,puppet 有个特殊的Type,例如Package,User等。这个Type就是告诉puppet被管理的是什么资源。,,,puppet 的适用场景,puppet 是如何工作的,puppet 工作流程,,注:内部处理过程是抽象的,Pup
7、pet,模型参考,Puppet,三层模型,,package { "nginx":,,ensure => installed,,,},puppet 工作流程分拆,Facter介绍,Facter是什么,,facter是内置的puppet工具,它提供的一个标准方式去获得客户端环境变量等相关信息,,Facter能获得哪些信息,,,#facter -p,,architecture => x86_64,,id => root,,interfaces => eth0,lo,,ipaddress => 192.168.200.63,,ipaddress_eth0 => 192.168.200.63,,。
8、。。。。。。,,ikernprocessor0 => Intel(R) Xeon(R) CPU E5405 @ 2.00GHz,,prouptime => 27 days,,uptime_days => 27,,uptime_hours => 651,,uptime_seconds => 2344200,,注:这些变量可以直接来使用,例如: {$::ipaddress}或者$::ipaddress,,当然你也可以自定义fact,需要使用ruby来编写。,,,,,,开源社区版和企业版对比,,开源社区版,企业版,,用户图形接口,内置,Ec2模块,内置,Ec2模块,,内置,Vm
9、ware vms,,配置管理,-发现和克隆,配置管理,-操作系统,配置管理,-操作系统,,配置管理,-用户账户管理,管理应用,管理应用,内置,300+模块,内置,300+模块,,统一跨平台组件安装,,自动配置审记,,业务流程自动化,网络技术社区支持,网络技术社区支持,,7*24 小时技术支持,,puppetlabs工程师认证支持,,依赖包在一个目录下,,平滑升级和维护支持,puppet 目录结构与模块介绍,puppet 目录结构 (右一),,,,注:manifests/site.pp必须存在,,,,puppet 模块结构(右二),,,,,注: manifests/init.pp必须存在,,Pu
10、ppet,与其它自动化工具对比,puppet,VS,cfengine,p,uppet,,VS,,chef,安装配置简单,安装复杂需要依赖DB,基于ruby开发,Puppet 自有高级配置语言,基于c语言,语法难懂,学习维护成本高,备份恢复简单,备份恢复复杂,用于管理各种资源,重点用于管理文件,底层负责建模,,模拟资源之间相互关系,,,,安装配置简单,安装配置比较复杂,基于ruby,用户不熟悉ruby,也可以使用,使用的是ruby扩展,需要用户熟悉ruby语言,入门难,备份恢复简单,维护不方便,有众多开发者和文档,文档或者资料少,有更成熟悉商业经验,用户群相对少,更多功能,借鉴其思想,是pupp
11、et一个分支,Puppet,使用注意事项,1.,主机名使用,FQDN,格式命名,,,需要DNS或者hosts解析,,2.C/S,两端时间要同步,,SSL,认证依赖于时间,,3.ssl,认证过后,请不要修改主机名,,4.Usecachefaiure,,5.,tag 和,tagged,,6.,节点可以继承,但不能多重继承,,7.,类可以继承与覆盖,子类可以向父类添加额外属性值,,8.puppet,支持多环境部署(分:开发、测试、线上),,9.tidy,资源中多条件关系是或者,而不是,and,,10.选择正确的版本,Puppet,使用时注意事项,1.节点设置tag,,tag("old-slow-se
12、rver"),,if tagged("old-slow-server") {,,notify { "this will succeed": },,},,,2.对资源设置tag,,,file { "/etc/ssh/sshd_config":,,...,,notify => Service["ssh"],,,tag => "s,sh,",,,},,,# puppet agent --test --tags,ssh,1,类继承示例,,class,nginx,::port8,1,inherits,nginx,,{ ....,,},,错误示例,,class,nginx,::port8,1,inh
13、erits,nginx ,apache,,{,,.... },,,子类向父类添加额外属性,,Service[",nginx,"] {,,require +> File[,/"etc/nginx/conf.d/nginx81.conf",],,,},,},,,Puppet,的应用案例,Puppet,管理用户(关于:管理用户的几点说明,,,a. puppet 支持ldap以及nis集中认证,,b.puppet 支持用户密码管理,最好以''(单引号)括起来,,c. puppet 建用户的默认是不建家目录的,需要使用managerhome=>true,,p,uppet,管理,nginx,,pupp
14、et kick,,Puppet MC,ollective,,P,uppet,,func,,,puppet 虚拟资源,以@为前缀,,使用虚拟资源需要配置storeconfig,,虚拟资源使用场景,,,多个资源需要引用共同的某个资源实例,例如A用户是SA,又是DBA,puppet nginx 应用案例,Exec有条件的执行:,,creates:指定命令所生成的文件那么命令只会在所指定的文件不存在的情况的被执行,,unless:所设定的命令返回0时才执行,,onlyif:只会在onlyif设定的命令返回0时才执行,,refreshonly:触发刷新动作。,,资源之间依赖关系:,,before 、 a
15、fter、 require,,资源之间触发,,subscribe notify,,友情提示:,,refreshonly,refresh的区别,,refreshonly:收到多少次通知,就执行多少资源,,,refresh:不管有多少次通知,请执行一次。,,puppet +kick,puppet kick:主动强制客户端运行puppet agent.,,注意:puppet kick 并不关心客户端puppet agent 有没有执行错误,它成功连接到agent 即返回退出0.,MCollective介绍,官方的解释:MCollective就是一个调度器,可以解决多个puppet agent同时向m
16、aster提出请求造成性能,速度下降的问题;它可以根据不同的属性对节点进行分类,对不同分类执行不同的任务;它是一个控制终端,可以使用它控制客户端和服务器,因此不需要puppet agent定时运行了.,,,MCollective也是一种Client/Server架构,而且client和server使用Midware(中间件)进行通信,需要java以及activemq支持.,,,Mcollective官文说明:,, MCollective 功能,1.管理/控制/执行,,服务,,软件包,,进程信息,,Facter facts,,ping,,使用说明:,,# mco,,The Marionette
17、Collective version 1.3.2,,/usr/bin/mco: command (options),,Known commands: find pgrep facts ping puppetd help controller rpc inventory service,,需要更多功能,可以安装更多插件,,Mcollective 使用示例,[root@puppet1 ~]# mco find,,,,puppet1,,,,[root@puppet1 ~]## mco ping,, time=56.11 ms,,
18、 time=95.86 ms,,puppet1 time=96.78 ms,,---- ping statistics ----,,3 replies max: 96.78 min: 56.11 avg: 82.92,,[root@puppet1 ~]# mco puppetd status,,,* [ ===================================================> ] 3 / 3,,, Currently
19、 stopped; last completed run 9663 seconds ago,,puppet1 Currently idling; last completed run 1665580 seconds ago,, Currently idling; last completed run 149 seconds ago,,,Finished processing 3 / 3 hosts in 36.27 ms,,Puppet mcollective使用示例,MColle
20、ct使用示例,,[root@puppet1 ~]# mco pgrep ruby,,,* [ ======================================================> ] 3 / 3,,,,PID USER VSZ COMMAND,,9955 root 112.996 MB ruby /usr/sbin/mcollectived --pid=/var/run/mcollectived.pid,,,,,PID USER VSZ COMMAND,,571
21、7 root 113.801 MB ruby /usr/sbin/mcollectived --pid=/var/run/mcollectived.pid,,25631 root 153.289 MB /usr/bin/ruby /usr/sbin/puppetd --server=puppetmaster1 --log,,---- process list stats ----,,Matched hosts: 2,,Matched processes: 3,,Resident Size: 28.917 MB,,Virtual Size: 3
22、80.086 MB,,Finished processing 3 / 3 hosts in 198.42 ms,puppet +func 管理,Func全称为Fedora Unified Network Controller(Fedora统一网络控制器),由Fedara社区维护的一款用于服务器自动化远程管理的工具。有如下特性:,,Func 可以在主控机上一次管理任意多台服务器,或任意多个服务器组;,,Func 基于 Certmaster(https://fedorahosted.org/certmaster/)建立了,,Master – Slaves 主从 SSL 证书管控体系,可以将证书
23、自动分发到所有受控服务器;,,Func 命令行可以直接发送远程命令或者远程获取数据;,,,Func 开 发 者 已 经 完 成 了 大 多 数 常 用 任 务 模 块 的 开 发 :,,CommandModule 、 FileTrackerModule 、 JBossModule 、IPtablesModule、HardwareModule、MountModule、NagiosCheck、NetappModule、 NetworkTest、ProcessModule、ServiceModule、SysctlModule、RebootModule、 RpmModule、VirtModule、
24、YumModule等等,这些模块的作用都可以顾名思义,或者参考:https://fedorahosted.org/func/wiki/ModulesList ;,,,任何人都可以通过 Func 提供的 Python API 轻松编写自己的模块,以实现体功能扩展。而且 任何 Func 命令行能完成的工作,都能通过 API 编程实现;,,,,Func 通讯基于 XMLRPC 和 SSL 标准协议。,func 使用示例,# func "@fmgr" call process info "aux" ##查看进程,,# func "@fmgr" call process mem ## 查看内存,,#
25、 func "@fmgr" call service status puppet ##查看fmgr组中各成员puppet进程状态,,#func "@fmgr" call service stop puppet,,{'puppet2': 0, 'puppet3': 0},,# func "@fmgr" call service start puppet,,,tips: func也是使用ssl认证,可以使用puppetmaster上的ssl证书认证,参见官方文档说明,,puppet 应用QA,1. 客户端是如何使用?,,node default {,,include nginx,,},,2. 文
26、件备份,,a.backup 决定文件的内容在被修改前是否进行备份。,,b. 文件服务器,,a. 默认是备份到远程,,filebucket { main: server => "puppet" },,File { backup => main },,默认保存在/ /var/lib/puppet/clientbucket,,b.备份到本地,,filebucket { 'sky' :,,path=>"/data/backup",,,},,File { backup=>sky },,,,文件备份示例:,,f,ile { "/etc/sudoers":,,mode => "440",,,source
27、=> "puppet:///modules/admin/sudoers",,,backup => ".bak",,,},,,恢复:(哈希值),,cp /var/lib/puppet/clientbucket/c/0/7/,,d/0/a/a/2/c07d0aa2d43d58ea7b5c5307f532a0b1/contents /etc/sudoers,,,,puppet 同步大文件可以使用rsync模块,Puppet,架构与集群,Puppet,普遍部署为,C/S,架构:,,,,,,,Puppet,成熟的集群方案:,,1.Puppet +nginx,,2.Puppet +,p,asseng
28、er,,3,.Puppet +mongrel,,4,.Puppet+git,(特殊),Puppet,架构与集群,Puppet,集群核心思想:,,1).puppetmaster,集群,,,-,分担,puppetmaster,来自于客户端的请求压力,,,可以采取,Active ,Active,模式,.,,,-,采取反向代理模式,将来自于,8140,的端口请求分散到多台puppetmaster,,2).puppet ssl,证书集群,,,-,分担,puppetmaster,来自于客户端,ssl,证书的请求压力,,,采取,Active,Standby,模式,.,,,3).,采取独立运行模式,通过git
29、 将代码push到客户端,客户端本地执行相应代码。,,,,Puppet,架构与集群,a.puppetmaster 集群架构图,,Puppet,架构与集群,puppetca 集群架构图:,,puppetmaster 并发性能测试方法,默认:centos系列puppet-load.rb在 /usr/share/puppet/ext目录下。,,测试puppetmaster性能:,,./ext/puppet-load.rb - --debug --node --server puppet1 --factsdir=/var/lib/puppet/yaml/facts --concurrency 1 --repeat 1 --cert /var/lib/puppet/ssl/certs/puppet1.pem --key /var/lib/puppet/ssl/private_keys/puppet1.pem,,参阅:,,http://www.masterzen.fr/2010/10/18/benchmarking-puppetmaster-stacks/,EC2 客户端puppet 工作流,,puppet 未来,项目地址:,,
- 温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。