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

MongoDBデータベースデプロイメントの自動化

    組織は、クラウドのインフラストラクチャを利用しています。これは、インフラストラクチャが速度、柔軟性、およびスケーラビリティを提供するためです。クリックするだけで新しいデータベースインスタンスを起動でき、準備が整うまでに数分かかると想像できます。また、オンプレミス環境と比較した場合よりも速くアプリケーションをデプロイできます。

    MongoDB独自のクラウドサービスを使用している場合を除き、主要なクラウドプロバイダーはマネージドMongoDBサービスを提供していないため、単一のインスタンスまたはクラスターをデプロイするためのワンクリック操作ではありません。一般的な方法は、VMを起動して、それらをこれらにデプロイすることです。デプロイメントはAからZまで処理する必要があります。インスタンスを準備し、データベースソフトウェアをインストールし、いくつかの構成を調整して、インスタンスを保護する必要があります。これらのタスクは不可欠ですが、常に適切に実行されるとは限りません。悲惨な結果を招く可能性があります。

    自動化は、インストール、構成、強化からデータベースサービスの準備が整うまでのすべてのタスクを確実にする上で重要な役割を果たします。このブログでは、MongoDBのデプロイの自動化について説明します。

    ソフトウェアオーケストレーター

    エンジニアがインフラストラクチャを展開および管理するのに役立つ、多くの新しいソフトウェアツールがあります。構成管理は、エンジニアがより迅速かつ効果的に展開するのに役立ち、新しいサービスの展開時間を短縮します。人気のあるオプションには、Ansible、Saltstack、Chef、Puppetなどがあります。すべての製品には長所と短所がありますが、それらはすべて非常にうまく機能し、非常に人気があります。 MongoDBReplicaSetやShardedClusterのようなステートフルサービスのデプロイは、これらがマルチサーバーセットアップであり、ツールがインクリメンタルおよびクロスノード調整を十分にサポートしていないため、少し難しい場合があります。展開手順では通常、特定の順序でタスクを実行して、ノード間でオーケストレーションを行う必要があります。

    自動化するMongoDBデプロイメントタスク

    MongoDBサーバーのデプロイには、いくつかのことが含まれます。 MongoDBリポジトリをローカルに追加し、MongoDBパッケージをインストールし、ポート、ユーザー名を構成して、サービスを開始します。

    タスク:MongoDBをインストールする

    - name: install mongoDB
      apt: 
        name: mongodb
        state: present
        update_cache: yes

    タスク:構成ファイルからmongod.confをコピーします。

    - name: copy config file
      copy:
        src: mongodb.conf
        dest: /etc/mongodb.conf
        owner: root
        group: root
        mode: 0644
      notify:
        - restart mongodb

    タスク:MongoDB制限構成を作成します:

    - name: create /etc/security/limits.d/mongodb.conf
      copy:
        src: security-mongodb.conf
        dest: /etc/security/limits.d/mongodb.conf
        owner: root
        group: root
        mode: 0644
      notify:
        - restart mongodb

    タスク:swappinessの構成

    - name: config vm.swappiness
      sysctl:
        name: vm.swappiness
        value: '10'
        state: present

    タスク:TCPキープアライブ時間を構成する

    - name: config net.ipv4.tcp_keepalive_time
      sysctl:
        name: net.ipv4.tcp_keepalive_time
        value: '120'
        state: present

    タスク:MongoDBが自動的に起動することを確認します

    - name: Ensure mongodb is running and and start automatically on reboots
      systemd:
        name: mongodb
        enabled: yes
        state: started

    これらすべてのタスクを1つのプレイブックに結合し、プレイブックを実行して展開を自動化できます。コンソールからAnsibleプレイブックを実行する場合:

    $ ansible-playbook -b mongoInstall.yml

    Ansibleスクリプトからデプロイの進行状況が表示されます。出力は、次のようになります。

    PLAY [ansible-mongo] **********************************************************
    
    GATHERING FACTS ***************************************************************
    ok: [10.10.10.11]
    
    TASK: [install mongoDB] *******************************************************
    ok: [10.10.10.11]
    
    TASK: [copy config file] ******************************************************
    ok: [10.10.10.11]
    
    TASK: [create /etc/security/limits.d/mongodb.conf]*****************************
    ok: [10.10.10.11]
    
    
    TASK: [config vm.swappiness] **************************************************
    ok: [10.10.10.11]
    
    TASK: [config net.ipv4.tcp_keepalive_time]*************************************
    ok: [10.10.10.11]
    
    TASK: [config vm.swappiness] **********************************************
    ok: [10.10.10.11]
    
    PLAY RECAP ********************************************************************
    [10.10.10.11]          : ok=6    changed=1    unreachable=0    failed=0

    デプロイ後、ターゲットサーバー上のMongoDBサービスを確認できます。

    ClusterControlGUIを使用したMongoDBのデプロイの自動化

    ClusterControlを使用してMongoDBをデプロイする方法は2つあります。 ClusterControlのダッシュボードから使用できます。これはGUIベースであり、MongoDBの新しいデプロイのための新しいジョブをトリガーするまで2つのダイアログが必要です。

    まず、SSHユーザーとパスワードを入力し、次に示すようにクラスター名を入力する必要があります。

    次に、MongoDBのベンダーとバージョンを選択し、ユーザーを定義して、パスワード、最後はターゲットIPアドレスを入力する

    s9sCLIを使用したMongoDBのデプロイ自動化

    コマンドラインインターフェイスから、s9sツールを使用できます。 s9sを使用したMongoDBのデプロイは、以下のように1行のコマンドです。

    $ s9s cluster --create --cluster-type=mongodb --nodes="10.10.10.15"  --vendor=percona --provider-version=4.2 --db-admin-passwd="12qwaszx" --os-user=vagrant --cluster-name="MongoDB" --wait
    Create Mongo Cluster
    / Job 183 FINISHED   [██████████] 100% Job finished.


    したがって、ReplicaSetであろうとSharded Clusterであろうと、MongoDBのデプロイは非常に簡単で、ClusterControlによって完全に自動化されています。


    1. 特定のフィールドに基づいて配列内の一意のアイテムを確保する方法-mongoDB?

    2. ビッグデータHadoopでのHDFSイレイジャーコーディング

    3. MongoDB $ cosh

    4. MongoDBでObjectIDの代わりにUUIDを使用する