集群環境下維護各節點 Linux 軟件包的方法 |
發布時間: 2012/6/28 17:02:27 |
前言 目前,越來越多的網站采用 Linux 操作系統,提供郵件、Web、文件存儲、數據庫等服務。也有非常多的公司在企業內部網中利用 Linux 服務器提供這些服務。隨著人們對 Linux 服務器依賴的加深,對其可靠性、負載能力和計算能力也倍加關注。Linux 集群技術應運而生,可以以低廉的成本,很好地滿足人們的這些需要。隨著 Linux 集群環境的使用越來越廣泛,管理員維護集群各個節點的軟件面臨著越來越大的問題,例如如何在節點安裝新的軟件、如何維護各節點軟件版本的一致性,等等。如果讓管理員一個個節點的安裝、更新,那將會是一項非常繁重并且容易出錯的工程。為了充分發揮 Linux 集群系統的潛在性能,我們需要有更好的方法來維護集群節點的軟件包。本文將會介紹幾種常用的軟件維護工具,最后還將給出集群環境下實現節點軟件包自動維護的方法。 Linux 集群環境手工維護軟件存在的問題 Linux 操作系統跟微軟操作系統不同,它都是一個個相對獨立的軟件所構成的一個操作系統,一個軟件包完成一項單獨的功能。為此 Linux 系統管理員平時大部分時間都在跟 Linux 系統軟件包打交道。系統管理員要根據企業員工的需要,選擇并安裝恰當的軟件包。 Linux 服務器的軟件包也如同 Windows 操作系統的補丁一樣在不斷的升級。Linux 服務器軟件的升級主要有兩個目的。一是增強軟件的功能,二是解決一些已知的安全漏洞。如 RedHat 公司在知道新的安全漏洞之后,就會馬上研究開發出相應的解決方案,然后在新版本的軟件包中進行解決。為此系統管理員必須及時的了解軟件包的最新信息并及時的對軟件包進行升級,讓軟件包保持最新的版本。 在 Linux 系統中,軟件包的依賴關系讓人很是頭疼。如在安裝 Linux 系統時,不是選擇安裝所有的軟件包。在安裝完 Linux 系統后,若再進行軟件安裝的話,就可能會遇到一些依賴關系的問題,如在安裝 PHP 軟件包時,系統就可能會提示一些錯誤信息。說需要其他的一些軟件包的支持。其實類似的情況在 Windows 中也會遇到。如有時候安裝一些應用軟件可能對瀏覽器的版本會有要求或者要求操作系統的補丁達到 SP2 以上等等。不過在微軟操作系統上這種軟件依賴關系要比在 Linux 系統中少見的多,而且處理起來也方便一些。 Linux 環境下維護軟件工具介紹 Linux 環境下軟件包的維護工具有很多種,本文中我們只簡單介紹一下 RPM,YUM 和 AutoUpdate 三種工具。 RPM RPM 源自 Red Hat Package Manager 的縮寫,最初在 Red Hat Linux 中被用作軟件包管理。在眾多的 Linux 發行版中均有應用,如 Fedora 、RedHat、Mandriva、SuSE、YellowDog 等,還有一些非 Linux 平臺,如 Novell 的 NetWare、IBM 的 AIX 等。 軟件在 RPM 中是以包的形式存在的,包括可執行程序以及運行時所需要的文件。用戶可以使用 RPM 用來處理如下的任務: 管理軟件的安裝、刪除、升級等。 查詢軟件信息,如軟件內容、版本、文件歸屬等。 依賴性檢查 生成軟件包,進行軟件包的驗證和簽名等。 RPM 不只是一個包管理工具,更是文件格式和標準。因為 RPM 應用的廣泛性,有眾多的包管理軟件是基于 RPM 做的二次開發。 RPM 在軟件包依賴性上存在弱點,這使其受人詬病。這一點在其他一些包管理工具中得到了解決。 YUM YUM 源自 Yellowdog Updater, Modified,這是一個開源并且與 RPM 兼容的包管理工具。2007 年,YUM 應用到了 RedHat 平臺,并且成為了很多 Linux 發行版的標準功能。 YUM 有一個簡單的插件接口,開發人員可以方便的通過接口增加新的功能。YUM 的數據庫采用了 xml 格式,這使其很快成為了一個標準。另外,.sqlite meta-data 格式也在引入,也提供了更好的性能。 YUM 的最大好處就是能自動的解決軟件包依賴性問題,使得軟件包的管理更加的自動化和方便。特別是如果需要管理一大批的計算機,比起 RPM,使用 YUM 會方便許多。YUM 還可以提供服務緩沖功能,在管理一批機器的時候,可以指定其中某一臺為鏡像服務器,其他機器從鏡像服務器上進行下載而不是通過 Internet,這樣不但可以節省帶寬和資源,對于管理員來說,也可以方便的讓一批機器保持一致性。 AutoUpdate AutoUpdate 是一個由 Perl 腳本編寫的包管理工具,功能類似 RedHat 的 up2date 或者 autorpm(這兩個基本已停止了開發)。AutoUpdate 可以自動的從不同的 ftp 或者 http 站點下載和安裝 rpm 包;也可以用于讓多臺機器與某一臺自定義的服務器保持軟件包的同步。AutoUpdate 從一開始就被設計為不僅僅運行于 RedHat 平臺,所有 RPM 兼容的 Linux 發行版都可以用。 與其他的包管理工具相比,AutoUpdate 有如下的特點: 與 up2date 等類型的工具相比,AutoUpdate 可以同時支持 RedHat 或者第三方的 rpm 包。另外,還可以通過設置一臺服務器,其他機器從服務器獲取包的方式來節省總體的帶寬。 AutoUpdate 能自動處理依賴性問題,特別是有多個可選依賴樹存在的情況下。 做版本比較的時候僅僅根據文件名,而不是整個 rpm 的頭。 AutoUpdate 被設計為以計劃任務的模式自動運行。另外,沒有交互式或者圖形化的界面。 AutoUpdate 有 5 種獨立的工作模式:download、get、Update/Install、Merge、Purge。 1. download 模式 AutoUpdate 連接到遠程服務器,比較服務器和本機上軟件包版本的差異,下載并安裝所有需要升級的軟件包。遠程服務器可以在命令行中指定,支持本地文件、ftp、http、https、sftp 等。 autodld 命令可用于 download 模式,下面是一個調用的例子: 清單 1. autodld 調用示范
服務器被配置為:ftp.mat.univie.ac.at。autodld 從服務器上發現了新的 rpm 包 rsync-2.-13.i386.rpm 之后,進行了下載、升級和刪除安裝文件的操作。 2. get 模式 get 模式與 download 模式類似,不同之處在于 get 模式可以指定需要更新的軟件包名。如想要安裝某服務器上的 zip 包,可用下面的命令:
3. Update/Install 模式 update 模式用于將已安裝過的軟件包升級到新的版本。軟件包名稱由命令行指定,或者搜索升級目錄中存在的。install 模式與 update 模式類似,區別在于即使系統中沒有舊版本,也會進行安裝。 AutoUpdate 的工作順序如下:首先,所有的 rpm 包(kernel 包除外)會被升級,如果存在沒有解決的依賴問題,autoupdate 會檢查是否 rpm 的目錄中存在滿足條件的 rpm 包;然后新的 kernel 包會被安裝,并且根據用戶的需要,將新的 kernel image 加入到啟動中。 例如,如果升級包在當前目錄下,可以用命令:autoupd *.rpm 對系統進行升級。如果想要重新安裝,則可以用命令:autoins *.rpm。 4. Merge 模式 Merge 模式用于將 update 目錄中新的 rpm 包合并到 rpm 目錄中去(移除舊的版本),使用 automrg 命令。 5. Purge 模式 Purge 模式用于刪除舊的軟件包,使用 autoprg 命令。 6. 配置文件 AudoUpdate 有很多配置文件用來給用戶更多的自定義選擇,這些文件都放置在 /etc 目錄下。 7. 單機模式 對于單機應用,主要的配置文件是 autoupdate.conf、*.dld 和 *.get。 autoupdate.conf 是最主要的配置文件,在 /etc/autoupdate.d 目錄下,對于簡單應用來說不需要做什么改動。 用戶至少需要一個 .dld 文件來讓 AutoUpdate 正常工作,幾個主要項的內容如下: 清單 2. .dld 配置文件
dld 文件可以是多個,用戶只要執行 autodld 即可根據所有的 dld 文件進行升級。 如果用戶想使用 get 模式,就需要配置 *.get 文件。 清單 3. .get 配置文件
8. 服務器 - 客戶端模式 假設有一批機器需要做更新,但是如果都從 Internet 上下載會很慢并且占用帶寬。使用 AutoUpdate 可以設置其中一臺為服務器,其他機器為客戶端的方式,服務器下載完成后,其他所有客戶端從這臺服務器上下載 rpm 包。這樣可以保證速度并且節省帶寬。 設置為服務器模式很簡單,我們先考慮服務器和客戶端完全同配置的情況: 在 autoupdate.conf 中配置:CleanUp=0。這樣,充當服務器的機器更新之后不會刪除下載的 rpm 包。 將服務器的 rpm 包下載目錄以某種方式 export 出去,如 ftp、http、nfs 等,使得其他客戶端機器可以訪問。 在客戶端機器上的 *.dld 文件中,將 Host 設置為服務器即可。 如果服務器和客戶端 CPU 體系結構不一致,則需要在 autoupdate.conf 中配置:BestMatch=0。這樣服務器會下載所有體系結構的包,而不只是服務器本身的。各客戶端會在服務器上下載符合自己 CPU 的 rpm 包。 本文出自:億恩科技【www.laynepeng.cn】 |