Connecting to your database

アプリケーションを接続するか、新しいEDB Postgres分散クラスターにリモート接続する手順には、次のものが含まれます。

*資格情報を取得し、オプションで.pgpass ファイルを作成する

*接続したいPGDプロキシホストのIPアドレスの確立

*そのIPアドレスに接続できることを確認する

*適切なPostgresクライアントの取得

*クライアントをクラスターに接続する

資格情報の取得

デフォルトユーザーenterprisedbは、tpaexecによってクラスターに作成されました。また、プロビジョニングの一環として、そのユーザーのパスワードを生成しました。パスワードを取得するには、次を実行します。

tpaexec show-password democluster enterprisedb

このコマンドは、enterprisedbユーザーのパスワードである文字列を返します。必要に応じて、パスワードの入力を求められたときにその文字列を使用できます。

.pgpassファイルの作成

ホームディレクトリに a `.pgpass file <Monitoring through SQL>` を作成することにより、 psql および他のPostgresクライアントのパスワードの入力を避けることができます。これには、アプリケーションが接続時に検索できるパスワードの詳細が含まれています。パスワードを取得した後(

資格情報の取得 を参照)、お好みのエディターを使用して.pgpass

ファイルを開くことができます。

ファイルに、次のように入力します。

*:* :bdrdb:enterprisedb:<your password>

ファイルを保存してエディターを終了します。ファイルを保護するには、次のコマンドを実行します。このコマンドは、あなただけに読み取りおよび書き込みアクセスを与えます。

chmod 0600 ~/.pgpass

IPアドレスの確立

Docker

Dockerクイックスタートクラスターは、デフォルトで、IPアドレス172.17.0.2(kaboom)、172.17.0.3(kaftan)、172.17.04(kaolin)、および172.17.0.5(kapok)でアクセスできます。 Dockerはこれらのアドレスを生成します。

AWS

democluster/ssh_config のIPアドレスを参照できます。または、次を実行します。

aws ec2 --region eu-west-1 describe-instances --query Reservations[ *].Instances[* ].{PublicIpAddress:PublicIpAddress,Name:Tags[?Key==`Name`]|[0].Value}
__OUTPUT__
[
    [
        {
            "PublicIpAddress": "54.217.130.13",
            "Name": "kapok"
        }
    ],
    [
        {
            "PublicIpAddress": "54.170.119.101",
            "Name": "kaolin"
        }
    ],
    [
        {
            "PublicIpAddress": "3.250.235.130",
            "Name": "kaftan"
        }
    ],
    [
        {
            "PublicIpAddress": "34.247.188.211",
            "Name": "kaboom"
        }
    ]
]

このコマンドは、クラスターインスタンスのEC2のパブリックIPアドレスのリストを表示します。

Linuxホスト

クイックスタートでクラスターを構成したときに、LinuxサーバーのIPアドレスを設定します。それらのアドレスを使用します。

IPアドレスに接続できることを確認します

LinuxホストとDocker

これらを接続するために構成を実行する必要はありません。

AWS

AWSは、SSHエンドポイントへの外部アクセスのみを許可するように構成されています。 PostgresクライアントがAWSクラウドの外部から接続できるようにするには、ポート6432でのトラフィックの転送を有効にする必要があります。

独自の外部IPアドレスまたはクラスターに接続するシステムの外部IPアドレスを取得します。これを行う1つの方法は、次を実行することです。

curl https://checkip.amazonaws.com
__OUTPUT__
89.97.100.108

クラスターのセキュリティグループIDも必要です。実行:

aws ec2 --region eu-west-1 describe-security-groups --filter Name=group-name,Values=" *democluster* " | grep GroupId
__OUTPUT__
            "GroupId": "sg-072f996360ba20d5c",

構成時に設定した、クラスターの正しいリージョンを入力します。

aws ec2 authorize-security-group-ingress --group-id <SECURITYGROUPID> --protocol tcp --port 6432 --cidr <YOURIP>/32 --region eu-west-1

繰り返しますが、クラスターの正しいリージョンに配置していることを確認してください。

このコマンドの詳細については、AWS CLIガイドの Add rules to your security group をご覧ください。

適切なPostgresクライアントの取得

ローカルシステムにPostgresをインストールしていない限り、データベースクラスターに接続するには、おそらくpsql などのクライアントアプリケーションをインストールする必要があります。

たとえば、Ubuntuでは、次を実行できます。

sudo apt install postgresql-client

このコマンドは、 psql を他のいくつかのツールとともにインストールしますが、Postgresデータベースをローカルにインストールせずに。

クライアントをクラスターに接続する

psql または同様のクライアントをインストールした後、クラスターに接続できます。実行:

  psql -h <ipaddressofnode> -p 6432 -U enterprisedb bdrdb
  __OUTPUT__
  psql (15.2, server 15.2.0 (Debian 15.2.0-2.buster))
  SSL connection (protocol: TLSv1.3, cipher: TLS_AES_256_GCM_SHA384, bits: 256, compression: off)
  Type "help" for help.

  bdrdb=#

:ref:`Use the `.pgpass` file <#creating-a-pgpass-file>` をサポートするクライアントで使用するか、ホスト、ポート、ユーザー、パスワード、およびデータベース名を使用して他のアプリケーションと接続します。

プロキシフェールオーバーを使用してクライアントをクラスターに接続する

プロキシのすべてのアドレスをホストとしてリストすることにより、プロキシに障害が発生した場合、クライアントが常にフェールオーバーし、最初に使用可能なプロキシに接続することを保証できます。

psql -h <ipaddressofnode1>,<ipaddressofnode2>,<ipaddressofnode3> -U enterprisedb -p 6432 bdrdb
__OUTPUT__
psql (15.2, server 15.2.0 (Debian 15.2.0-2.buster))
SSL connection (protocol: TLSv1.3, cipher: TLS_AES_256_GCM_SHA384, bits: 256, compression: off)
Type "help" for help.

bdrdb=#

接続URLの作成

多くのアプリケーションは、 Connection URL を使用してデータベースに接続します。接続URLを作成するには、次の形式の文字列を組み立てる必要があります。

postgresql://<user>@<ipaddressofnode1>:6432,<ipaddressofnode2>:6432,<ipaddressofnode3>:6432/bdrdb

この文字列形式は psql コマンドで使用できるため、データベースノードがIPアドレス192.168.9.10、192.168.10.10、および192.168.10.11にある場合、次を使用できます。

psql postgresql://enterprisedb@192.168.9.10:6432,192.168.10.10:6432,192.168.11.10:6432/bdrdb

作成したURLにパスワードを埋め込むこともできます。 enterprisedbユーザーを使用していて、enterprisedbユーザーのパスワードがnotasecret の場合、URLは次のようになります。

psql postgresql://enterprisedb:notasecret@192.168.9.10:6432,192.168.10.10:6432,192.168.11.10:6432/bdrdb

実際のパスワードはそれよりも複雑で、特殊文字が含まれている場合があります。パスワードをurlencodeして、使用しているシェル、コマンド、またはドライバーをトリップしないようにする必要があります。

Java接続URLの作成

最後に、作成したURLは多くのPostgresアプリケーションとクライアントで問題ありませんが、Javaベースのものでは、Javaが適切なドライバーを呼び出せるように1つの変更が必要です。 URLの前にjdbc: を付けて、Java互換のURLを作成します。

jdbc:postgresql://enterprisedb@192.168.9.10:6432,192.168.10.10:6432,192.168.11.10:6432/bdrdb

移動

これで、必要なすべての接続資格情報とURLを使用して、アプリケーションをクラスターに接続する準備が整いました。