Chef
使用 Chef 根據負載部署或關閉節點
AWS 有OpsWorks,這是他們自己對 Chef 的看法。
我們有幾個原因
$$ 1 $$為什麼我們要使用“正常”的廚師伺服器/客戶端設置。 但是 OpsWorks 有一個我在 chef-server/-client 設置中找不到的功能:基於負載的實例。
它們允許堆棧通過基於多個負載指標中的任何一個在流量高時啟動額外實例並在流量低時停止實例來處理可變負載。
對於普通的 Opscode Chef 伺服器/客戶端設置,我找不到太多這樣的功能。只有幾篇博文解釋瞭如何使用 AWS api 和 Chef-server API 來監控 AWS 實例並在特定條件下觸發節點引導。自建腳本。
如果有的話,這通常是如何用 Chef 解決的?這完全是 Chef 的任務,還是應該使用第三種工具來管理這種擴展?如果是這樣,是否有任何與廚師伺服器設置相關的內容?
$$ 1 $$: 原因是:
- 它將我們與 AWS 聯繫在一起:這當然是亞馬遜想要的,但我們寧願選擇更中立的設置。
- 它不允許在 AWS 之外執行某些節點,例如另一個 vm-provider 上的備份伺服器,或者我們現有的網關伺服器等等。
- 我們已經有一套定制的配方,需要稍微重寫才能在 OpsWorks 環境中工作,例如使用搜尋、數據包等。
Chef(大部分)不是供應工具。您將使用您選擇的雲提供商(AWS ASG、OpenStack Heat 等)的自動擴展功能。擴展需要對組中每台伺服器的負載有一個整體的了解,而 Chef 一次只在一個節點上執行。有一個名為 chef-provisioning 的工具可以管理從 Chef DSL 創建伺服器(和其他東西),但是您必須編寫一些東西來為其載入數據(可能通過 CloudWatch API)並提出您自己的擴展規則(門檻值、預測分析等)。將 Chef Client/Server 與 Autoscaling 組一起使用時,您通常會使用 Packer 為自己建構一個自定義 AMI,其中包含您的 Chef 配置和驗證器密鑰,以便他們在出現時向 Chef 伺服器註冊。