web-dev-qa-db-ja.com

ChefサーバーとChefソロ

Railsアプリケーションを実行するための構造をまとめています。アプリケーション自体はHerokuで実行されますが、Cのプログラムを通じて呼び出しを実行するクラスターに要求を出します。

クラッシュからより早く回復できるように、Chefを使用してルーチンを作成したいと思います。必要なものをすべてインストールする「クックブック」を作成できました。Vagrant仮想マシンを使用すると、完全に機能します。

しかし、実サーバーに申し込むと失敗します。その上、私はChef Soloを使用しており、スクリプトを実行する前にマシンにいくつかのものを手動でインストールする必要がありますが、これはあまり実用的ではありません。

この場合、Chef Serverを使用する必要があるかどうかわかりません。それは「小さな」ニーズに対応する「素晴らしい」ツールだと思います。

このクラスターは3台のマシンのみで構成されているため、それほど増加することはありません。ただし、アプリケーションは、インストールが非常に高速であるにもかかわらず、Chef Serverを利用できる、少し大きい別のクラスター(6台のマシン)にも要求を送信します。

ChefまたはChefSolo Serverを使用する必要がありますか?それについての教訓的なガイドはありますか?開発者向けドキュメントは非常に紛らわしいです。

8
João Daniel

この質問は主観的なようですが、私はこの答えに客観的に取り組むようにします。

Chef Serverは、RESTful APIを使用して公開システムと検索インデックスを提供します。

つまり、次のことができます。

  1. APIを備えた単一の場所、およびバージョン制約、取得、パブリッシングシステムに期待されるすべてのものを作成するためのプリミティブを介して、ノードのクックブックを配布します。

  2. 管理しているノードに関するデータ(属性)を保存します。 1000であろうと1000であろうと、APIを介してノードに関する情報を直接取得できます。また、これを使用して、ノードにさまざまなレシピを実行するように指示することもできます。

  3. Opscodeが「データバッグ」と呼ぶものにインフラストラクチャに関する任意の情報を保存します。これは、ユーザー情報、アプリケーション情報、またはインフラストラクチャについて考えることができるその他のものなど、好きな情報です。

  4. サーバーにノードに関する情報を問い合わせます。「本番環境のWebサーバーは何ですか?」

これはシェフソロとどう違うのですか?よろしくお願いします!

Chef Soloを使用すると、クックブック、ノード属性、データバッグなどをノードに自分で取得する必要があります。これは、複数のノードがそれらを取得できる場所にそれらを公開すること、または管理されている各ノードにリポジトリをrsync/scpすることを意味します。ノードデータの集中ストアはなく、そのいずれの検索インデックスもありません。

初めは、とても小さく、配布も簡単です。 1つ、3つ、または5つのノードの間では、これは多くの場合問題になりません。しかし、ほとんどの人はいくつかの問題を抱えています。

  • 「クックブックをノードに簡単にアップロードする方法があれば、きっといいでしょう」
  • 「クックブックを更新するたびに、変更を加えたくなかったため、生産がダウンしました」
  • 「すべてのノードデータを1か所に集めてクエリするにはどうすればよいですか?」

リストは続きます。何が起こるかというと、多くの人は「chefサーバーを実行」したくないので、gitリポジトリやhttpサーバーなどの上に独自のサーバーを構築します。

あなたが話しているユースケース(約5ノード)は、Opscode Hosted Chefの「5ノードフリー」プランのターゲットであり、少なくともそれがそうであるかどうかを確認するために、Chefサーバーになるために特別なシステムを管理する必要はありません。インフラストラクチャで機能するもの。その後、引き続き大規模な有料プランに成長したり、データを(APIを介して簡単に)独自のChefサーバーに移動したりできます。

13
jtimberman