跨多個伺服器管理應用程序,或 PXE 與 cfEngine/Chef/Puppet
我們有一個執行在幾個(大約 5 個並且會增長)盒子上的應用程序。所有機器的硬體都是相同的,理想情況下軟體也是如此。到目前為止,我一直在手動管理它們,並且不再想要(靜態 IP 地址、禁用所有必要的服務、安裝所需的包……)。任何人都可以平衡以下選項的利弊,或者提出更明智的建議嗎?
1:在所有盒子上單獨安裝centos並使用chef/cfengine/puppet管理配置。這會很好,因為我想找個藉口來學習使用其中一個應用程序,但我不知道這是否真的是最好的解決方案。
2:讓一盒完美,形象化。通過 PXE 提供映像,每當我想進行修改時,我都可以從新映像重新啟動這些框。集群人員通常如何處理諸如在 /etc/sysconfig/network-scripts/ifcfg* 文件中具有 mac 地址之類的事情?我們也使用 infiniband,如果 hwaddr 錯誤,它也會拒絕啟動。這些可以在啟動時正確生成嗎?
我傾向於 PXE 解決方案,但我認為使用 munin 或 nagios 進行監控會稍微複雜一些。有沒有人遇到過這類問題?
所有伺服器都裝有 SSD,速度快且功能強大。
謝謝,馬特。
您的集群聽起來更像 HPC 集群,而不是像我的 OLTP 集群,但我認為我使用的設置也適合您。我稱它為“mpdehaan trifecta”,因為那是編寫或管理所涉及的三個工具的人的 ircnick。
1.)用於基礎建構配置的補鞋匠。Cobbler 是一個項目,旨在成為您的 kickstart、pxe、yum-repo、dhcp、dns 等系統的交集。到目前為止,它是啟動和執行 kickstart 設置的最簡單方法,您可以根據需要擴展其他功能。
2.)用於配置管理的Puppet 。理想情況下,你的 cobbler 建構的主機是非常準系統的配置,它們知道足以在啟動時給你的 puppet 伺服器打電話。然後,Puppet 將應用您的配置設置,並使它們在您的環境中永久保持一致。
3.)用於並行對多台機器執行臨時命令的函式。例如“部署程式碼的新 svn 檢出並重新啟動 apache”。使用 func 在一組伺服器上呼叫相同的 bash 命令非常容易,就像 cluster-ssh 一樣。如果你真的想進入它,你可以用一些非常簡單的python為它編寫你自己的模組。
所有這三個工具都有很好的 wiki 和活躍的 irc 頻道,可以在 freenode 上獲得幫助。