sql >> データベース >  >> RDS >> PostgreSQL

PostgreSQLマルチクラウドクラスターの展開

    マルチクラウド環境はディザスタリカバリプラン(DRP)に適したオプションですが、さまざまなクラウドプロバイダー間の接続を構成する必要があるため、時間のかかる作業になる可能性があります。次に、データベースクラスターを2つの異なる場所にデプロイして管理する必要があります。

    このブログでは、現時点で最も人気のある2つのクラウドプロバイダーであるAWSとGoogleCloudでPostgreSQLのマルチクラウドデプロイを実行する方法を紹介します。このタスクでは、スケーリングやクラスター間レプリケーションなど、ClusterControlが提供できるいくつかの機能を使用します。

    ClusterControlのインストールが実行されており、2つの異なるクラウドプロバイダーアカウントがすでに作成されていることを前提としています。

    クラウド環境の準備

    まず、メインのクラウドプロバイダーで環境を作成する必要があります。この場合、2つのPostgreSQLノードでAWSを使用します:

    ClusterControlサーバーからのSSHおよびPostgreSQLトラフィックが許可されていることを確認してください。セキュリティグループの編集:

    次に、セカンダリクラウドプロバイダーに移動して、少なくとも1つの仮想マシンを作成しますそれがスレーブノードになります。 1つのPostgreSQLノードでGoogleCloudPlatformを使用します。

    また、ClusterControlからのSSHおよびPostgreSQLトラフィックを許可していることを確認してくださいサーバー:

    この場合、ソースに制限のないトラフィックを許可しています、ただし、これは単なる例であり、実際には推奨されていません。

    クラウドにPostgreSQLクラスターをデプロイする

    このタスクにはClusterControlを使用するため、インストールされていることを前提としています。

    ClusterControlサーバーに移動し、[展開]オプションを選択します。すでにPostgreSQLインスタンスを実行している場合は、代わりに「既存のサーバー/データベースのインポート」を選択する必要があります。

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

    この手順の詳細については、ClusterControlのユーザー要件を確認してください。

    SSHアクセス情報を設定した後、データベースユーザーを定義する必要があります。 version、およびdatadir(オプション)。使用するリポジトリを指定することもできます。次のステップでは、作成するクラスターにサーバーを追加する必要があります。

    サーバーを追加するときに、IPまたはホスト名を入力できます。このステップでは、ClusterControlに使用するネットワークに関する制限がないため、セカンダリクラウドプロバイダーに配置されたノードを追加することもできますが、より明確にするために、次のセクションで追加します。ここでの唯一の要件は、ノードへのSSHアクセスが必要です。

    最後のステップで、レプリケーションを同期にするか、同期するかを選択できます。非同期。

    ここにリモートノードを追加する場合は、非同期レプリケーションを使用することが重要です。使用しない場合、クラスターは遅延またはネットワークの問題の影響を受ける可能性があります。

    ClusterControlアクティビティモニターで作成ステータスを監視できます。

    タスクが完了すると、新しいPostgreSQLクラスターがClusterControlのメイン画面。

    クラウドにリモートスレーブノードを追加する

    クラスターを作成したら、ロードバランサーやレプリケーションスレーブノードのデプロイ/インポートなど、いくつかのタスクを実行できます。

    クラスターアクションに移動し、[レプリケーションスレーブの追加]を選択します:

    「新しいレプリケーションスレーブを追加」オプションを使用してみましょう。リモートノードは新規インストールです。そうでない場合は、代わりに[既存のレプリケーションスレーブのインポート]オプションを使用できます。

    ここでは、マスターサーバーを選択するだけで、IPアドレスを入力できます新しいスレーブサーバーとデータベースポート用。次に、ClusterControlにソフトウェアをインストールするかどうか、およびレプリケーションスレーブを同期にするか非同期にするかを選択できます。繰り返しになりますが、別のデータセンターにノードを追加する場合は、ネットワークパフォーマンスに関連する問題を回避するために、非同期レプリケーションを使用する必要があります。

    このようにして、必要な数のレプリカを追加し、ClusterControlで実装できるロードバランサーを使用してそれらの間で読み取りトラフィックを分散できます。

    ClusterControlアクティビティモニターでレプリケーションスレーブの作成を監視できます。

    トポロジビューセクションで最終的なトポロジを確認します。

    クラウドでのクラスター間レプリケーション

    マルチクラウド環境で「レプリケーションスレーブの追加」オプションを使用する代わりに、ClusterControlクラスター間レプリケーション機能を使用してリモートクラスターを追加できます。現時点では、この機能にはPostgreSQLの制限があり、リモートノードを1つだけ持つことができるため、以前の方法と非常によく似ていますが、将来のリリースでその制限を取り除くよう取り組んでいます。

    新しいスレーブクラスターを作成するには、ClusterControl->[クラスター]->[クラスターアクション]->[スレーブクラスターの作成]に移動します。

    スレーブクラスターは、現在のマスタークラスターからデータをストリーミングすることによって作成されます。

    このセクションでは、現在のクラスターのマスターノードを次の場所から選択する必要があります。データが複製されます。

    次の手順に進むときは、ユーザー、キー、またはを指定する必要がありますパスワード、およびSSHでサーバーに接続するためのポート。また、スレーブクラスターの名前と、ClusterControlに対応するソフトウェアと構成をインストールさせる場合も必要です。

    SSHアクセス情報を設定した後、データベースのバージョンを定義する必要があります。 datadir、port、およびadminの資格情報。ストリーミングレプリケーションを使用するため、マスタークラスターで使用されているものと同じデータベースバージョンと資格情報を使用していることを確認してください。使用するリポジトリを指定することもできます。

    このステップでは、新しいスレーブクラスターのサーバーを追加する必要があります。このタスクでは、データベースノードのIPアドレスまたはホスト名の両方を入力できます。

    ClusterControlアクティビティモニターでスレーブクラスターの作成を監視できます。タスクが完了すると、ClusterControlのメイン画面にクラスターが表示されます。

    結論

    これらのClusterControl機能を使用すると、PostgreSQLデータベース(およびさまざまなテクノロジー)のさまざまなクラウドプロバイダー間でレプリケーションをすばやくセットアップし、簡単で使いやすい方法でセットアップを管理できます。クラウドプロバイダー間の通信については、セキュリティ上の理由から、既知のソースからのトラフィックのみを制限する必要があります。つまり、クラウドプロバイダー1からクラウドプロバイダー2へ、またはその逆のトラフィックのみを制限する必要があります。


    1. PSQLスクリプト(bashスクリプトから供給)の変数として外部XMLファイルにアクセスする

    2. docker-composeupの後にPostgresダンプをロードします

    3. テーブル式の基礎、パート10 –ビュー、SELECT *、およびDDLの変更

    4. PostgreSQL 13libpqsslpassword接続パラメータの概要