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

SaltStackを使用したMongoDBの自動化

    複数のサーバーのデータベース展開は、新しいリソースを追加したり変更を加えたりするときに、時間の経過とともに複雑になり、時間がかかります。さらに、システムが手動で構成されている場合は常に、人為的エラーが発生して壊滅的な結果を招く可能性があります。

    データベース展開自動化ツールを使用すると、開発環境から本番環境に至るまで、複数のサーバーにデータベースを展開できます。自動展開の結果は、サーバーに追加する必要のあるリソースの計画にさらに使用できるノードの現在の状態情報を提供するだけでなく、信頼性が高く、効率的で予測可能です。適切に管理された展開により、開発チームと運用チームの両方の生産性が向上し、ビジネスの開発が速くなり、より多くの成果が得られます。頻繁に展開するのが簡単なため、ソフトウェアセットアップ全体が最終的に改善され、エンドユーザーにとって確実に機能します。

    MongoDBは手動でデプロイできますが、異なるサーバーでホストされている多くのメンバーのクラスターを構成する必要がある場合、タスクはますます面倒になります。したがって、ストレスを軽減できる自動車用ツールを使用することを決意する必要があります。使用できるツールには、Puppet、Chef、Ansible、SaltStackなどがあります。

    これらのツールのいずれかを使用してMongoDBをデプロイする主な利点は、次のとおりです。

    1. 時間の節約。 データベースに50個のノードがあり、それぞれのMongoDBバージョンを更新する必要があるとします。これにより、プロセスを経て年齢を重ねることができます。ただし、自動ツールを使用すると、いくつかの指示を記述し、コマンドを発行して残りの更新を実行する必要があります。その後、開発者は手動展開を修正するのではなく、新機能に取り組む時間ができます。
    2. エラーが減り、顧客満足度が向上します。 特に構成を手動で行う必要がある場合、新しい更新を行うと、データベースシステムにエラーが発生する可能性があります。 SaltStackのようなツールを使用すると、手動の手順を削除することで人的エラーを減らし、新機能を頻繁に更新することで顧客のニーズに対応できるため、組織の競争力を維持できます。
    3. 構成コストの削減。 展開ツールを使用すると、プロセス自体がはるかに簡単になるため、誰でも自分で展開できます。これにより、専門家が作業を行う必要がなくなり、エラーが減少します

    SaltStackとは

    SaltStackは、Pythonで開発されたオープンソースのリモート実行ツールおよび構成管理システムです。

    リモート実行機能は、柔軟なターゲティングシステムと並行してさまざまなマシンでコマンドを実行するために使用されます。たとえば、3台のサーバーマシンがあり、それぞれにMongoDBをインストールする場合は、マスターノードからこれらのマシンで同時にインストールコマンドを実行できます。

    構成管理の観点から、インフラストラクチャコンポーネントを簡単かつ安全に目的の状態に変換するために、クライアントサーバーインターフェイスが確立されます。

    SaltStackアーキテクチャ

    SaltStackの基本的なセットアップモデルはクライアントサーバーであり、サーバーはマスターと呼ばれ、クライアントはスレーブと呼ばれます。マスターは、制御システムであるクライアント/ミニオンによって実行される必要がある制御システムとして、コマンドまたはむしろ命令を発行します。

    SaltSackコンポーネント

    以下はSaltStackの構成要素です

    1. マスター :スレーブに命令を発行し、実行後にスレーブを目的の状態に変更する責任があります。
    2. ミニオン :これは、何らかの望ましい状態に変換する必要がある制御されたシステムです。
    3. 塩の穀物 :これはミニオンに関する静的データまたはメタデータであり、モデル、シリアル番号、メモリ容量、オペレーティングシステムなどの情報を構成します。これらは、ミニオンが最初にサーバーに接続したときに収集されます。それらは、ある側面に関連して特定のミニオンのグループをターゲットにするために使用できます。たとえば、Windowsオペレーティングシステムを搭載したすべてのマシンにMongoDBをインストールするというコマンドを実行できます。
    4. E実行モジュール/手順 :これらは、1つ以上のターゲットミニオンに発行されるアドホックコマンドであり、コマンドラインから実行されます。
    5. :ミニオンに分散されたユーザー定義の変数です。これらは、ミニオン構成、機密性の高いデータ、任意のデータ、および変数に使用されます。すべてのミニオンがすべての柱にアクセスできるわけではありません。特定のミニオングループの柱を制限することができます。
    6. 状態ファイル 。これはSaltstateSystem(SLS)のコアであり、システムが存在する必要がある状態を表します。これは、YAML形式でもあることを考えると、Ansibleの場合のプレイブックに相当します。
    #/srv/salt/mongodbInstall.sls (file root)
    
    install_mongodb: (task id)
    
    pkg.installed: (state declaration)
    
    -name:mongodb  (name of package to install)
    1. トップファイル :マシンのグループをマップし、適用する状態ファイルを定義するために使用されます。つまり、

    #/srv/salt/top.sls
    
      base:
    
       ‘minion1’:
    
         -mongodb
    1. ソルトプロキシ :これは、標準のソルトミニオンを実行できないデバイスを制御できるようにする機能です。それらには、プロプライエタリOSで実行されるAPIを備えたネットワークギア、CPUとメモリの制限があるデバイス、またはセキュリティ上の理由でミニオンを実行できないデバイスが含まれます。これらのデバイスの検出、制御、リモート実行、および状態管理には、Junosプロキシを使用する必要があります。

    SaltStackのインストール

    pipコマンドを使用してSaltStackを次のようにインストールできます

    $ pip install salt

    インストールを確認するには、コマンド$ salt --versionを実行すると、salt 2019.2.2(フッ素)

    のようなものが表示されます。

    マスターに接続する前に、ミニオンは、マスターが参照するために使用するマスターIPアドレスとミニオンIDの最小構成を必要とします。これらの構成は、ファイル/ etc / salt/minionで実行できます。

    その後、デーモンまたはデバッグモードなどのさまざまなモードでマスターを実行できます。デーモンの場合は$salt-master-dを使用し、デバッグモードの場合は$ salt-master-ldebugを使用します。 $ salt-key -a nameOfMinionを実行して開始する前に、ミニオンのキーを受け入れる必要があります。使用可能なキーを一覧表示するには、$ salt-key -l

    を実行します。

    ミニオンの場合、$ salt-minion-ldebugで開始できます。

    たとえば、マスターからすべてのミニオンにファイルを作成する場合は、コマンドを実行できます。

    $ salt ‘’*” file.touch ‘/tmp/salt_files/sample.text

    すべてのノードで、salt_filesフォルダーに新しいsample.textファイルが作成されます。 *オプションは、すべてのミニオンを参照するために使用されます。たとえば、文字列minionを持つID名のすべてのミニオンを指定するには、次のような正規表現を使用します。

    $ salt “minion*” file.touch ‘/tmp/salt_files/sample.text

    特定のミニオンについて収集されたメタデータを表示するには、次のコマンドを実行します:

    $salt ‘minion1’ grains.items.
    SaltStackを使用したMongoDBのセットアップ

    以下の内容のsetDatabase.slsを使用して、myAppdataというデータベースを作成できます。

    classes:
    
    - service.mongodb.server.cluster
    
    parameters:
    
       _param:
    
         mongodb_server_replica_set: myAppdata
    
         mongodb_myAppdata_password: myAppdataPasword
    
         mongodb_admin_password: cloudlab
    
         mongodb_shared_key: xxx
    
       mongodb:
    
         server:
    
           database:
    
             myAppdata:
    
               enabled: true
    
               password: ${_param:mongodb_myAppdata_password}
    
               users:
    
               -  name: myAppdata
    
                  password: ${_param:mongodb_myAppdata_password}
    単一のMongoDBサーバーの起動
    mongodb:
    
      server:
    
        enabled: true
    
        bind:
    
          address: 0.0.0.0
    
          port: 27017
    
        admin:
    
          username: admin
    
          password: myAppdataPasword
    
        database:
    
          myAppdata:
    
            enabled: true
    
            encoding: 'utf8'
    
            users:
    
            - name: 'username'
    
              password: 'password'
    SaltStackを使用したMongoDBクラスターのセットアップ
    mongodb:
    
      server:
    
        enabled: true
    
        logging:
    
          verbose: false
    
          logLevel: 1
    
          oplogLevel: 0
    
        admin:
    
          user: admin
    
          password: myAppdataPasword
    
        master: mongo01
    
        members:
    
          - host: 192.168.100.11
    
            priority: 2
    
          - host: 192.168.101.12
    
          - host: 192.168.48.13
    
        replica_set: default
    
        shared_key: myAppdataPasword
    結論

    ClusterControlと同様に、SaltStackは、展開と運用のタスクを容易にするために使用できる自動化ツールです。自動化ツールを使用すると、エラーが減り、構成時間が短縮され、結果の信頼性が高まります。


    1. ブラウザで実行されているJavaScriptからRedisサーバーに直接接続できますか?

    2. MongoDBでのトランザクションサポート

    3. MongoDBでデータのバージョン管理を実装する方法

    4. Meteor本番データベースへのアクセス