Chef Server 與 Chef Solo
我正在組合一個結構來執行 Rails 應用程序。應用程序本身在 Heroku 上執行。但是,它向集群發出請求,集群通過 C 中的程序執行呼叫。
為了能夠更快地從崩潰中恢復,我想使用 Chef 創建一個常式。我設法編寫了一本“食譜”來安裝您需要的所有東西,並且當我使用 Vagrant 虛擬機時它可以完美執行。
但是,當我申請一個真實的伺服器時,它失敗了。另外我用的是Chef Solo,在執行腳本之前需要在機器上手動安裝一些東西,不太實用。
我不知道在這種情況下我是否應該使用 Chef Server。恐怕這是滿足“小”需求的“好”工具。
這個集群只由三台機器組成,這個應該不會增加太多。但是,該應用程序還會向另一個稍大的集群(6 台機器)發出請求,儘管安裝速度非常快,但也可以使用 Chef 伺服器。
應該與 Chef 或 Chef Solo Server 一起使用嗎?有沒有關於它的教學指南?開發人員文件非常混亂。
這個問題似乎很主觀,但我會嘗試客觀地回答這個答案。
Chef 伺服器通過 RESTful API 提供發布系統和搜尋索引。
這意味著您可以:
- 通過具有 API 的單個位置分發節點的說明書,以及用於創建版本約束、檢索的原語,以及您可能期望從發布系統獲得的所有內容。
- 儲存有關您正在管理的節點的數據(屬性)。無論是一還是一千,都可以直接通過API獲取節點資訊。您還可以使用它來告訴節點執行不同的配方。
- 將有關您的基礎設施的任意資訊儲存在 Opscode 所謂的“數據包”中。這是您喜歡的任何資訊,例如使用者資訊、應用程序資訊或您能想到的有關您的基礎架構的任何其他資訊。
- 查詢伺服器以獲取有關節點的資訊,“生產中的網路伺服器是什麼?”
這與 Chef Solo 有何不同?很高興你問!
使用 Chef Solo,您必須自己將食譜、節點屬性、數據包等獲取到節點。這意味著將它們發佈到多個節點可以獲取它們的地方,或者 rsync/scp 一個儲存庫到每個受管理的節點。節點數據沒有集中儲存,也沒有任何搜尋索引。
一開始,它都非常小,而且很容易分發。在 1、3 甚至 5 個節點之間,這通常不是問題。但是大多數人發現自己遇到了一些問題。
- “如果有一種方法可以更輕鬆地將食譜上傳到節點,那肯定會很好”
- “伙計,每次我們更新食譜時,生產都會下降,因為我們不希望在那裡進行更改”
- “我們如何將所有節點數據收集到一個地方並進行查詢?”
名單還在繼續。發生的情況是,許多人不想“執行廚師伺服器”,所以他們在 git repos、http 伺服器等之上建構自己的。
您正在談論的案例(大約 5 個節點)是 Opscode Hosted Chef 的“5 個節點免費”計劃的目標,那麼您不必管理一個特殊的系統作為您的 Chef 伺服器,至少看看它是否適合您的基礎架構的東西。然後,您可以繼續發展為更大的付費計劃,或者將來將您的數據(輕鬆通過 API)移動到您自己的 Chef 伺服器。