運維自動化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 語言開發(fā)的系統(tǒng)配置管理工具,,說明性語言表達系統(tǒng),用庫實現配置,,基于C/S架構,配置客戶端和服務端,也可以獨立運行,,puppet 對于系統(tǒng)管理員是抽象,只依賴于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工具,它提供的一個標準方式去獲得客戶端環(huán)境變量等相關信息,,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來編寫。,,,,,,開源社區(qū)版和企業(yè)版對比,,開源社區(qū)版,企業(yè)版,,用戶圖形接口,內置,Ec2模塊,內置,Ec2模塊,,內置,Vm
9、ware vms,,配置管理,-發(fā)現和克隆,配置管理,-操作系統(tǒng),配置管理,-操作系統(tǒng),,配置管理,-用戶賬戶管理,管理應用,管理應用,內置,300+模塊,內置,300+模塊,,統(tǒng)一跨平臺組件安裝,,自動配置審記,,業(yè)務流程自動化,網絡技術社區(qū)支持,網絡技術社區(qū)支持,,7*24 小時技術支持,,puppetlabs工程師認證支持,,依賴包在一個目錄下,,平滑升級和維護支持,puppet 目錄結構與模塊介紹,puppet 目錄結構 (右一),,,,注:manifests/site.pp必須存在,,,,puppet 模塊結構(右二),,,,,注: manifests/init.pp必須存在,,Pu
10、ppet,與其它自動化工具對比,puppet,VS,cfengine,p,uppet,,VS,,chef,安裝配置簡單,安裝復雜需要依賴DB,基于ruby開發(fā),Puppet 自有高級配置語言,基于c語言,語法難懂,學習維護成本高,備份恢復簡單,備份恢復復雜,用于管理各種資源,重點用于管理文件,底層負責建模,,模擬資源之間相互關系,,,,安裝配置簡單,安裝配置比較復雜,基于ruby,用戶不熟悉ruby,也可以使用,使用的是ruby擴展,需要用戶熟悉ruby語言,入門難,備份恢復簡單,維護不方便,有眾多開發(fā)者和文檔,文檔或者資料少,有更成熟悉商業(yè)經驗,用戶群相對少,更多功能,借鑒其思想,是pupp
11、et一個分支,Puppet,使用注意事項,1.,主機名使用,FQDN,格式命名,,,需要DNS或者hosts解析,,2.C/S,兩端時間要同步,,SSL,認證依賴于時間,,3.ssl,認證過后,請不要修改主機名,,4.Usecachefaiure,,5.,tag 和,tagged,,6.,節(jié)點可以繼承,但不能多重繼承,,7.,類可以繼承與覆蓋,子類可以向父類添加額外屬性值,,8.puppet,支持多環(huán)境部署(分:開發(fā)、測試、線上),,9.tidy,資源中多條件關系是或者,而不是,and,,10.選擇正確的版本,Puppet,使用時注意事項,1.節(jié)點設置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有條件的執(zhí)行:,,creates:指定命令所生成的文件那么命令只會在所指定的文件不存在的情況的被執(zhí)行,,unless:所設定的命令返回0時才執(zhí)行,,onlyif:只會在onlyif設定的命令返回0時才執(zhí)行,,refreshonly:觸發(fā)刷新動作。,,資源之間依賴關系:,,before 、 a
15、fter、 require,,資源之間觸發(fā),,subscribe notify,,友情提示:,,refreshonly,refresh的區(qū)別,,refreshonly:收到多少次通知,就執(zhí)行多少資源,,,refresh:不管有多少次通知,請執(zhí)行一次。,,puppet +kick,puppet kick:主動強制客戶端運行puppet agent.,,注意:puppet kick 并不關心客戶端puppet agent 有沒有執(zhí)行錯誤,它成功連接到agent 即返回退出0.,MCollective介紹,官方的解釋:MCollective就是一個調度器,可以解決多個puppet agent同時向m
16、aster提出請求造成性能,速度下降的問題;它可以根據不同的屬性對節(jié)點進行分類,對不同分類執(zhí)行不同的任務;它是一個控制終端,可以使用它控制客戶端和服務器,因此不需要puppet agent定時運行了.,,,MCollective也是一種Client/Server架構,而且client和server使用Midware(中間件)進行通信,需要java以及activemq支持.,,,Mcollective官文說明:,, MCollective 功能,1.管理/控制/執(zhí)行,,服務,,軟件包,,進程信息,,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統(tǒng)一網絡控制器),由Fedara社區(qū)維護的一款用于服務器自動化遠程管理的工具。有如下特性:,,Func 可以在主控機上一次管理任意多臺服務器,或任意多個服務器組;,,Func 基于 Certmaster(https://fedorahosted.org/certmaster/)建立了,,Master – Slaves 主從 SSL 證書管控體系,可以將證書
23、自動分發(fā)到所有受控服務器;,,Func 命令行可以直接發(fā)送遠程命令或者遠程獲取數據;,,,Func 開 發(fā) 者 已 經 完 成 了 大 多 數 常 用 任 務 模 塊 的 開 發(fā) :,,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進程狀態(tài),,#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到客戶端,客戶端本地執(zhí)行相應代碼。,,,,Puppet,架構與集群,a.puppetmaster 集群架構圖,,Puppet,架構與集群,puppetca 集群架構圖:,,puppetmaster 并發(fā)性能測試方法,默認: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. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
5. 裝配圖網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 建筑施工重大危險源安全管理制度
- 安全培訓資料:典型建筑火災的防治基本原則與救援技術
- 企業(yè)雙重預防體系應知應會知識問答
- 8 各種煤礦安全考試試題
- 9 危險化學品經營單位安全生產管理人員模擬考試題庫試卷附答案
- 加壓過濾機司機技術操作規(guī)程
- 樹脂砂混砂工藝知識總結
- XXXXX現場安全應急處置預案
- 某公司消防安全檢查制度總結
- 1 煤礦安全檢查工(中級)職業(yè)技能理論知識考核試題含答案
- 4.燃氣安全生產企業(yè)主要負責人模擬考試題庫試卷含答案
- 工段(班組)級安全檢查表
- D 氯化工藝作業(yè)模擬考試題庫試卷含答案-4
- 建筑起重司索信號工安全操作要點
- 實驗室計量常見的30個問問答題含解析