sql >> データベース >  >> NoSQL >> MongoDB

Puppetを使用したMongoDBのデプロイとメンテナンスのガイド:パート1

    多くの場合、データベースクラスタリングには、多数のサーバーとインスタンスの構成と保守が含まれ、すべてが集合的な目的で行われます。これは、同じデータを提供しているさまざまなホストにさまざまなデータベースサーバーを配置できることを意味します。

    たとえば、サーバーA、B、C、およびDがあり、それぞれにMongoDBをインストールすることにしたが、後で使用すべき新しいバージョンがあることに気付いたとします。多数のサーバーがあり、MongoDBのバージョンを更新する必要がある場合、それらを手動で(1つずつ)構成することには多くの欠点があります。これらの挫折には以下が含まれます。再構成に時間がかかりすぎる(したがって、サイトのダウンタイムが長くなる)か、DBで構成エラーが発生しやすくなります。

    さらに、同じような変更を行うたびに、同じ手順を何度も繰り返すのではなく、自動的に実行したい繰り返しのタスクが常にあります。ある時点で、クラスターのパフォーマンスを向上させるのに役立つテクノロジーの進歩に関する限り、新しいモジュールを学ぶ必要もあります。

    簡単に言えば、前述のすべての作業を容易にすることができる自動化システムが必要です。 Puppetは、これを実現するための最も好ましいソフトウェアシステムの1つです。

    • MongoDBクラスターの構成とデプロイは簡単かつ迅速です。
    • 繰り返しタスクは簡単に自動化できるため、後で自動的に実行されます。
    • クラスターインフラストラクチャ全体を単一のプラットフォームからまとめて管理できます。
    • クラウド、ハイブリッド、または物理環境での新しいノードのプロビジョニングが簡単です。
    • ノードのクラスター全体で変更とイベントを整理します。
    • さまざまなタスクを簡単に実行するのに役立つリソースを数分以内に発見します。
    • 1から200kノードまで適切に拡張できます。
    • 多くのプラットフォームでサポートされています

    パペットとは

    Puppetは、マシンを目的の状態にするために使用される言語であり、定義された命令を解釈してサービングシステムに適用するために使用されるエンジンです。 Ansibleと同様に、Puppetもデータベースクラスタータスクの自動化と実行に使用される構成管理ツールです。ただし、最も古く、新しく統合された機能が豊富で、他の機能よりも洗練されていることを考えると、より高度で確立されています。私が個人的にPuppetを好む主な理由の1つは、ロードバランサー、ネットワークデバイス、またはファイアウォールで接続された多数のノードを構成できる機能です。 Puppetは、複雑な環境を持つ大企業でよく使用されます。

    人形のしくみ

    Puppetは、冪等技術を使用して、特定のマシンを作成時から、構成が変更された場合でもそのライフサイクル全体にわたって管理するのに役立ちます。これの主な利点は、マシンを最初から何度も構築するのではなく、何年にもわたって更新されることです。更新の場合、Puppetは現在のターゲットマシンのステータスをチェックし、構成に特定の変更があった場合にのみ変更が適用されます。

    べき等

    べき等ワークフローを以下に示します。

    Puppetマスターは、ターゲットマシンの現在の状態に関する詳細を収集し、それをマシンレベルの構成の詳細と比較してから、変換レイヤーに送信される詳細を返します。

    変換レイヤーは、取得した構成を新しく定義された構成の詳細と比較し、カタログを作成します。このカタログは、ターゲットのPuppetエージェント(この場合は、変更が適用されるターゲットノード)に送信されます。

    次に、構成の変更がシステムに適用され、システムが目的の状態に変換されます。変更が実装された後、PuppetエージェントはレポートをPuppetマスターに送り返します。このレポートは、システムの新しい状態を提供されたカタログとして定義するために文書化されています。

    パペットの基本コンポーネント

    1. 人形のリソース

      これらは、特定のマシンの主要なモデリングコンポーネントであり、その説明によってマシンが目的の状態になります。

    2. プロバイダー

      プロバイダーは、システムにパッケージを追加するために使用される特定のリソースです。 yumとapt-get。デフォルトのプロバイダーがありますが、いくつかのパッケージが必要な場合はさらに追加できます。

    3. マニフェスト

      これは、ターゲットシステムを構成するために結合された関数またはクラスのいずれかで定義されたリソースのコレクションです。

      構造は

      である必要があります
      resource:{‘module’:
      	attribute => value
      }

      たとえば、mongodbをインストールすると、次の内容のMongodb.ppというマニフェストファイルを作成できます。

      package {‘mongodb’:
      		ensure => installed
           }
    4. モジュール

      これは、基本的にリソース、テンプレート、およびファイルのコレクションであるPuppetの主要な構成要素です。これらは任意のオペレーティングシステムに分散できるため、同じ構成で複数回使用できます。

    5. テンプレート

      テンプレートは、カスタマイズされたコンテンツと変数入力を定義するために使用されます。これらはRuby構文を使用します。つまり、リッスンするポートを定義する場合:

      Listen <% [email protected]_number %>

      この場合のPort_number変数は、このテンプレートを参照するマニフェストで定義されています。

    6. 静的ファイル

      これらは、特定のタスクを実行するために必要となる可能性のある一般的なファイルです。これらは、任意のモジュールのファイルディレクトリにあります。

    Puppetのインストール

    学習の目的で、ローカルマシンで作成する仮想マシンにpuppetをインストールして構成します。まず、virtualboxとvagrantをインストールする必要があります。インストール後、新しいターミナルを開き、おそらくデスクトップ上にPuppetディレクトリを作成し、コマンド$vagrantinitを実行します。これにより、仮想マシンが作成され、vagrantというラベルが付けられます。次に、コマンド$vagrantsshを使用してこのマシンにログインできます。

    以下のような画面が表示された場合は、マシンが稼働しています。

    それ以外の場合、サーバーマシンを使用している場合は、この手順を無視して、以下のようにpuppetパッケージの追加を続行できます。

    コマンドを使用してパペットパッケージを追加します

    $ wget https://apt.puppetlabs.com/puppet5-release-xenial.deb

    次に、パッケージを解凍して、

    でインストールします。
    $ sudo dpkg -i puppet5-release-xenial.deb

    実行するためにリポジトリを更新する必要があります

    $ sudo apt-get update

    実行してpuppet-agentをインストールします

    $ sudo apt-get install puppet-agent

    インストールが完了したら、バージョンを確認して確認できます。 Puppetパスを環境に追加するには、仮想マシンからログアウトしてから$ puppet --versionを実行する必要がある場合があります。ログアウトしていない場合は、$ / opt / puppetlabs / bin /puppet--versionを実行します。 5.5.14のようなバージョン番号を取得した場合、インストールは成功しています。

    上で作成したMongodb.ppを使用してMongoDBをインストールした後、データベース製品をセットアップするタスクを記述し、このデータベースにユーザーを追加するだけです。

    「mongodb_database」は、MongoDB内でデータベースを作成および管理するために使用されます

    mongodb_database{‘products’:
    	ensure => present,
                tries => 10
    }

    「Mongodb_userを使用して、MongoDBデータベース内のユーザーを作成および管理できます。」

    「製品」データベースにユーザーを追加するには

    mongodb_user {userprod:
      username => ‘prodUser’,
      ensure => present,
      password_hash => mongodb_password(‘prodUser’, ‘passProdser’),
      database => prodUser,
      roles => [‘readWrite’, ‘dbAdmin’],
      tries  => 10
    }

    結論

    このブログでは、Puppetとは何か、それに関連するメリット、およびその動作アーキテクチャについて学習しました。 Puppetは、他の管理ツール(ChefやAnsibleなど)よりも少し複雑ですが、データベース管理に関する問題を解決するために使用できるモジュールがたくさんあります。次のパートでは、定義されたマニフェストファイルを使用してリモートマシンを再構成できるようにリモートマシンを接続する方法について説明します。


    1. Elasticsearch v.s.フィルタリングアプリケーション用のMongoDB

    2. Redisはinit.dで手動で起動しますが、起動時には起動しません

    3. Redisトランザクション

    4. なぜmongodbを開始できないのですか