Presentation is loading. Please wait.

Presentation is loading. Please wait.

Puppet 应用与架构 吴问志 网站: 邮箱 : 微博: 2012 华东运维技术大会

Similar presentations


Presentation on theme: "Puppet 应用与架构 吴问志 网站: 邮箱 : 微博: 2012 华东运维技术大会"— Presentation transcript:

1 Puppet 应用与架构 吴问志 网站: www.mysqlops.com/category/puppet 邮箱 : puppetfans@sina.com 微博: puppetfans@sina.com 2012 华东运维技术大会 www.mysqlops.com

2 引言 机器越来越多 应用越来越复杂 架构越来越复杂 审记越来越难 2012 华东运维技术大会 www.mysqlops.com

3 内容概要  1.puppet 介绍  - 什么是 puppet  - puppet 能做什么  - puppet 如何做到  - puppet 目录结构介绍  2. 运维自动化工具对比  - puppet vs cfengine  - puppet vs chef  3.puppet 使用时注意事项  4.puppet 应用案例  -puppet 管理用户  -puppet nginx 管理  -puppet kick 介绍  -puppet MCollective 介绍  - puppet func 介绍  5.puppet 架构与集群  -puppet 架构  -puppet 集群方案  - puppet 集群核心思想  -puppet 性能测试方法  6. QA  -puppet 未来 2012 华东运维技术大会 www.mysqlops.com

4 puppet 介绍 什么是 puppet  遵循 GPL 协议 (2.7.0), 基于 ruby 语言开发的系统配置管理工具  说明性语言表达系统,用库实现配置  基于 C/S 架构,配置客户端和服务端,也可以独立运行  puppet 对于系统管理员是抽象,只依赖于 ruby 与 facter.  默认情况下,客户端每 30 分钟连接到 puppetmaster puppet 能做什么 puppet 能管理多达将 40 多种资源管理,例如: file,user group, host,package,service,cron,exec,yumrepo 适合整个软件生命周期管理。 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 被管理的是什么资源。

5 puppet 的适用场景 2012 华东运维技术大会 www.mysqlops.com

6 puppet 是如何工作的 2012 华东运维技术大会 www.mysqlops.com

7 puppet 工作流程 注:内部处理过程是抽象的 2012 华东运维技术大会 www.mysqlops.com

8 Puppet 模型参考 Puppet 三层模型 package { "nginx": ensure => installed, } 2012 华东运维技术大会 www.mysqlops.com

9 puppet 工作流程分拆 2012 华东运维技术大会 www.mysqlops.com

10 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 。。。。。。。 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 来编写。 2012 华东运维技术大会 www.mysqlops.com

11 开源社区版和企业版对比 开源社区版企业版 用户图形接口 内置 Ec2 模块 内置 Vmware vms 配置管理 - 发现和克隆 配置管理 - 操作系统 配置管理 - 用户账户管理 管理应用 内置 300+ 模块 统一跨平台组件安装 自动配置审记 业务流程自动化 网络技术社区支持 7*24 小时技术支持 puppetlabs 工程师认证支持 依赖包在一个目录下 平滑升级和维护支持

12 puppet 目录结构与模块介绍 puppet 目录结构 ( 右一 ) 注: manifests/site.pp 必须存在 puppet 模块结构(右二) 注 : manifests/init.pp 必须存存 2012 华东运维技术大会 www.mysqlops.com

13 Puppet 与其它自动化工具对比 puppet VS cfengine puppet VS chef 安装配置简单 安装复杂需要 依赖 DB 基于 ruby 开发 , Puppet 自有 高级配置语言 基于 c 语言,语 法难懂,学习 维护成本高 备份恢复简单备份恢复复杂 用于管理各种 资源 重点用于管理 文件 底层负责建模 模拟资源之间 相互关系 安装配置简单 安装配置比较复 杂 基于 ruby ,用户不 熟悉 ruby ,也可以 使用 使用的是 ruby 扩展 ,需要用户熟悉 ruby 语言,入门难 备份恢复简单维护不方便 有众多开发者和 文档 文档或者资料少 有更成熟悉商业 经验 用户群相对少 更多功能借鉴其思想,是 puppet 一个分支 2012 华东运维技术大会 www.mysqlops.com

14 Puppet 使用注意事项  1. 主机名使用 FQDN 格式命名, 需要 DNS 或者 hosts 解析  2.C/S 两端时间要同步,SSL 认证依赖于时间  3.ssl 认证过后,请不要修改主机名  4.Usecachefaiure  5.tag 和 tagged  6. 节点可以继承,但不能多重继承  7. 类可以继承与覆盖,子类可以向父类添加额外属性值  8.puppet 支持多环境部署(分:开发、测试、线上)  9.tidy 资源中多条件关系是或者,而不是 and  10. 选择正确的版本 2012 华东运维技术大会 www.mysqlops.com

15 Puppet 使用时注意事项 1. 节点设置 tag tag("old-slow-server") if tagged("old-slow-server") { notify { "this will succeed": } } 2. 对资源设置 tag file { "/etc/ssh/sshd_config":... notify => Service["ssh"], tag => "ssh", } # puppet agent --test --tags ssh 1, 类继承示例 class nginx::port81 inherits nginx {.... } 错误示例 class nginx::port81 inherits nginx,apache {.... } 子类向父类添加额外属性 Service["nginx"] { require +> File[/"etc/nginx/conf.d/nginx81. conf"], } 2012 华东运维技术大会 www.mysqlops.com

16 Puppet 的应用案例  Puppet 管理用户(关于 : 管理用户的几点说明  a. puppet 支持 ldap 以及 nis 集中 认证  b.puppet 支持用户密码管理,最 好以 ''( 单引号 ) 括起来  c. puppet 建用户的默认是不建家 目录的,需要使用 managerhome=>true  puppet 管理 nginx  puppet kick  Puppet MCollective  Puppet func 2012 华东运维技术大会 www.mysqlops.com

17 puppet 虚拟资源  以 @ 为前缀  使用虚拟资源需要配置 storeconfig  虚拟资源使用场景  多个资源需要引用共同的某个资源实例,例如 A 用户是 SA ,又是 DBA 2012 华东运维技术大会 www.mysqlops.com

18 puppet nginx 应用案例 Exec 有条件的执行:  creates :指定命令所生成的文件那么 命令只会在所指定的文件不存在的情况 的被执行  unless :所设定的命令返回 0 时才执行  onlyif :只会在 onlyif 设定的命令返回 0 时才执行  refreshonly :触发刷新动作。 资源之间依赖关系: before 、 after 、 require 资源之间触发 subscribe notify 友情提示: refreshonly,refresh 的区别 refreshonly :收到多少次通知,就执 行多少资源, refresh :不管有多少次通知,请执行 一次。 2012 华东运维技术大会 www.mysqlops.com

19 puppet +kick puppet kick :主动强制客户端运行 puppet agent. 注意 :puppet kick 并不关心客户端 puppet agent 有没有执行错误,它成功连 接到 agent 即返回退出 0. 2012 华东运维技术大会 www.mysqlops.com

20 MCollective 介绍 官方的解释: MCollective 就是一个调度器, 可以解决多个 puppet agent 同时向 master 提出请求造成性能, 速度下降的问题 ; 它可以根据不 同的属性对节点进行分类, 对不同分类执行不同的任务 ; 它是一个控制 终端, 可以使用它控制客户端和服务器, 因此不需要 puppet agent 定时 运行了. MCollective 也是一种 Client/Server 架构, 而且 client 和 server 使用 Midware( 中间件 ) 进行通信,需要 java 以及 activemq 支持. Mcollective 官文说明: http://puppetlabs.com/mcollective/introduction/ 2012 华东运维技术大会 www.mysqlops.com

21 Puppet MCollective 功能 1. 管理 / 控制 / 执行  服务  软件包  进程信息  Facter facts  ping 使用说明: # mco The Marionette Collective version 1.3.2 /usr/bin/mco: command (options) Known commands: find pgrep facts ping puppetd help controller rpc inventory service 需要更多功能,可以安装更多插件 2012 华东运维技术大会 www.mysqlops.com

22 Mcollective 使用示例 [root@puppet1 ~]# mco find client1.test.com puppet1 client2.test.com [root@puppet1 ~]## mco ping client1.test.com time=56.11 ms client2.test.com 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 client1.test.com Currently stopped; last completed run 9663 seconds ago puppet1 Currently idling; last completed run 1665580 seconds ago client2..test.com Currently idling; last completed run 149 seconds ago Finished processing 3 / 3 hosts in 36.27 ms 2012 华东运维技术大会 www.mysqlops.com

23 Puppet mcollective 使用示例 2012 华东运维技术大会 www.mysqlops.com

24 MCollect 使用示例 [root@puppet1 ~]# mco pgrep ruby * [ ======================================================> ] 3 / 3 client1.test.com PID USER VSZ COMMAND 9955 root 112.996 MB ruby /usr/sbin/mcollectived --pid=/var/run/mcollectived.pid client2.test.com PID USER VSZ COMMAND 5717 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: 380.086 MB Finished processing 3 / 3 hosts in 198.42 ms 2012 华东运维技术大会 www.mysqlops.com

25 puppet +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 标准协议。

26 func 使用示例 # func "@fmgr" call process info "aux" ## 查看进程 # func "@fmgr" call process mem ## 查看内存 # 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 证书认证 ,参见官方文档说明 2012 华东运维技术大会 www.mysqlops.com

27 puppet 应用 QA 1. 客户端是如何使用? node default { include nginx } 2. 文件备份 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 => "puppet:///modules/admin/sudoers", backup => ".bak", } 恢复:(哈希值) cp /var/lib/puppet/clientbucket/c/0/7/ d/0/a/a/2/c07d0aa2d43d58ea7b5c5307f5 32a0b1/contents /etc/sudoers puppet 同步大文件可以使用 rsync 模块 2012 华东运维技术大会 www.mysqlops.com

28 Puppet 架构与集群 Puppet 普遍部署为 C/S 架构: Puppet 成熟的集群方案: 1.Puppet +nginx 2.Puppet +passenger 3.Puppet +mongrel 4.Puppet+git (特殊) 2012 华东运维技术大会 www.mysqlops.com

29 Puppet 架构与集群 Puppet 集群核心思想: 1).puppetmaster 集群 - 分担 puppetmaster 来自于客户端的请求压力, 可以采取 Active,Active 模式. - 采取反向代理模式,将来自于 8140 的端口请求分散到多台 puppetmaster 2).puppet ssl 证书集群 - 分担 puppetmaster 来自于客户端 ssl 证书的请求压力, 采取 Active,Standby 模式. 3). 采取独立运行模式,通过 git 将代码 push 到客户端,客户端本地执行 相应代码。 2012 华东运维技术大会 www.mysqlops.com

30 Puppet 架构与集群 a.puppetmaster 集群架构图 2012 华东运维技术大会 www.mysqlops.com

31 Puppet 架构与集群 puppetca 集群架构图: 2012 华东运维技术大会 www.mysqlops.com

32 puppetmaster 并发性能测试方法 默认: centos 系列 puppet-load.rb 在 /usr/share/puppet/ext 目录下。 测试 puppetmaster 性能:./ext/puppet-load.rb - --debug --node client2.test.com --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/ 2012 华东运维技术大会 www.mysqlops.com

33 EC2 客户端 puppet 工作流 2012 华东运维技术大会 www.mysqlops.com

34 puppet 未来 项目地址: https://github.com/puppetlabs/puppetlabs-openstack https://github.com/bcarpio/puppet-hadoop https://github.com/jamtur01/puppetlabs-cloudfoundry https://github.com/puppetlabs/Razor 2012 华东运维技术大会 www.mysqlops.com

35 2012 华东运维技术大会 承办单位: ChinaUnix 社区 、 ITPUB 社区 协办单位: mysqlops 中文网、 TopGeek 场地支持:创智天地 赞助商:又拍云存储、韩国派凌科技有限公司 北京基调网络系统有限公司 北京蓝汛通信技术有限责任公司 联想集团 ThinkServer 全球研发中心 礼品赞助: IT168 、盛大创新院 出版社支持:水利水电出版社、图灵教育 2012 华东架构师大会 举办日期: 2012 年 11 月 18 日 赞助与合作联系人:金官丁 微博: @mysqlops 邮箱: mysqlops@sina.com

36 Q&AQ&A


Download ppt "Puppet 应用与架构 吴问志 网站: 邮箱 : 微博: 2012 华东运维技术大会"

Similar presentations


Ads by Google