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.2kaboom、172.17.0.3kaftan、172.17.04kaolin、および172.17.0.5kapokでアクセスできます。 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

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

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

Moving On#

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