管理された環境は、多くの場合、データの関与が増加した結果として、または共有ワークロードを通じてパフォーマンスを向上させる必要があるために、時間の経過とともに成長します。このため、メンバーを追加する必要があります。たとえば、MongoDBを使用すると、レプリケーションとシャーディングを実行することを決定できます。その結果、クラスターにメンバーを追加する必要があります。これらの環境を時間とともに構成および展開すると、多忙で時間がかかり、人的エラーが発生しやすくなり、関連する多くの挫折が発生し、最終的に運用コストが発生します。 MongoDBに50のメンバーが含まれるレプリカセットの例を見てみましょう。各メンバーの特定のコレクションをシャーディングする必要があります。これを手動で行うには時間がかかるため、すべてのメンバーを簡単に構成できる一元化されたシステムが必要です。 。一元化されたシステムでは、接続されたメンバーを構成するコードを記述します。したがって、コードは人間が読める形式であり、バージョン管理可能であり、テスト可能であり、展開前に発生する可能性のあるエラーを削除できます。
Chefソフトウェアとは何ですか?
Chefは、Ruby言語で記述された自動化ソフトウェアであり、クラウドマシンまたはオンプレミスサーバーの構成と保守のタスクを合理化するために使用されます。これは、接続されているすべてのメンバーが必要なリソースを取得し、リソースが適切に構成され、目的の状態にないリソースを修正することを保証することによって行われます。したがって、Chefは基本的に、特定のマシンにあると予想されるファイルとソフトウェアリソースが存在し、正しく構成され、意図したとおりに正しく機能していることを確認します。
これは、構成データを格納する中央制御システムです。データは「レシピ」に書き込まれ、これらのレシピの多くが関係している場合は、クックブックを形成します。中央システムには、chef-clientで概説されているように各ノードを説明するメタデータも含まれています。
レシピに加えられたすべての変更は、デプロイ前の検証のためにここに渡されます。サーバーはまた、ワークステーションと接続されたノードが認証キーを使用してペアになっていることを確認してから、それらの間の通信を許可して変更を適用します。
Chefクライアントノードはノードを登録および検証し、ノードオブジェクトを構築します。基本的に、特定のノードとそのメタデータの現在の状態を保持します。
これは、構成する物理マシン、仮想マシン、またはクラウドマシンであり、それぞれにクライアントノードがインストールされている必要があります。
ワークステーションは、サーバーとクライアントノード間の通信用のインターフェイスを提供します。クックブックを作成、テスト、展開するためのプラットフォームを提供します。ここで役割も定義されます
Ruby言語で記述されたレシピが含まれており、実行されるタスクを定義するために使用されます。レシピは、定義されたタスクのリソースと実装の順序を指定します。
- 属性は、デフォルト設定を上書きするために使用されます。
- 特定のパスからchef-clientにファイルを転送するために使用されるファイル。
- メタデータリソースは、クライアントノードで説明されているようにノード情報を定義します。
Chefには、クライアント/サーバーと「chef-solo」と呼ばれるスタンドアロンモードの2つの操作方法があります。
Chef-serverは、Chef-clientから特定のノードに関するさまざまな属性を受け取ります。次に、これらの属性はサーバーによってElasticsearchを使用してインデックス付けされ、サーバーはクライアントノードがこれらのデータをクエリできるアプリケーションプログラムインターフェイス(API)を提供します。返された結果は、クライアントノードによって使用され、関連するマシンを構成して、目的の状態に変換します。
Chef管理対象サーバーは、いくつかの望ましい状態に対して時々評価され、構成の変更は自動的に修正され、普遍的に適用されます。このアプローチでは、大規模な一貫した構成があります。
このサイトからchef-workstationをダウンロードして、インストールできます。 Cookbooksという名前のフォルダーを作成し、このフォルダー内で次のコマンドを実行します。
$ chef generate cookbook first_cookbook
これにより、いくつかのサブフォルダーとファイルを含むfirst_cookbookという名前のディレクトリが生成されます。
Cookbooks / first_cookbook / recipes /に移動し、default.rbレシピを内容で更新します
file "test.txt" do
content 'This is my first recipe file'
end
次に、コマンドを使用してこのファイルを実行します
$ chef-client --local-mode --override-runlist first_cookbook.
または、レシピフォルダ内で、コマンドを使用してファイルを実行できます
$ chef-apply default.rb
レシピフォルダに移動すると、内容が含まれたtest.txtファイルが確実に表示されます。これが私の最初のレシピファイルです。とても簡単です。次のセクションでは、MongoDBに関するいくつかの特定のタスクを実行するためのレシピを作成します
インストールレシピMongoDBInstall.rbを作成し、その内容を入力することで、MongoDBをインストールできます
package "mongodb" do
action :install
version '4.0.3'
end
この場合、パッケージ名はmongodbであり、バージョン4.0.3をインストールします
私たちが持っているのは基本的なレシピですが、多くの場合、MongoDBで構成を行うには高度なクックブックが必要になります。タスクを簡単にするために、SC-MongoDBなど、一般的に構成を正確にするクックブックが開発されています。
SC-MongoDBクックブック
クックブックには、MongoDBパラメーター、レプリカセット、シャードクラスターを構成するためのmongodb_instanceが用意されています。
クックブックをインストールするには、コマンドを実行するだけです
$ knife supermarket download sc-mongodb
次に、このサイトで定義された属性を使用して、デフォルトのMongoDB属性の一部を再構成できます。