自我介绍 守住每一天 SinaEdge 运维主管 LinuxTone 创始人之一 2009 年编写 Nagios 完整配置文档 2011 年编写 Puppet 集中化管理爱好 : 骑行

Similar documents
introduction-to-puppet

puppet 简介 3 puppet 是什么 3 Hello world 4 puppet 安装 5 debian 系发行版安装 puppet 5 redhat 系发行版安装 puppet 5 源代码安装 puppet 6 配置 c/s 模式的 puppet 试验环境 6 puppet 语法 8 资

OTRS用户手册

自动化运维

一、

目 錄 第 一 章 weberp 簡 介... 6 第 一 節 概 述... 6 第 二 節 安 全 性... 7 第 三 節 功 能... 7 一 銷 售 及 訂 單... 7 二 稅... 8 三 應 收 帳 款... 8 四 存 貨... 8 五 購 買... 9 六 應 付 帳 款... 9

不 知 肉 味 的 用 法 相 同? (A) 長 煙 一 空, 皓 月 千 里 (B) 五 臟 六 腑 裡, 像 熨 斗 熨 過, 無 一 處 不 伏 貼 (C) 兩 片 頑 鐵, 到 他 手 裡, 便 有 了 五 音 十 二 律 似 的 (D) 吾 觀 三 代 以 下, 世 衰 道 微 12. 文

Kubenetes 系列列公开课 2 每周四晚 8 点档 1. Kubernetes 初探 2. 上 手 Kubernetes 3. Kubernetes 的资源调度 4. Kubernetes 的运 行行时 5. Kubernetes 的 网络管理理 6. Kubernetes 的存储管理理 7.


册子0906

Symantec™ Sygate Enterprise Protection 防护代理安装使用指南

ansoft_setup21.doc

Microsoft Word - FPKLSC_21.docx

QVM330 多阜寬頻路由器

Chapter #

摘 要 1. GSLB: 全 局 负 载 均 衡 2. SLB: 服 务 器 负 载 均 衡 四 层 交 换 LVS 七 层 交 换 Nginx 3. Heartbeat 实 现 HA 4. MySQL 数 据 库 集 群 5. 集 群 环 境 下 的 存 储 备 份 6. 集 群 的 监 控 及

ebook62-1

目 录(目录名)

吉位网自动化运维管理方案

名 稱 日 期 時 間 我 要 生 態 不 留 垃 圾 IN 公 園 105/03/06 環 保 志 工 社 新 都 生 態 公 園 活 力 樂 捐 血 105/03/08 105/06/01 信 馨 志 工 團 居 安 樓 前 廣 場 服 務 學 習 105/03/09~ 105/

Microsoft Word - PS2_linux_guide_cn.doc

Basic System Administration

2005 3

手册 doc

项目采购需求编写模板

A API Application Programming Interface 见 应 用 程 序 编 程 接 口 ARP Address Resolution Protocol 地 址 解 析 协 议 为 IP 地 址 到 对 应 的 硬 件 地 址 之 间 提 供 动 态 映 射 阿 里 云 内

針灸治療膝關節疼痛綜述

WebSphere Studio Application Developer IBM Portal Toolkit... 2/21 1. WebSphere Portal Portal WebSphere Application Server stopserver.bat -configfile..

untitled


秘密

, 即 使 是 在 昏 暗 的 灯 光 下, 她 仍 然 可 以 那 么 耀 眼 我 没 有 地 方 去, 你 会 带 着 我 么 杜 晗 像 是 在 嘲 笑 一 般, 嘴 角 的 一 抹 冷 笑 有 着 不 适 合 这 个 年 龄 的 冷 酷 和 无 情, 看 着 江 华 的 眼 神 毫 无 温

User Group SMTP

自由軟體教學平台

水晶分析师

MASQUERADE # iptables -t nat -A POSTROUTING -s / o eth0 -j # sysctl net.ipv4.ip_forward=1 # iptables -P FORWARD DROP #

Microsoft Word - SPEC

IC-900W Wireless Pan & Tilt Wireless Pan & Tilt Remote Control / Night Vision FCC ID:RUJ-LR802UWG

BYOD IP+Optical (IP NGN) API 4. End-to-End (Service Aware) 5. IP NGN (IP Next Generation Network) ( ) Prime Carrier Management Access Edge Co

<4D F736F F D20A5F1A4FBA473A6DBA662C149AE76BB50B0A8AFAAB944A440AC78A67BA976C149BEC7ABE4B751AABAB56FAE692E646F63>


C3_ppt.PDF

1 WLAN 接 入 配 置 本 文 中 的 AP 指 的 是 LA3616 无 线 网 关 1.1 WLAN 接 入 简 介 WLAN 接 入 为 用 户 提 供 接 入 网 络 的 服 务 无 线 服 务 的 骨 干 网 通 常 使 用 有 线 电 缆 作 为 线 路 连 接 安 置 在 固 定

ebook140-9

上图专刊2006-3AAA.doc

衡山靈學創始人 超越時代的靈學明師 許衡山 老師 許衡山老師 出生於西元 1942 年 於 1980 年代啟發先天眼竅 自證其道 了悟真理 許 老師首先發現 人人皆可開發出第三眼能力與靈性能量 並藉由系統化的研究 將種種 生命現象與宇宙真理做深入淺出的剖析 並為生命的最終意義指出一條明路 現代文明昌

슬로시티번역,더빙 등 보고서(중문)_두현.hwp

?



EP.pdf

untitled

目 標 評 核 項 目 中 央 研 究 院 102 年 總 辦 事 處 計 算 中 心 績 效 評 比 報 告 執 行 績 效 ( 含 設 定 目 標 之 複 雜 度 及 挑 戰 性 目 標 達 成 度 實 際 成 效 ) 共 同 性 評 核 項 目 一 行 政 效 能 ( 一 ) 建 置 本 院

0 配置 Host MIB 设备 V ( 简体版 ) 0 Update: 2016/1/30

keystore weblogic.jks certreq.pem CA server.cer

天仁期末個人報告1.PDF

<4D F736F F D20C540A468BAC2BFEFB3F8A657B6B7AABE2E646F63>

C6_ppt.PDF

<4D F736F F D D352DBED6D3F2CDF8D7E9BDA8D3EBB9DCC0EDCFEEC4BFBDCCB3CCD5FDCEC42E646F63>

领导,我不想写CSS代码.key

(Microsoft Word - \244g\246a\247B\244\275\253H\245\365\244\247\275\325\254d\254\343\250s doc)

1. Revo Uninstaller Pro Revo Uninstaller Pro Revo Uninstaller Pro Revo Uninstaller Pro Revo Uninsta ller Pro Revo Uninstaller Pro Revo Uninstaller Pro

Microsoft Word - 1HF12序.doc

Microsoft Word - 讀報看科普─人體篇_橫_.doc

鍟嗗搧瑙傚療鈥㈤挗鏉

閱 讀 素 材 V.S 分 組 方 式 的 差 異 化 教 學 工 具 表 班 級 :( ) 閱 讀 素 材 V.S 分 組 方 式 獨 立 閱 讀 夥 伴 閱 讀 ( 同 質 性 ) 夥 伴 閱 讀 ( 異 質 性 ) 友 善 陪 伴 虛 心 受 教 國 語 日 報 新 聞 生 活 文 藝 兒 童

Microsoft Word - 2B802內文.doc

東區校園中法治教育種子師資教學研習營

温州市政府分散采购


软件概述

资源管理软件TORQUE与作业调度软件Maui的安装、设置及使用

关于建立境内违法互联网站黑名单管理制度的通知

? 這 全 都 是 市 政 府 提 供 給 我 的 資 料 低 底 盤 公 車 計 畫 96 年 預 算 新 台 幣 4,500 萬 元 97 年 預 算 新 台 幣 1 億 6,500 萬 元 98 年 預 算 新 台 幣 3 億 2,300 萬 元, 共 有 307 台 低 底 盤 公 車,99

Transcription:

集中化运维管理 --Puppet 管理之路 @ 守住每一天 2012 年 08 月 22 日

自我介绍 刘宇 @ 守住每一天 SinaEdge 运维主管 LinuxTone 创始人之一 2009 年编写 Nagios 完整配置文档 2011 年编写 Puppet 集中化管理爱好 : 骑行

运维自动化 系统安装 配置管理 监控报警

系统安装 KickStart Cobbler......

配置管理 Cfengine Puppet Capistrano Func......

监控报警 Nagios Zabbix Ganglia Cacti...... more http://en.wikipedia.org/wiki/network_monitoring_comparison

运维工作内容 安装系统系统优化软件部署及配置监控部署打补丁, 修复漏洞配置文件变更代码下发......

自己实现自动化 缺点 从头造轮子 : 构建工作的挑战与繁琐 程序的可维护性无法保障 ( 语言 ) 支撑不同的平台 系统重装后呢? 优点 随心所欲

关系管理 任务型 数据型 资源型 详细请参与 :2011 年架构师大会余沛的演讲 其中我们谈得最多的就是资源里的依赖管理

Puppet VS Chef Puppet Chef 使用用户 Google Admeld 开发支持 Foreman 商业运用 Enterprise 较少吧 程序语言 Php Django... Ruby 但有中间层 文档环境 Mail-List IRC Mail-List 平台支持 All os 较多的 现成实例 依赖关系 example42 灵活处理 Puppet 所支持的操作系统 :http://docs.puppetlabs.com/guides/platforms.html Chef 所支持的操作系统 :http://wiki.opscode.com/display/chef/installing+chef+server Chef 使用者 :http://www.opscode.com/customers/ Puppet 使用者 :http://projects.puppetlabs.com/projects/1/wiki/whos_using_puppet

比较毫无意义 任何一款软件都有它的优劣式, 只要它能满足我们的需求, 解决我们目前或以后可能存在的问题 就可以了 软件的特点大同小异, 但在不同的人手上, 发挥出来的特性却大不相同 用你喜欢的软件就可以了 还有更多的软件 :fabric cfengine 对于比较有兴趣的可以研究下

我推荐的理由 配置简单, 容易上手 使用者多, 不会就问 不需要程序基础 实例实在是太多了

解剖 Puppet

Puppet 简介 Puppet 是开源的基于 Ruby 的系统配置管理工 具, 依赖于 C/S 的部署架构 使用跨平台语言 规范, 管理配置文件 用户 软件包 系统服 务等 客户端默认每隔半小时会和服务器通信 一次, 确认是否有更新 当然也可以配置主动 触发来强制客户端更新

应用场景 统一配置管理软件统一配置系统优化参数定期检测服务是否运行根据机器硬件环境自动配置软件配置 (squid.conf mem_cache) 快速替换集群时设备的角色 More

Puppet 架构

Puppet 数据流 puppet 客户端在首次启动的时候, 也会自动生成证书 ; 但是这个证书需要得到 puppet 服 务器端的签名才行 ; puppet 客户端在下次连接服务器的时候就会下载签名好的证书.

模块 类 资源 模板 modules 模块 class nginx { 类! package { nginx : ensure => installed, } 资源! file { /etc/nginx/nginx.conf : 资源!! content =>template( nginx/nginx.conf.erb ), 模板! require => Package[ nginx ], } 依赖 } 无论如何你必须弄清楚他们之间的关系

Puppet 组织结构 树结构如下 : -- puppet.conf # 主配置配置文件 -- fileserver.conf # 文件服务器配置文件 -- auth.conf # 认证配置文件 ( 只允许域内认证 ) -- autosign.conf # 自动验证配置文件 -- tagmail.conf # 邮件配置文件 ( 将错误信息发送 ) -- manifests # 文件存储目录 (puppet 会先读取该目录的.PP 文件 <site.pp>) --nodes puppetclient.pp -- site.pp # 定义 puppet 相关的变量和默认配置 -- modules.pp # 加载 class 类模块文件 (include nginx) -- modules # 定义模块 -- nginx # 以 nginx 为例 -- file -- manifests -- init.pp #class 类配置 --- templates # 模块配置目录 -- nginx.erb #erb 模板 有人提问问了这个配置 puppet 解析主配置文件所有的模块和节点都在此文件里 include

Nginx 实例 puppetclient.pp 配置一个 client 主配置文件 它是被 site.pp 所 include 的 node puppetclient { include nginx } modules/nginx/manifests/init.pp 配置一个 nginx 模块 class nginx { 定义 一个 nginx 类 类名必须和模块名匹配以下定义了三个资源! package { nginx : ensure => installed, }! service { nginx : enable => true, ensure => running,!! require => Package[ nginx ] }! file { /etc/nginx/nginx.conf :!! source => puppet:///$fileserver/nginx/nginx.conf, require => Package[ nginx ], } }

Puppet 工作原理

针对上图加的文字说明 (1) 客户端 puppetd 向 master 发起认证请求 或使用带签名的证书 (2)master 告诉 client 你是合法的 (3) 客户端 puppetd 调用 facter,facter 探测出主机的一些变量, 例如主机名, 内存大小,ip 地址等 pupppetd 把这些信息通过 ssl 连接发送到服务器端 ; (4) 服务器端的 puppetmaster 检测客户端的主机名, 然后找到 manifest 里面对应的 node 配置, 并对该部分内容进行解析,facter 送过来的信息可以作为变量处理,node 牵涉到的代码才解析, 其他没牵涉的代码不解析 解析分为几个阶段, 语法检查, 如果语法错误就报错 如果语法没错, 就继续解析, 解析的结果生成一个中间的 伪代码 (catelog), 然后把伪代码发给客户端 ; (5) 客户端接收到 伪代码, 并且执行 (6) 客户端在执行时判断有没有 file 文件, 如果有向 fileserver 发起请求 (7) 客户端判断有没有配置 report 如果配置把执行结果发送给服务器; (8) 服务器端把客户端的执行结果写入日志 并可以发送给报告系统 (DashBoard)

Puppet 丰富的资源 File Cron Service exec User / Group Package 查看更多 :puppet describe --list

Puppet 关系管理

针对关系管理添加文字说明 puppetd --server test.exapmple.com --test --graph ls /var/lib/puppet/state/graphs/ expanded_relationships.dot relationships.dot resources.dot resource.dot 显示资源的类和次结构, 但没有依赖关系 releationships.dot 以箭头显示资源之间的依赖关系 expanded_relationships.dot 一个更详细的版本关系图 dot 文件在 mac 下可以使用 omnigraffle 直接打开 如果是非 mac 需要使用 dot 进行格式转换 dot -Tpng /var/lib/puppet/state/graphs/resources.dot -o /tmp/ configuration.png

获取模块 目前模块都是现成的 网上都有提供 可以 git clone 下来自己修改 http://forge.puppetlabs.com http://www.example42.com

Puppet DashBoard Puppet Dashboard 可以为你的 Puppet 环境添加一个图形用户界面 (GUI) Puppet Dashboard 可以显示主机上 Puppet 的运行结果, 并且可以提供一个节点分类工具来配置你的主机 https://github.com/puppetlabs/puppet-dashboard

Puppet Foreman 第三方开发 http://theforeman.org/projects/foreman/wiki/screenshots

融合

Puppet Django pymodule/haproxy.py pymodule/haproxy.py #!/usr/bin/python #FilenName haproxy modules py #Write by Liuyu 2010-11-22 def haproxy (nodename,tsname): contents = '''node '%s'{ $tsname = '%s' include haproxy }''' % (nodename,tsname) return contents pp_util.py srv.role == ha_role: es_servers = srvs.filter(q(role=ts_role)) es_ip_str = haproxy_ips_str( [i.ip2 for i in es_servers] ) config_contents = haproxy(srv.node_name,es_ip_str)

Puppet Django 拿 Django 实现一个 puppet 的 WebUI 下图是添加一台 puppet_client

当服务器上 1000+ 服务器越来越多时可能存在的问题 : Master 计算 伪代码 认证 CA FileServer 网络复杂 Client 并发 (runinterval)

Puppet LoadBlancer Apache + Passenger Nginx + Mongrel nginx 监听 port 8140 将除文件下发之外的请求, 代理转发给上面的 4 个 puppetmaster 实例之一,nginx 会对客户端证书进行验证, 但需要配置 ca 签发的证书才允许请求 我们也可以再配置 8141 提供证书签发

Puppet 集群架构

集群架构说明 以上集群只是简单采用扩容多 master 的方案, 但 ca 却只做了热备, 我们可以继续扩展 : 1 将 CA 配置同步到每台机器上, 包括公私钥 2 用 CA 给每台管理机器签发一个证书 3 每台管理机都配成 loadbalancer 的方式,8140 提供配置管理,8141 提供证书签发 4 各管理机之间可以使用 keeplived 实现高可用性及故障切换, 包括 HA 等 架构可随意扩展

FileServer /etc/puppet/manifests/site.pp $fileserver = "file.example.com" file 资源的三种常见写法! file { /etc/nginx/nginx.conf :!! content => Hello World, } 传参! file { /etc/nginx/nginx.conf :!! source => puppet:///$fileserver/nginx/nginx.conf, } 适合文件不经常变化! file { /etc/nginx/nginx.conf :!! content => template("nginx/nginx.conf.erb"), } 适合文件经常变化

哥们, 我着急, 配置变更能马上生效吗?

Puppet Kick puppet_client.conf listen = true PuppetMaster sudo puppet kick -p 10 -t remotefile -t webserver host1 host2 More : puppetrun --help 指定客户端马上来服务器端请求更新

Tag Kick puppet kick -p 10 -t nginxfile puppetclient class nginx {! file { /etc/nginx/nginx.conf :!! source => puppet:///$fileserver/nginx/nginx.conf, require => Package[ nginx ], tag => nginxfile,} } 当你的类配置 tag 后, 可以指定 tag 更新

Puppet 特色 分阶段运行 http://projects.puppetlabs.com/projects/1/wiki/cron_patterns cron puppet modules 多环境运行 http://docs.puppetlabs.com/guides/environment.html production development 可视化文档生成 html 文档 http://docs.puppetlabs.com/man/doc.html puppet doc --all --outputdir=/test --mode rdoc --

Puppet 瓶颈其它解决方案

Mcollective MCollective 就是一个调度器解决 puppet agent 同时向 master 提出请求造成性能, 速度下降的问题可以根据不同的属性对节点进行分类, 对不同分类执行不同的任务它是一个控制终端, 可以使用它控制客户端和服务器, 因此可以取消 puppet agent 定时运行 http://puppetlabs.com/mcollective/

结合 puppet 触发 Puppet Agent mco rpc puppetd runonce - - - - puppetd#runonce call stats - - - - Nodes: 8 / 8 Pass / Fail: 2 / 6 Start Time: Fri Aug 24 14:55:50 +0800 2012 Discovery Time: 2000.92ms Agent Time: 784.77ms Total Time: 2785.69ms

合理规划 采用 Git 管理 Puppet 进行 puppet 全代码版本控制规范 HostName isp.idc.ip.xxxx.example.com 采用 DNS 管理沟通自定义 OS 将 puppetclient 初始化集成 FileServer 独立 不常更新的文件资源进行独立

sina 当前架构图

Thanks && Question