自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Puppet自動(dòng)化集群管理基礎(chǔ)篇

開(kāi)發(fā) 開(kāi)發(fā)工具 架構(gòu) 自動(dòng)化
Puppet作為開(kāi)源的集群管理框架,有著簡(jiǎn)單易用、快速部署、使用范圍廣等特性,已經(jīng)積累了超過(guò)250家的用戶,包括阿里巴巴、新浪、Oracle等大公司。本文作者將帶領(lǐng)大家了解puppet技術(shù)及其簡(jiǎn)單的應(yīng)用。

Puppet作為開(kāi)源的集群管理框架,有著簡(jiǎn)單易用、快速部署、使用范圍廣等特性,已經(jīng)積累了超過(guò)250家的用戶,包括阿里巴巴、新浪、Oracle等大公司。本文作者將帶領(lǐng)大家了解puppet技術(shù)及其簡(jiǎn)單的應(yīng)用。

背景簡(jiǎn)介

在傳統(tǒng)的服務(wù)器集群管理中,每增加一臺(tái)服務(wù)器,都需要對(duì)該服務(wù)器進(jìn)行相應(yīng)的配置。如果服務(wù)器數(shù)量少,那逐一對(duì)服務(wù)器進(jìn)行配置是沒(méi)問(wèn)題的。但是在目前的生產(chǎn)環(huán)境中,服務(wù)器數(shù)量動(dòng)輒就是成千上萬(wàn)臺(tái)。傳統(tǒng)的集群管理方案耗時(shí)耗力,已無(wú)法快速有效的適應(yīng)生產(chǎn)環(huán)境的需求。目前,在公司內(nèi)部存在3萬(wàn)多臺(tái)的web服務(wù)器,如何對(duì)其進(jìn)行快速部署成為公司內(nèi)部亟待解決的問(wèn)題。主要需求包括:

  • 突然有一天,某機(jī)房DNS出問(wèn)題了,需要換個(gè)DNS。
  • 基于某個(gè)模板的業(yè)務(wù)快速上線。
  • Apache的配置需要將robots文件的配置修改。
  • 快速安裝某個(gè)軟件某個(gè)模塊。
  • 修改了某個(gè)配置,需要重啟對(duì)應(yīng)服務(wù)。
  • 某天我們對(duì)某臺(tái)機(jī)器做某個(gè)測(cè)試修改了配置,又某天我們對(duì)另外一臺(tái)機(jī)器測(cè)試又修改了一個(gè)配置,越積越多。

如何快速的解決以上情況所引起的生產(chǎn)環(huán)境失效的問(wèn)題,我們對(duì)自動(dòng)化集群管理工具puppet進(jìn)行了調(diào)研,從軟件包、配置文件和服務(wù)三種類型的資源出發(fā),對(duì)服務(wù)器集群進(jìn)行了自動(dòng)化管理設(shè)計(jì)。

puppet

1. Puppet是什么

Puppet是一種跨平臺(tái)、C/S架構(gòu)的集中配置管理系統(tǒng),可以用于管理linux、windows、unix、mac等平臺(tái)下的用戶、軟件包、文件、服務(wù)和cron任務(wù)等,并且可以妥善處理資源之間的依賴關(guān)系。其使用ruby語(yǔ)言開(kāi)發(fā),但是使用者并不需要了解ruby語(yǔ)言,因?yàn)槠鋬H僅依賴于一種以pp為后綴的文件,在puppet框架搭建好后,就只剩下模塊的開(kāi)發(fā),模塊開(kāi)發(fā)采用描述性語(yǔ)言和基本的邏輯控制語(yǔ)句,簡(jiǎn)單易懂,非常適合于管理和部署大規(guī)模的集群系統(tǒng)。

2. Puppet架構(gòu)

Puppet使用C/S架構(gòu),分為puppet server(master)和puppet client(agent)。master是配置和管理中心,管理著所有的節(jié)點(diǎn)。系統(tǒng)管理員需要在master上編寫(xiě)每個(gè)節(jié)點(diǎn)所對(duì)應(yīng)的pp文件來(lái)描述不同節(jié)點(diǎn)的資源集合和目標(biāo)狀態(tài)。各個(gè)agent會(huì)周期性的查詢master,來(lái)獲取自己的配置,并將結(jié)果以報(bào)告的形式傳送給master。

puppet

puppet使用ssl認(rèn)證,在client與master通訊認(rèn)證通過(guò)后,證書(shū)會(huì)存儲(chǔ)在master上,當(dāng)僅有一臺(tái)master時(shí),這不會(huì)產(chǎn)生問(wèn)題。但是,在我們的設(shè)計(jì)中,為了保證高可用和高并發(fā),master是集群,master集群的前面是負(fù)載均衡,同一client與master多次通信時(shí),無(wú)法保證連接的是同一個(gè)master,也就是說(shuō)無(wú)法保證證書(shū)的獲取。為此,puppet官方建議搭建單獨(dú)的CA認(rèn)證服務(wù)器,從而實(shí)現(xiàn)證書(shū)的統(tǒng)一中心化管理。因此在大規(guī)模集群管理系統(tǒng)中,常見(jiàn)的puppet架構(gòu)如上圖,本公司同樣也采用了該架構(gòu)搭建集群管理系統(tǒng)。

3. Puppet工作流程

Puppet既可以單機(jī)運(yùn)行,也可以通過(guò)C/S架構(gòu)的方式運(yùn)行,不過(guò)在大多數(shù)情況下還是基于C/S架構(gòu)的方式來(lái)運(yùn)行,其交互過(guò)程如下圖所示。

puppet

  • agent通過(guò)ssl向master建立認(rèn)證。
  • 建立認(rèn)證后,puppet調(diào)用agent的facter,探測(cè)出主機(jī)的一些內(nèi)置變量,如主機(jī)名、系統(tǒng)版本號(hào)、ip地址和負(fù)載等信息。Agent將這些信息通過(guò)ssl加密發(fā)送到master端。
  • Master接收到agent的主機(jī)信息請(qǐng)求后,根據(jù)域名或ip地址將他們發(fā)送到本機(jī)的manifests或ENC,進(jìn)行節(jié)點(diǎn)配置信息的查詢。
  • 在解析過(guò)程中,首先進(jìn)行語(yǔ)法檢查,如果有語(yǔ)法錯(cuò)誤,則停止,返回錯(cuò)誤信息,否則繼續(xù)解析生成catalog。
  • Puppet客戶端agent對(duì)服務(wù)端生成的catalog進(jìn)行應(yīng)用。
  • Puppet客戶端agent對(duì)catalog進(jìn)行代碼驗(yàn)證并執(zhí)行,并將結(jié)果記入日志。
  • 將agent信息以報(bào)告的形式上報(bào)master。
  • 流程結(jié)束。

4. Puppet安裝與配置

基于公司內(nèi)部已有的DNS域名解析和LVS負(fù)載均衡服務(wù),圍繞puppet的整個(gè)集群管理系統(tǒng)架構(gòu)圖,在centos環(huán)境下,puppet安裝與配置方法如下:

(1) Master

目前使用了4臺(tái)master用于管理15000臺(tái)左右的服務(wù)器,如果后期master壓力增大,再適當(dāng)?shù)臄U(kuò)容。配置步驟如下:

1)安裝puppet的相關(guān)包,包括puppet-server、Apache、mod_ssl、mod_passenger。

puppet

在安裝以上包的同時(shí),系統(tǒng)會(huì)自動(dòng)安裝facter包和一些ruby依賴包。

2)編輯 /etc/puppet/puppet.conf配置文件。

puppet

3)復(fù)制CA服務(wù)器上的證書(shū),主要是打包CA服務(wù)器上的ssl目錄,并放到master上的ssl目錄下。

4)初始化master,生成必須文件。

puppet

5)建立/etc/httpd/conf.d/puppet.conf配置文件。

puppet

6)創(chuàng)建虛擬主機(jī)的DocumentRoot。

puppet

7)啟動(dòng)puppet。

puppet

2. CA

將master和agent的認(rèn)證機(jī)制放在單獨(dú)的CA服務(wù)器上,可以方便master集群的管理和擴(kuò)容。配置步驟如下:

1)安裝puppet的相關(guān)包,包括puppet-server、Apache、mod_ssl、mod_passenger。

puppet

2)編輯/etc/puppet/puppet.conf配置文件。

3)創(chuàng)建/etc/puppet/autosign.conf配置文件,如果內(nèi)容是“*”,表示所有主機(jī)都可訪問(wèn)。

puppet

4)啟動(dòng)一下puppet master,實(shí)現(xiàn)初始化,生成key和自認(rèn)證。

puppet

5)為master服務(wù)器生成證書(shū)。

6)建立/etc/httpd/conf.d/puppet.conf配置文件,文件的設(shè)置參照master的配置。

7)創(chuàng)建虛擬主機(jī)的DocumentRoot,參照master的配置。

8)啟動(dòng)puppet,參照master的配置。

3. Agent

Puppet客戶端安裝比較簡(jiǎn)單,配置步驟如下:

1)安裝puppet的相關(guān)包,包括addops-puppet、addops-puppet-agent-extra(公司內(nèi)部包)。其中第一個(gè)包為yum源包,第二個(gè)包為puppet的擴(kuò)展包,其依賴于puppet包,并且會(huì)自動(dòng)修改配置文件中的ca_server、server和node_name_value三個(gè)變量的值。

2)測(cè)試運(yùn)行:puppet agent --test,默認(rèn)同步的環(huán)境為production,可以手動(dòng)添加環(huán)境參數(shù),如--environment=staging,即可改為臨時(shí)環(huán)境。

5. Puppet配置解讀

puppet的主配置文件puppet.conf位于/etc/puppet/(社區(qū)版)目錄下,其中主要包含了main、master和agent三個(gè)命名空間,依次介紹如下:

1)main通用配置選項(xiàng)

  • confdir:配置文件存放目錄,默認(rèn)在/etc/puppet。
  • vardir:動(dòng)態(tài)數(shù)據(jù)存放目錄,默認(rèn)在/var/lib/puppet。
  • logdir:日志存放目錄,默認(rèn)在/var/log/log。
  • rundir:PID存放目錄,默認(rèn)在/var/run/puppet。
  • statedir:狀態(tài)存放目錄,默認(rèn)在$vardir/state。
  • ssldir:SSL證書(shū)存放目錄,默認(rèn)在$vardir/ssl。
  • trace:發(fā)生錯(cuò)誤時(shí)顯示跟蹤信息,默認(rèn)false。
  • filetimeout:檢測(cè)配置文件狀態(tài)改變的時(shí)間周期,單位秒,默認(rèn)15秒。
  • syslogfacility:指定syslog功能的級(jí)別,默認(rèn)為daemon級(jí)。
  • manifestdir:系統(tǒng)的啟動(dòng)文件存放目錄,默認(rèn)在/etc/puppet/manifests。
  • basemodulepath:模塊的存放目錄,默認(rèn)為/etc/puppet/modules,可以指定多個(gè)。
  • pluginsync:當(dāng)有自定義facter變量時(shí),需要指定該值為true。
  • ca_server:認(rèn)證服務(wù)器的名稱。

2)Master服務(wù)端配置選項(xiàng)

  • user:后臺(tái)進(jìn)程執(zhí)行的用戶。
  • group:后臺(tái)進(jìn)程執(zhí)行的組。
  • certname:進(jìn)行ssl認(rèn)證時(shí)的變量名,默認(rèn)為主機(jī)名。
  • node_name_value:節(jié)點(diǎn)名稱,默認(rèn)為主機(jī)名。
  • mainfest:mainfest站點(diǎn)文件的名字,默認(rèn)為site.pp。
  • bindaddress:后臺(tái)進(jìn)程綁定的網(wǎng)卡地址接口。
  • masterport:后臺(tái)進(jìn)程執(zhí)行的端口,默認(rèn)為8140。
  • ca:當(dāng)認(rèn)證服務(wù)器位于單獨(dú)的服務(wù)器上時(shí),需要指定該值為false。

3)Agent客戶端配置選項(xiàng)

  • classfile:顯示從服務(wù)端加載到的類列表。
  • localconfig:本地緩存配置目錄。
  • runinterval:客戶端的檢測(cè)時(shí)長(zhǎng),默認(rèn)為30分鐘檢測(cè)一次。
  • listen:監(jiān)聽(tīng)進(jìn)程,用于監(jiān)聽(tīng)服務(wù)端下發(fā)的同步信息。
  • report:值為true時(shí),向master端發(fā)送報(bào)告。
  • node_name_value:節(jié)點(diǎn)名稱,默認(rèn)為主機(jī)名。
  • certname:認(rèn)證名稱,默認(rèn)為主機(jī)名。
  • Server:master的認(rèn)證名稱,即certname變量的值。

6. Puppet資源簡(jiǎn)介

資源是puppet系統(tǒng)的核心,抽象的足夠徹底,相似的資源被抽象成了一種資源類型,如程序包資源、文件資源、服務(wù)資源和exec資源等。資源屬性與其實(shí)現(xiàn)方式剝離開(kāi)來(lái),僅僅描述資源的狀態(tài),而不是其具體的實(shí)現(xiàn)過(guò)程,即可達(dá)到資源的同步。

(1) 資源定義

資源定義即向資源類型的屬性賦值,也稱為資源類型的實(shí)例化。資源的定義在pp文件中完成,其目錄結(jié)構(gòu)一般如下所示:

puppet

Files文件夾用于存放該軟件包的配置文件,manifests文件夾用于存放資源的實(shí)例,即類文件,templates用于存放模板。

定義的資源語(yǔ)法如下:

puppet

Type即為資源的類型,比如程序包資源package,文件資源file等,title是一個(gè)字符串,在同一類型中必須唯一,每個(gè)屬性用“,”隔開(kāi)。通過(guò)將class、條件控制語(yǔ)句與資源的定義相結(jié)合,即可實(shí)現(xiàn)資源的模塊化,達(dá)到易復(fù)用的效果。

(2) 常用資源

基于公司內(nèi)部運(yùn)維組的需求,puppet主要從程序包、配置文件、服務(wù)、exec四個(gè)方面展開(kāi)應(yīng)用,本文主要對(duì)前兩種資源展開(kāi)介紹。另外,我們可以利用“Puppet describe 資源名稱”命令查看資源的詳細(xì)描述。

1)程序包package

puppet

Package資源的描述如上圖所示,下來(lái)我們將對(duì)package資源的主要屬性進(jìn)行介紹:

  • name:包名,可以省略,如果省略,將繼承title的值。
  • ensure:指定軟件包的狀態(tài),安裝、卸載還是升級(jí)。需要卸載時(shí),指定為“absent”;需要保證新版本時(shí),指定為“latest”;需要保證某一版本時(shí),指定為版本號(hào)。
  • source:指定程序包的來(lái)源。如果本地yum倉(cāng)庫(kù)已經(jīng)包含該包,則可以不指定。
  • provider:指明安裝方式。

使用案例如下:

puppet

其中,package_name和package_ensure是傳入的參數(shù)值,通過(guò)對(duì)屬性以參數(shù)的形式賦值,可以大大提高模塊的復(fù)用性。

2)配置文件file

file資源的描述如上圖所示,下來(lái)我們將對(duì)file資源的主要屬性進(jìn)行介紹:

  • ensure:文件的狀態(tài),值有absent、present、file、directory和link。
  • path:文件路徑,不指定時(shí)為title的值。“ensure=>absent”共用。
  • owner:文件的屬主。
  • Group:文件的屬組。
  • Mode:文件的權(quán)限。
  • Source:文件來(lái)源。

使用案例如下:

服務(wù)和exec資源在這里不再贅述,可以利用上述提到的命令,查看資源的詳細(xì)介紹和參數(shù)的使用方法。從以上案例可以看出,采用puppet描述語(yǔ)言,結(jié)合常用的邏輯控制語(yǔ)句,可以快速的開(kāi)發(fā)出不同資源的類模塊。

結(jié)論

隨著服務(wù)器集群規(guī)模的增大,公司越來(lái)越重視通過(guò)自動(dòng)化配置來(lái)減小管理部署的成本。Puppet作為開(kāi)源的集群管理框架,有著簡(jiǎn)單易用、快速部署、使用范圍廣等特性,已經(jīng)有超過(guò)250家的用戶,包括Zynga、Twitter、Citrix、Oracle、Shopzilla、Google、RedHat、新浪、阿里巴巴、豆瓣、好樂(lè)買、趣游、PPTV等大公司。本文主要介紹了puppet架構(gòu)、安裝方法以及資源的使用案例,屬于puppet集群管理的基礎(chǔ)篇。隨著puppet集群規(guī)模的增大,將來(lái)我們會(huì)繼續(xù)介紹puppet中的facter工具、hiera工具、模塊編寫(xiě)規(guī)范、master集群擴(kuò)展,逐漸搭建一套大規(guī)模、健壯的puppet自動(dòng)化管理集群。

相關(guān)文章:

  • https://puppet.com/docs/puppet/6.4/puppet_index.html
  • https://www.cnblogs.com/keerya/p/8040071.html#_label0_2
  • https://blog.51cto.com/superleedo/1899823
  • https://www.ibm.com/developerworks/cn/opensource/os-cn-puppet/index.html

【本文是51CTO專欄機(jī)構(gòu)360技術(shù)的原創(chuàng)文章,微信公眾號(hào)“360技術(shù)( id: qihoo_tech)”】

戳這里,看該作者更多好文

 

責(zé)任編輯:趙寧寧 來(lái)源: 51CTO專欄
相關(guān)推薦

2012-05-04 19:45:30

puppet自動(dòng)化運(yùn)維

2012-05-05 21:22:40

2012-05-05 21:48:43

puppet自動(dòng)化運(yùn)維

2012-05-05 22:27:46

puppet自動(dòng)化運(yùn)維

2012-05-05 21:03:35

puppet自動(dòng)化運(yùn)維

2012-05-05 21:43:27

puppet自動(dòng)化運(yùn)維

2012-05-05 22:10:13

puppet自動(dòng)化運(yùn)維

2013-04-16 14:55:21

自動(dòng)化運(yùn)維Puppet實(shí)戰(zhàn)

2012-05-05 21:28:44

2015-12-30 14:50:45

Kubernetes容器技術(shù)Docker

2014-08-04 10:10:35

IT運(yùn)維自動(dòng)化運(yùn)維

2014-08-04 17:30:57

自動(dòng)化運(yùn)維puppet

2010-11-08 09:15:46

Puppet入門教程自動(dòng)化

2015-10-21 15:08:25

電纜自動(dòng)化

2015-09-16 11:13:51

ChefWindows集群運(yùn)維

2010-12-06 09:59:58

2024-09-13 15:32:18

2011-08-02 11:31:35

Cfengine系統(tǒng)管理

2013-10-25 09:18:56

StarCluster服務(wù)器集群管理自動(dòng)化Amazon云

2022-02-22 10:58:45

閉環(huán)自動(dòng)化網(wǎng)絡(luò)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)