Download presentation
Presentation is loading. Please wait.
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
Similar presentations