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

ClusterControlを使用したMongoDB4.0の監視と運用管理

    MongoDBは成熟を達成するためにほぼ10年を費やしましたが(2009年2月の初期リリース)、このテクノロジーは、従来のリレーショナルデータベース(RDBMS)環境で経験した人々にとっては少し謎です。深い知識がなくてもNoSQLを既存の環境に統合するのは難しい場合があります。 MongoDBがMySQLまたは別のRDBMSデータベースに沿って実行されているのを見るのは珍しいことではありません。

    RDBMSの経験は、いくつかのプロセスを理解するのに役立つ場合がありますが、専門知識をNoSQLの世界に変換する方法を知る必要があります。本番環境の管理には、展開、稼働時間とパフォーマンスの監視、システムセキュリティの維持、HAの管理、バックアップなどの手順が含まれます。 RDBMSとNoSQLはどちらも実行可能なオプションですが、MongoDBを実装または管理する際にユーザーが留意しなければならない、2つの間に特定の重大な違いがあります。テクノロジーは急速に変化しており、迅速に適応する必要があります。

    MongoDBが突然あなたの責任になったとき、管理ツールはあなたが管理するMongoDBデータベースが安定していて安全であることを保証します。事前定義されたプロセスと自動化を使用すると、時間を節約できるだけでなく、よくある間違いから保護することもできます。データベースライフサイクルのさまざまな側面すべてに体系的に対処する管理プラットフォームは、多数のポイントソリューションにパッチを適用するよりも堅牢になります。

    ClusterControlの中心となるのは、新しいデータベースの展開、新しいノードの追加とスケーリング、バックアップの管理、高可用性とフェイルオーバー、トポロジの変更、アップグレードなど、定期的に実行する必要のあるデータベースタスクを自動化できる自動化機能です。 ClusterControlは、プログラムされたセキュリティを提供し、データベースインフラストラクチャの整合性を維持します。さらに、ClusterControlを使用すると、MongoDBユーザーはベンダーロックインの対象ではなくなります。最近多くの人から質問されたもの。さまざまなMongoDBバージョンとベンダーを単一のコンソールから無料でデプロイおよびインポートできます。 MongoDBのユーザーは、要件を達成するためにツールと自家製のスクリプトを組み合わせて使用​​する必要があることがよくあります。これらを1つの製品に組み合わせて見つけることができることを知っておくとよいでしょう。

    この記事では、MongoDB4.0を自動化された方法でデプロイおよび管理する方法を紹介します。方法は次のとおりです:

    • ClusterControlのインストール
    • MongoDBデプロイメントプロセス
      • 新しいクラスターを展開する
      • 既存のクラスターをインポートする
    • MongoDBのスケーリング
      • 読み取りスケーリング(replicaSet)
      • 書き込みスケーリング(シャーディング)
    • MongoDBの保護
    • 監視と傾向分析
    • バックアップとリカバリ

    ClusterControlのインストール

    ClusterControlを開始するには、専用の仮想マシンまたはホストが必要です。ここでは、VMとサポートされているシステムの要件について説明します。ベースVMは、オンプレミスまたはクラウドのいずれかで、2 GB、2コア、ディスクスペース20GBのストレージスペースから開始できます。

    インストールはドキュメントで詳しく説明されていますが、基本的には、ウィザードをガイドするインストールスクリプトのダウンロードになります。ウィザードスクリプトは、内部データベースをセットアップし、必要なパッケージ、リポジトリをインストールし、その他の必要な調整を行います。インターネットロック環境の場合は、オフラインインストールプロセスを使用できます。

    ClusterControlには、データベースホストへのSSHアクセスが必要であり、監視はエージェントベースまたはエージェントレスにすることができます。管理はエージェントレスです。

    すべてのターゲットノード(ClusterControlおよびすべてのデータベースホスト)にパスワードなしのSSHを設定するには、ClusterControlサーバーで次のコマンドを実行する必要があります。

    $ ssh-keygen -t rsa # press enter on all prompts
    $ ssh-copy-id -i ~/.ssh/id_rsa [ClusterControl IP address]
    $ ssh-copy-id -i ~/.ssh/id_rsa [Database nodes IP address] # repeat this to all target database nodes

    MongoDBのデプロイとスケーリング

    新しいMongoDB4.0クラスターをデプロイする

    ClusterControlインターフェースに入ると、最初に行うことは、新しいクラスターをデプロイするか、既存のクラスターをインポートすることです。新しいバージョン1.7.1では、バージョン4.0のサポートが導入されています。 SSL接続をサポートするMongoDBv4.0をデプロイ/インポートおよび管理できるようになりました。

    「データベースクラスターのデプロイ」オプションを選択し、表示される指示に従います。

    ClusterControl Deploy Database Cluster

    MongoDBを選択するときは、SSHでサーバーに接続するために、ユーザー、キー、またはパスワードとポートを指定する必要があります。新しいクラスターの名前と、ClusterControlに対応するソフトウェアと構成をインストールさせる場合にも必要です。

    SSHアクセス情報を設定した後、データベースにアクセスするためのデータを入力する必要があります。使用するリポジトリを指定することもできます。リポジトリの構成は、データベースサーバーとクラスターにとって重要な側面です。 ClusterControlを使用してデータベースサーバー/クラスターをデプロイする場合、3種類のリポジトリを使用できます。

    • ベンダーリポジトリを使用する
      データベースベンダーの優先ソフトウェアリポジトリを設定して使用することにより、ソフトウェアをプロビジョニングします。 ClusterControlは、データベースベンダーリポジトリによって提供されるものの最新バージョンをインストールします。
    • ベンダーリポジトリを設定しないでください
      ノードにすでに設定されている既存のソフトウェアリポジトリを使用してソフトウェアをプロビジョニングします。ユーザーは各データベースノードでソフトウェアリポジトリを手動で設定する必要があり、ClusterControlはこのリポジトリを使用してデプロイします。これは、データベースノードがインターネットに接続せずに実行されている場合に適しています。
    • ミラー化されたリポジトリを使用する(新しいリポジトリを作成する)
      現在のデータベースベンダーのリポジトリを作成してミラーリングしてから、ローカルのミラー化されたリポジトリを使用してデプロイします。これにより、ソフトウェアパッケージの現在のバージョンを「フリーズ」することができます。

    次のステップでは、作成するクラスターにサーバーを追加する必要があります。サーバーを追加するときに、IPまたはホスト名を入力できます。後者の場合、DNSサーバーが必要であるか、MongoDBサーバーをClusterControlのローカル解決ファイル(/ etc / hosts)に追加して、追加する対応する名前を解決できるようにする必要があります。この例では、1つのプライマリと2つのセカンダリの3つのサーバーでReplicaSetをデプロイします。 (アービターなしで)2つのMongoDBノードのみをデプロイすることが可能です。 2ノードのセットアップはスプリットブレインに対して脆弱であるため、このアプローチの注意点は自動フェイルオーバーではありません。プライマリノードがダウンした場合、他のサーバーをプライマリにするために手動フェイルオーバーが必要です。自動フェイルオーバーは、3ノード以上で正常に機能します。レプリカセットには、奇数の投票メンバーを含めることをお勧めします。レプリカセットのフォールトトレランスは、使用できなくなり、プライマリを選択するのに十分な数のメンバーをセットに残すことができるメンバーの数です。 3つのメンバーのフォールトトレランスは1つ、5つは2つなどです。

    同じページで、さまざまなMongoDBバージョンから選択できます:

    ClusteControlDeployMongoDBバージョン4.0

    すべてが設定されたら、デプロイボタンを押します。 ClusterControlアクティビティモニターから、新しいクラスターの作成ステータスを監視できます。タスクが完了すると、ClusterControlのメイン画面とトポロジビューにクラスターが表示されます。

    ClusterControlトポロジビュー

    画像でわかるように、クラスターを作成したら、レプリカセットをシャードに変換したり、クラスターにノードを追加したりするなど、いくつかのタスクを実行できます。

    ClusterControl Scaling

    新しいクラスターをインポートする

    ClusterControlにインポートすることにより、既存のクラスターを管理するオプションもあります。このような環境は、ClusterControlまたはDockerインストールなどの他の方法で作成できます。

    ClusterControl import MongoDB

    まず、サーバーへのSSHアクセスクレデンシャルを入力する必要があります。次に、データベース、サーバーデータディレクトリ、およびバージョンへのアクセス資格情報を入力します。デプロイするときと同じように、IPまたはホスト名でノードを追加し、[インポート]を押し​​ます。タスクが完了すると、ClusterControlからクラスターを管理する準備が整います。

    MongoDBのスケーリング

    MongoDBの基礎の1つは、高可用性とスケーリングを念頭に置いて構築されていることです。スケーリングは、サーバーにリソースを追加して垂直方向に実行することも、ノードを追加して水平方向に実行することもできます。水平スケーリングはMongoDBが得意とするところであり、ワークロードを複数のマシンに分散するだけです。実際、より高価な高性能サーバーにアップグレードするのではなく、複数の低コストのコモディティハードウェアボックスを利用しています。 MongoDBは、読み取りと書き込みの両方のスケーリングを提供します。これら2つの戦略の違いを明らかにします。読み取りスケーリングと書き込みスケーリングのどちらを選択するかは、アプリケーションのワークロードによって異なります。アプリケーションがデータを書き込むよりも頻繁に読み取る傾向がある場合は、MongoDBの読み取りスケーリング機能を利用することをお勧めします。

    ClusterControlを使用すると、クラスターにサーバーを追加するのは簡単なステップです。 GUIまたはCLIからそれを行うことができます。上級ユーザーの場合は、ClusterControl Developer Studioを使用して、クラスターを水平方向に拡張するためのリソースベース条件を記述できます。

    MongoDB ReplicaSet

    シャーディング

    MongoDBシャーディングソリューションは、他の主要なデータベースソリューションの既存のシャーディングフレームワークに似ています。これは、シャーディングがシャードキーで定義され、範囲が構成データベース内に格納される、一般的なルックアップソリューションを利用します。 MongoDBは、3つのコンポーネントと連携して、データに適したシャードを見つけます。典型的なシャーディングされたMongoDB環境は次のようになります:

    MongoDBシャーディング

    使用される最初のコンポーネントは、mongosと呼ばれるシャードルーターです。すべての読み取りおよび書き込み操作をシャードルーターに送信する必要があります。これにより、すべてのシャードがクライアントアプリケーションの単一のデータベースとして機能します。シャードルーターは、Configserverを参照して、クエリを適切なシャードにルーティングします。

    ClusterControlをシャードに変換

    シャード管理はMongoDBでは本当に簡単です。オンラインでシャードを追加および削除すると、MongoDBシャードルーターが指示どおりに自動的に調整されます。シャードを管理する最善の方法についてさらに詳しく知りたい場合は、MongoDBシャードの管理に関するブログ投稿をお読みください。

    MongoDBの保護

    関連リソースMongoDBのClusterControlClusterControlを使用したMongoDBの自動化と管理

    MongoDBには、すぐに使用できるセキュリティはほとんどありません。たとえば、認証はデフォルトで無効になっています。言い換えると、デフォルトでは、誰もが任意のデータベースに対するルート権限を持っています。リスクを軽減するためにMongoDBが適用した変更の1つは、デフォルトのバインディングを127.0.0.1に変更することでした。これにより、外部IPアドレスにバインドされるのを防ぎますが、当然、これは、インストールするほとんどの人によって元に戻されます。 ClusterControlは人為的エラーを取り除き、一連のセキュリティ機能へのアクセスを提供して、データベースをハッキングやその他の脅威から自動的に保護します。以前、セキュリティのヒントを含む短い動画を公開しました。

    ClusterControlの新しいバージョンは、MongoDB接続のSSLサポートを提供します。 SSLを有効にすると、アプリケーション(ClusterControlを含む)とデータベース間の通信に別のレベルのセキュリティが追加されます。 MongoDBクライアントは、データベースサーバーへの暗号化された接続を開き、機密情報を転送する前にそれらのサーバーのIDを確認します。

    SSL接続を有効にするには、最新のs9sクライアントを使用する必要があります。でインストールできます

    wget http://repo.severalnines.com/s9s-tools/install-s9s-tools.sh
    chmod 755 install-s9s-tools.sh
    ./install-s9s-tools.sh

    または、ここで説明されている他の可能なインストール方法に従ってください。

    s9sツール(最小バージョン1.7-93.1)をインストールしたら、-enable-sslフラグを使用してSSL接続を有効にできます。

    以下の例:

    [[email protected] ~]# s9s cluster --cluster-id=3 --enable-ssl --log
    This is an RPC V2 job (a job created through RPC V2).
    The job owner is 'admin'.
    Accessing '/.runtime/jobs/jobExecutor' to execute...
    Access ok.
    Stopping the cluster
    node1:27017: Node is already stopped by the user.
    node2:27017: Node is already stopped by the user.
    node3:27017: Node is already stopped by the user.
    Checking/generating (expire 1000 days) server and CA certificate.
    node1:27017: setting up SSL as required way of connection.
    Using certificate 'mongodb/cluster_3/server'
    node1:27017: installed /etc/ssl/mongodb/cluster_3/server.crt, /etc/ssl/mongodb/cluster_3/server.key and /etc/ssl/mongodb/cluster_3/server_ca.crt
    node1:27017: Deploying client certificate 'mongodb/cluster_3/client'
    Writing file 'node1:/etc/mongod.conf'.
    node1:27017: /etc/mongod.conf [mongod] set: ssl_cert, ssl_key and ssl_ca values.
    node2:27017: setting up SSL as required way of connection.
    Using certificate 'mongodb/cluster_3/server'
    node2:27017: installed /etc/ssl/mongodb/cluster_3/server.crt, /etc/ssl/mongodb/cluster_3/server.key and /etc/ssl/mongodb/cluster_3/server_ca.crt
    node2:27017: Deploying client certificate 'mongodb/cluster_3/client'
    Writing file 'node2:/etc/mongod.conf'.
    node2:27017: /etc/mongod.conf [mongod] set: ssl_cert, ssl_key and ssl_ca values.
    node3:27017: setting up SSL as required way of connection.
    Using certificate 'mongodb/cluster_3/server'
    node3:27017: installed /etc/ssl/mongodb/cluster_3/server.crt, /etc/ssl/mongodb/cluster_3/server.key and /etc/ssl/mongodb/cluster_3/server_ca.crt
    node3:27017: Deploying client certificate 'mongodb/cluster_3/client'
    Writing file 'node3:/etc/mongod.conf'.
    node3:27017: /etc/mongod.conf [mongod] set: ssl_cert, ssl_key and ssl_ca values.
    Starting the cluster
    node3:27017: Doing some preparation for starting the node.
    node3:27017: Disable transparent huge page and its defrag according to mongo suggestions.
    node3:27017: Checking file permissions and ownership.
    node3:27017: Starting mongod MongoDb server with command:
    ulimit -u 32000 -n 32000 &&  runuser -s /bin/bash mongod '-c mongod -f /etc/mongod.conf'
    node3:27017: Verifing that 'mongod' process is started.
    SSL setup done.

    ClusterControlは、すべてのクラスターノードでの証明書の作成を含むすべての必要な手順を実行します。このような証明書は、後で[キー管理]タブで管理できます。

    ClusterControlキー管理

    監視

    データベースシステムを使用する場合は、それらを監視できる必要があります。これにより、傾向を特定したり、アップグレードや改善を計画したり、発生する可能性のある問題やエラーに効果的に対応したりできます。

    ClusterControlMongoDBの概要

    新しいClusterControl1.7.1は、MongoDBベースの高解像度モニタリングを追加します。 PromQLクエリ言語のデータストアとしてPrometheusを使用しています。ダッシュボードのリストには、MongoDBサーバー、MongoDB ReplicaSet、システム概要、およびクラスター概要ダッシュボードが含まれます。 ClusterControlは、Prometheusエージェントをインストールし、メトリックを構成し、GUIを介してPrometheusエクスポーター構成へのアクセスを維持するため、エクスポーター(Prometheus)のコレクターフラグなどのパラメーター構成をより適切に管理できます。最近監視できるものについては、PrometheusとClusterControlを使用してMongoDBを監視する方法の記事で詳しく説明しました。

    ClusterControlMongoDBSCUMMダッシュボード

    警告

    データベースオペレーターとして、データベースで重大な問題が発生した場合は常に通知を受ける必要があります。アラートを取得するためのClusterControlの3つの主な方法は次のとおりです。

    • メール通知
    • 統合
    • アドバイザー

    メール通知はユーザーレベルで設定できます。 [設定]>[メール通知]に移動します。重要度と送信するアラートの種類のどちらかを選択できる場所。

    次の方法は、統合サービスを使用することです。これは、特定のカテゴリのイベントをServiceNowチケット、Slack、PagerDutyなどの他のサービスに渡して、組織内で高度な通知方法と統合を作成できるようにするためのものです。

    ClusterControl Integration Services

    最後の1つは、インテリジェントなチェックとトリガーを構築できるAdvisorセクションに高度なメトリック分析を含めることです。ここでの例としては、ワークロードがプリセットレベルに達したときにノードを追加することによる、ディスクスペース使用量の予測やクラスターのスケーリングなどがあります。

    MongoDBのClusterControlアドバイザ

    バックアップとリカバリ

    これで、MongoDBレプリカセットアップがセットアップされて実行され、監視が適切に行われたので、次のステップであるデータのバックアップがあることを確認します。

    ClusterControlバックアップポリシーの作成

    ClusterControlは、MongoDBバックアップ管理用のインターフェースを提供し、スケジューリングとクリエイティブレポートをサポートします。バックアップ方法には2つのオプションがあります。

    • モンゴダンプ
    • Mongodbの一貫したバックアップ

    Mongodumpは、すべてのデータをBinary JSON(BSON)形式で指定された場所にダンプします。 Mongorestoreは、後でBSONファイルを使用してデータベースを復元できます。 ClusterControl MongoDBの一貫性のあるバックアップには、バックアップの作成中に実行されていたoplogからのトランザクションが含まれます。

    ClusterControlバックアップ暗号化

    優れたバックアップ戦略は、データベース管理システムの重要な部分です。 ClusterControlは、バックアップとリカバリ/復元のための多くのオプションを提供します。

    ClusterControlバックアップスケジュール制御

    ClusterControlのバックアップ保持は構成可能です。バックアップを任意の期間保持するか、バックアップを削除しないかを選択できます。 AES256暗号化は、不正な要素からバックアップを保護するために採用されています。迅速なリカバリのために、バックアップをバックアップクラスタに直接復元できます。ClusterControlは、起動からクラスタリカバリまでの完全な復元プロセスを処理し、エラーが発生しやすい手動の手順をプロセスから削除します。


    1. MongoDB $ project:以前のパイプラインフィールドを保持します

    2. Mongodb-条件付きの場合は集約$push

    3. mongodbのc++ドライバーを使用してプログラムを作成するにはどうすればよいですか?

    4. データ構造が増大するMongoDBのパフォーマンス