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

高可用性のためにMongoDBをデプロイする方法

    はじめに

    MongoDBは、ReplicaSetsを介した高可用性を強力にサポートしています。ただし、ReplicaSetをデプロイするだけでは、本番環境に対応したシステムには不十分です。後者には少し計画が必要です。導入は最初のステップにすぎません。次に、監視、アラート、セキュリティ、異常または障害の検出、自動リカバリ/フェイルオーバー、バックアップ管理、および環境の稼働を維持するためのその他のツールを運用チームに提供する必要があります。

    前提条件

    ClusterControlを使用してMongoDBのデプロイメントを開始する前に、いくつかの準備が必要です。サポートされているプラ​​ットフォームは、RedHat / CentOS 6.x / 7.x、Ubuntu 12.04 / 14.04 / 16.04 LTS、およびDebian 7.x / 8.xです。最小のOSリソース要件は、x86で実行される2GBのRAM、2CPU、および20GBのディスクスペースです。建築。 ClusterControl自体は、オンプレミス、ファイアウォールの背後、またはクラウドVMで実行されている通常のVMまたはベアボーンホストで実行できます。

    さらに、ClusterControlでは、次のサービスで使用されるポートを開く/有効にする必要があります。
    ICMP(エコー応答/要求)
    SSH(デフォルトは22)
    HTTP(デフォルトは80)
    HTTPS(デフォルトは443)
    MySQL(デフォルトは3306)(内部データベース)
    CMON RPC(デフォルトは9500)
    CMON RPC TLS(デフォルトは9501)
    CMONイベント(デフォルトは9510)
    CMON SSH(デフォルトは9511)
    CMON Cloud(デフォルトは9518)

    netcatを介したバックアップ用のストリーミングポート(デフォルトは9999)

    ClusterControlをインストールする最も簡単で便利な方法は、Severeninesが提供するインストールスクリプトを使用することです。スクリプトをダウンロードして、rootユーザーまたはsudoroot権限を持つユーザーとして実行するだけです。サーバーが完全にインターネットにアクセスできない場合など、より手動のアプローチが必要な場合は、ClusterControlのドキュメントに記載されている手順に従うことができます。

    $ wget http://www.severalnines.com/downloads/cmon/install-cc 
    $ chmod +x install-cc
    $ ./install-cc   # as root or sudo user

    インストールウィザードに従って、内部ClusterControlデータベースサーバーとそのクレデンシャル、ClusterControlを使用するためのcmonパスワードなどを設定します。インストールが完了すると、次の行が表示されます。

    Determining network interfaces. This may take a couple of minutes. Do NOT press any key.
    Public/external IP => http://{public_IP}/clustercontrol
    Installation successful. 

    次のステップは、後でパスワードなしのSSHを設定するために使用するSSHキーを生成することです。使用したいキーペアがある場合は、新しいキーペアの作成をスキップできます。

    システム内の任意のユーザーを使用できますが、スーパーユーザー操作(sudoer)を実行する機能が必要です。この例では、rootユーザーを選択しました:

    $ whoami
    root
    $ ssh-keygen -t rsa #generates ssh key

    ClusterControlを介して監視/管理するすべてのノードにパスワードなしのSSHを設定します。この場合、これをスタック内のすべてのノード(ClusterControlノード自体を含む)に設定します。 ClusterControlノードで、次のコマンドを実行してsshキーをコピーし、プロンプトが表示されたらルートパスワードを指定します。

    ssh-copy-id [email protected] # clustercontrol
    ssh-copy-id [email protected]
    ssh-copy-id [email protected]
    ssh-copy-id [email protected]
    ...

    次に、ClusterControlノードで次のコマンドを実行して、機能しているかどうかを確認できます。

    $ ssh [email protected] "ls /root"

    パスワードを入力しなくても、上記のコマンドの結果を確認できることを確認してください。
    インストールが完了すると、

    を介してWebインターフェイスにログインできるようになります。
    https://<your_vm_name>/clustercontrol/#

    最初のログイン後、最初の展開を開始するか、既存のクラスターをインポートするかを選択できるウィンドウが表示されます。

    ClusterControl既存のクラスターをデプロイしてインポートします

    リポジトリの構成

    展開を開始する前に、パッケージ管理システムを見てみましょう。 ClusterControlデプロイメントプロセスは、クラスターインストールのプロセス全体をサポートします。これには、OSの調整とパッケージのダウンロードとインストールが含まれます。データベースノードのインターネットへのアクセスが制限されており、ノードから直接パッケージをダウンロードできない場合は、ClusterControlホストに直接パッケージリポジトリを作成できます。

    ClusterControlパッケージリポジトリ

    ClusterControlでMongoDBパッケージを維持する方法は3つあります。

    ベンダーリポジトリを使用する

    データベースベンダーが推奨するソフトウェアリポジトリを設定して使用することにより、ソフトウェアをインストールします。 ClusterControlは、MongoDBリポジトリに保存されているものの最新バージョンをインストールします。

    ベンダーリポジトリを設定しないでください

    OSにすでに設定されている既存のソフトウェアリポジトリを使用してソフトウェアをインストールします。ユーザーは各データベースノードでソフトウェアリポジトリを手動で設定する必要があり、ClusterControlはこのリポジトリをパッケージの展開に使用します。これは、データベースノードがインターネット接続なしで実行されており、会社にMongoDBパッケージが配置された外部パッケージシステムがある場合に適しています。

    ミラーリポジトリを使用する(新しいリポジトリを作成する)

    現在のベンダーのリポジトリを作成してミラーリングしてから、ローカルのミラーリングされたリポジトリを使用してデプロイします。また、特定のベンダー向けにデータベースクラスターをプロビジョニングするために使用されるソフトウェアパッケージの最新バージョンを「フリーズ」することもできます(つまり、Perconaパッケージのみを使用します)。

    ClusterControlは、内部パッケージリポジトリの作成を自動化します

    レプリカセットのデプロイ

    ClusterControlは、MongoDB3.xReplicaSet用のMongoDB/PerconaServerをサポートしています。新しいクラスターの展開を開始するには、右上隅の展開オプションに移動します。データベースノードをインストールするときは、常にクリーンで最小限のVMを使用してください。必要に応じて、既存のパッケージの依存関係が削除される場合があります。必要なソフトウェアをノードにプロビジョニングするときに、新しいパッケージがインストールされ、既存のパッケージを削除できます。

    展開プロセスの最初のステップは、クラスターを展開しているホストに適切なsshクレデンシャルを提供することです。 ClusterControlはパスワードなしのsshを使用してホストに接続して構成するため、sshキーが必要です。

    ClusterControlはMongoDBクラスターウィザードをデプロイします

    非特権ユーザーアカウントを使用してホストにログインすることをお勧めします。これにより、管理タスクを容易にするためにsudoパスワードを提供できます。ユーザーアカウントがsudoパスワードの入力を求めない場合、これは必要ありません。初期展開の問題を回避するために、ホストでiptablesとAppArmorまたはSELinuxを無効にするオプションもあります。

    次の画面で、MongoDBIncまたはPerconaからMongoDBバイナリをインストールすることを選択できます。ここでも、ユーザーレベルのセキュリティが義務付けられているため、MongoDB管理ユーザーアカウントとパスワードを指定する必要があります。

    ClusterControlはMongoDBウィザード、ReplicaSetをデプロイします

    この画面では、使用されている構成テンプレートも確認できます。 ClusterControlは、構成ファイルテンプレートを使用して、繰り返し可能な展開を保証します。テンプレートはClusterControlホストに保存され、コマンドラインを使用して直接編集することも、ClusterControlUIを介して編集することもできます。必要に応じて、ベンダーリポジトリを使用するか、独自のリポジトリを選択することもできます。さらに、ClusterControlホスト上に新しいリポジトリを自動的に作成できます。これにより、ClusterControlが現在のリリースにデプロイするMongoDBのバージョンをフリーズできます。ここで適切な構成を実行したら、[デプロイ]をクリックして続行します。

    シャーディングを展開する

    ClusterControlは、シャードクラスターをデプロイすることもできます。そのための2つの方法がサポートされています。まず、以下に示すように、既存のMongoDBReplicaSetをシャードクラスターに変換できます。

    ClusterControlMongoDBシャードをデプロイする

    [シャードに変換]をクリックすると、少なくとも1つの構成サーバー(実稼働環境の場合は3つ追加する必要があります)と、「mongos」プロセスとも呼ばれるルーターを追加するように求められます。最終段階では、構成サーバーとルーターのMongoDB構成テンプレート、およびデータディレクトリを選択します。最後に、[デプロイ]をクリックします。完了すると、データベースクラスタービューに表示されます。個々のインスタンスではなく、シャードの状態が表示されます。必要に応じてシャードを追加することもできます。

    シャードに変換

    スケーリングの問題が発生した場合は、セカンダリを追加するか、シャーディングによってスケールアウトすることで、このReplicaSetをスケーリングできます。既存のReplicaSetをシャードクラスターに変換できますが、これは長いプロセスであり、簡単にエラーが発生する可能性があります。 ClusterControlでは、このプロセスを自動化し、構成サーバー、シャードルーターを自動的に追加し、シャーディングを有効にします。

    ReplicaSetをシャードクラスターに変換するには、アクションドロップダウンを使用してトリガーするだけです。

    ClusterControlシャードに変換

    バックアップポリシーをスケジュールする

    データベースのバックアップを維持すること、およびデータベースにバックアップのための優れた簡単なプロセスがあることが不可欠です。 ClusterControlは、MongoDBレプリカセットまたはシャードクラスターの完全に一貫したバックアップと復元をサポートしています。

    バックアップは手動で行うことも、スケジュールすることもできます。バックアップの集中化がサポートされており、バックアップはネットワークにマウントされたディレクトリを含むControllerファイルシステムに保存されるか、事前構成されたクラウドプロバイダーにアップロードされます。現在サポートされているプロバイダーはGoogle Cloud Platform、Amazon Web Services、MicrosoftAzureです。これにより、AmazonとGoogleが提供する高度なライフサイクル管理機能を最大限に活用して、カスタム保存スケジュール、長期アーカイブ、保存時の暗号化などの機能を利用できます。

    バックアップの保持は構成可能です。バックアップを任意の期間保持するか、バックアップを削除しないかを選択できます。 AES256暗号化は、不正な要素からバックアップを保護するために採用されています。

    迅速なリカバリのために、バックアップをバックアップクラスタに直接復元できます。ClusterControlは、起動からクラスタリカバリまでの完全な復元プロセスを処理し、エラーが発生しやすい手動の手順をプロセスから削除します。

    運用レポートを有効にする

    ClusterControlを使用すると、「日次システムレポート」、「パッケージアップグレードレポート」、「スキーマ変更レポート」、「バックアップ」、「可用性」などの環境間レポートをスケジュールできます。これらのレポートは、環境の安全性と運用性を維持するのに役立ちます。また、ギャップを修正する方法に関する推奨事項も表​​示されます。 HTML形式のレポートは、SysOps、DevOps、または特定のシステムの状態に関する定期的なステータス更新を取得したいマネージャーに電子メールで送信できます。

    パフォーマンスアドバイザー

    アドバイザーは、パフォーマンス、セキュリティ、ログ管理、構成、ストレージスペースなどの領域の問題に対処する方法について具体的なアドバイスを提供します。 ClusterControlには、さまざまなメトリックの状態とデータベースの状態を追跡することを目的とした、事前定義されたアドバイザーのリストが付属しています。必要に応じてアラートが作成され、手動スクリプトで拡張できます。詳細については、「ClusterControlPerformanceAdvisorsを使用してデータベースワークロード分析を自動化する方法」に関する最近のブログをフォローしてください。

    さまざまなオペレーティングシステムパフォーマンスアドバイザーの中で、MongoDBに関連する以下を見つけることができます。

    MongoDB シャーディングアドバイザ
    使用される接続
    レプリケーションチェック
    レプリケーションウィンドウ

    クラウドでの展開

    バージョン1.6以降、ClusterControlを使用すると、クラウドにMongoDB3.4レプリカセットを作成できます。サポートされているクラウドプラットフォームは、Amazon AWS、Google Cloud、MicrosoftAzureです。

    ウィザードは、VMマシンの作成とMongoDBの設定をすべて1か所で案内します。

    ClusterControlはMongoDBReplicaSetをクラウドにデプロイします

    このプロセスでは、ネットワーク設定を含むOSパラメータを選択できます。 SSHキーをコピーする必要はありません。SSHキーは自動的に追加されます。ジョブが完了すると、メインダッシュボードにクラスターが表示されます。今後は、ClusterControlで他のクラスターと同じようにMongoDBクラスターを管理できます。

    ClusterControlは、MongoDb RelicaSetをクラウド、VMネットワーク設定にデプロイします

    セキュリティのヒント

    この時点で、新しいクラスターが稼働しているはずです。ユーザーとアプリケーションプロセスにデータへのアクセスを許可する前に、クラスターのセキュリティ設定を定義する必要があります。以前のブログでは、デフォルトのセキュリティ構成について懸念を表明しました。新しいクラスターを他のチームに渡す前に考慮する必要がある主な事項のいくつかを次に示します。

    デフォルトのポートを変更する -デフォルトでは、MongoDBは標準ポートにバインドします:MongoDBレプリカセットまたはシャードルーターの場合は27017、シャードの場合は27018、構成サーバーの場合は27019。標準のポートを使用すると、ハッカーの攻撃の可能性が単純化されるため、お勧めしません。

    認証を有効にする -認証なしで、ユーザーはパスワードなしでログインできます。すべての環境(開発、認証、本番)で認証を有効にします。

    security:
        Authentication: on

    強力なパスワードを使用する -必要に応じて、パスワードジェネレータを使用して複雑なパスワードを生成します。

    レプリカトンキーファイルを追加 -キーファイルを有効にすると、レプリケーションストリームの認証が暗号化されます。

    バックアップを暗号化する --ClusterControlを使用すると、バックアップを暗号化できます。

    詳細については、MongoDBを保護する方法に関するブログがあります。

    クラスター自動回復を有効にする

    有効にする最後の機能は、ノードとクラスターの自動回復です。

    ClusterControlは、24時間年中無休のDBAチームメンバーとして機能します。ここには2つの主要な機能があります。自動ノードリカバリと自動クラスタリカバリ。

    ノードの自動回復が有効になっている場合、ClusterControlはノードの問題に対応し、障害が発生した場合は、個々のノードの回復を試みます。これは、サービスのダウンで問題を引き起こしているものが何であれ、停電後に開始する必要があるメモリやサービスを実行するプロセスなどに対処するためです。

    クラスタリカバリオプションはさらに洗練されています。必要に応じて切り替えを実行します。

    その場合、スレーブに複製されない変更をロールバックすると、「ロールバック」フォルダーに配置されるため、復元するのは管理者の責任です。

    ノードとクラスターの自動回復を設定するには、メインダッシュボードでそれらを有効にする必要があります。


    1. MongoDBからDynamoDBへの移行、パート1

    2. MongoDBはサーバーを起動できません:デフォルトのストレージエンジン「wiredTiger」は、このビルドのmongodでは使用できません

    3. マングースで外部キー関係を作成する

    4. MongoDB $ toDecimal