成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Puppet自動化集群管理基礎篇

開發 開發工具 架構 自動化
Puppet作為開源的集群管理框架,有著簡單易用、快速部署、使用范圍廣等特性,已經積累了超過250家的用戶,包括阿里巴巴、新浪、Oracle等大公司。本文作者將帶領大家了解puppet技術及其簡單的應用。

Puppet作為開源的集群管理框架,有著簡單易用、快速部署、使用范圍廣等特性,已經積累了超過250家的用戶,包括阿里巴巴、新浪、Oracle等大公司。本文作者將帶領大家了解puppet技術及其簡單的應用。

背景簡介

在傳統的服務器集群管理中,每增加一臺服務器,都需要對該服務器進行相應的配置。如果服務器數量少,那逐一對服務器進行配置是沒問題的。但是在目前的生產環境中,服務器數量動輒就是成千上萬臺。傳統的集群管理方案耗時耗力,已無法快速有效的適應生產環境的需求。目前,在公司內部存在3萬多臺的web服務器,如何對其進行快速部署成為公司內部亟待解決的問題。主要需求包括:

  • 突然有一天,某機房DNS出問題了,需要換個DNS。
  • 基于某個模板的業務快速上線。
  • Apache的配置需要將robots文件的配置修改。
  • 快速安裝某個軟件某個模塊。
  • 修改了某個配置,需要重啟對應服務。
  • 某天我們對某臺機器做某個測試修改了配置,又某天我們對另外一臺機器測試又修改了一個配置,越積越多。

如何快速的解決以上情況所引起的生產環境失效的問題,我們對自動化集群管理工具puppet進行了調研,從軟件包、配置文件和服務三種類型的資源出發,對服務器集群進行了自動化管理設計。

puppet

1. Puppet是什么

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

2. Puppet架構

Puppet使用C/S架構,分為puppet server(master)和puppet client(agent)。master是配置和管理中心,管理著所有的節點。系統管理員需要在master上編寫每個節點所對應的pp文件來描述不同節點的資源集合和目標狀態。各個agent會周期性的查詢master,來獲取自己的配置,并將結果以報告的形式傳送給master。

puppet

puppet使用ssl認證,在client與master通訊認證通過后,證書會存儲在master上,當僅有一臺master時,這不會產生問題。但是,在我們的設計中,為了保證高可用和高并發,master是集群,master集群的前面是負載均衡,同一client與master多次通信時,無法保證連接的是同一個master,也就是說無法保證證書的獲取。為此,puppet官方建議搭建單獨的CA認證服務器,從而實現證書的統一中心化管理。因此在大規模集群管理系統中,常見的puppet架構如上圖,本公司同樣也采用了該架構搭建集群管理系統。

3. Puppet工作流程

Puppet既可以單機運行,也可以通過C/S架構的方式運行,不過在大多數情況下還是基于C/S架構的方式來運行,其交互過程如下圖所示。

puppet

  • agent通過ssl向master建立認證。
  • 建立認證后,puppet調用agent的facter,探測出主機的一些內置變量,如主機名、系統版本號、ip地址和負載等信息。Agent將這些信息通過ssl加密發送到master端。
  • Master接收到agent的主機信息請求后,根據域名或ip地址將他們發送到本機的manifests或ENC,進行節點配置信息的查詢。
  • 在解析過程中,首先進行語法檢查,如果有語法錯誤,則停止,返回錯誤信息,否則繼續解析生成catalog。
  • Puppet客戶端agent對服務端生成的catalog進行應用。
  • Puppet客戶端agent對catalog進行代碼驗證并執行,并將結果記入日志。
  • 將agent信息以報告的形式上報master。
  • 流程結束。

4. Puppet安裝與配置

基于公司內部已有的DNS域名解析和LVS負載均衡服務,圍繞puppet的整個集群管理系統架構圖,在centos環境下,puppet安裝與配置方法如下:

(1) Master

目前使用了4臺master用于管理15000臺左右的服務器,如果后期master壓力增大,再適當的擴容。配置步驟如下:

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

puppet

在安裝以上包的同時,系統會自動安裝facter包和一些ruby依賴包。

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

puppet

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

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

puppet

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

puppet

6)創建虛擬主機的DocumentRoot。

puppet

7)啟動puppet。

puppet

2. CA

將master和agent的認證機制放在單獨的CA服務器上,可以方便master集群的管理和擴容。配置步驟如下:

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

puppet

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

3)創建/etc/puppet/autosign.conf配置文件,如果內容是“*”,表示所有主機都可訪問。

puppet

4)啟動一下puppet master,實現初始化,生成key和自認證。

puppet

5)為master服務器生成證書。

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

7)創建虛擬主機的DocumentRoot,參照master的配置。

8)啟動puppet,參照master的配置。

3. Agent

Puppet客戶端安裝比較簡單,配置步驟如下:

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

2)測試運行:puppet agent --test,默認同步的環境為production,可以手動添加環境參數,如--environment=staging,即可改為臨時環境。

5. Puppet配置解讀

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

1)main通用配置選項

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

2)Master服務端配置選項

  • user:后臺進程執行的用戶。
  • group:后臺進程執行的組。
  • certname:進行ssl認證時的變量名,默認為主機名。
  • node_name_value:節點名稱,默認為主機名。
  • mainfest:mainfest站點文件的名字,默認為site.pp。
  • bindaddress:后臺進程綁定的網卡地址接口。
  • masterport:后臺進程執行的端口,默認為8140。
  • ca:當認證服務器位于單獨的服務器上時,需要指定該值為false。

3)Agent客戶端配置選項

  • classfile:顯示從服務端加載到的類列表。
  • localconfig:本地緩存配置目錄。
  • runinterval:客戶端的檢測時長,默認為30分鐘檢測一次。
  • listen:監聽進程,用于監聽服務端下發的同步信息。
  • report:值為true時,向master端發送報告。
  • node_name_value:節點名稱,默認為主機名。
  • certname:認證名稱,默認為主機名。
  • Server:master的認證名稱,即certname變量的值。

6. Puppet資源簡介

資源是puppet系統的核心,抽象的足夠徹底,相似的資源被抽象成了一種資源類型,如程序包資源、文件資源、服務資源和exec資源等。資源屬性與其實現方式剝離開來,僅僅描述資源的狀態,而不是其具體的實現過程,即可達到資源的同步。

(1) 資源定義

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

puppet

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

定義的資源語法如下:

puppet

Type即為資源的類型,比如程序包資源package,文件資源file等,title是一個字符串,在同一類型中必須唯一,每個屬性用“,”隔開。通過將class、條件控制語句與資源的定義相結合,即可實現資源的模塊化,達到易復用的效果。

(2) 常用資源

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

1)程序包package

puppet

Package資源的描述如上圖所示,下來我們將對package資源的主要屬性進行介紹:

  • name:包名,可以省略,如果省略,將繼承title的值。
  • ensure:指定軟件包的狀態,安裝、卸載還是升級。需要卸載時,指定為“absent”;需要保證新版本時,指定為“latest”;需要保證某一版本時,指定為版本號。
  • source:指定程序包的來源。如果本地yum倉庫已經包含該包,則可以不指定。
  • provider:指明安裝方式。

使用案例如下:

puppet

其中,package_name和package_ensure是傳入的參數值,通過對屬性以參數的形式賦值,可以大大提高模塊的復用性。

2)配置文件file

file資源的描述如上圖所示,下來我們將對file資源的主要屬性進行介紹:

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

使用案例如下:

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

結論

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

相關文章:

  • 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專欄機構360技術的原創文章,微信公眾號“360技術( id: qihoo_tech)”】

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

 

責任編輯:趙寧寧 來源: 51CTO專欄
相關推薦

2012-05-04 19:45:30

puppet自動化運維

2012-05-05 21:22:40

2012-05-05 21:48:43

puppet自動化運維

2012-05-05 22:27:46

puppet自動化運維

2012-05-05 21:03:35

puppet自動化運維

2012-05-05 21:43:27

puppet自動化運維

2012-05-05 22:10:13

puppet自動化運維

2013-04-16 14:55:21

自動化運維Puppet實戰

2012-05-05 21:28:44

2014-08-04 10:10:35

IT運維自動化運維

2015-12-30 14:50:45

Kubernetes容器技術Docker

2014-08-04 17:30:57

自動化運維puppet

2010-11-08 09:15:46

Puppet入門教程自動化

2015-10-21 15:08:25

電纜自動化

2010-12-06 09:59:58

2015-09-16 11:13:51

ChefWindows集群運維

2024-09-13 15:32:18

2011-08-02 11:31:35

Cfengine系統管理

2013-10-25 09:18:56

StarCluster服務器集群管理自動化Amazon云

2022-02-22 10:58:45

閉環自動化網絡
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 亚洲精品一区中文字幕乱码 | 亚洲国产成人精品女人久久久 | 美女在线视频一区二区三区 | 欧美一区二区三区在线观看 | 观看av | 亚洲区一区二 | 91大片| 黄网免费看 | 中文字幕视频在线观看免费 | 丝袜天堂 | 亚洲综合视频 | 日韩电影一区二区三区 | 亚洲综合在 | 亚洲成人黄色 | 激情国产在线 | 欧美性video 精品亚洲一区二区 | 日韩精品一二三区 | 黄视频在线网站 | 成人亚洲精品 | 91精品国产一区二区三区动漫 | 日一区二区 | 希岛爱理在线 | 日韩精品在线视频免费观看 | aaaa日韩 | 成人免费视频观看视频 | 成人在线免费电影 | 91一区二区三区在线观看 | av天天干| 日一区二区 | 亚洲精品一区中文字幕乱码 | 国产专区在线 | 久久久久久高潮国产精品视 | 男人的天堂一级片 | 日本一区二区高清不卡 | 91欧美 | 性一爱一乱一交一视频 | 一区二区不卡视频 | 99久久夜色精品国产亚洲96 | 久久91精品| 女人天堂av | 在线视频成人 |