このページでは、構成済みの Virtual Private Cloud(VPC)の外部から AlloyDB for PostgreSQL クラスタに接続する方法について説明します。ここでは、AlloyDB クラスタを作成していることを前提としています。
外部接続について
AlloyDB クラスタは、Google Cloud VPC 内の複数のノードで構成されます。クラスタを作成する際、使用している VPC の 1 つと、新しいクラスタを含む Google マネージド VPC との間で、プライベート サービス アクセスを構成します。このピアリング接続により、プライベート IP アドレスを使用して、自分の VPC の一部であるかのようにクラスタの VPC 上のリソースにアクセスできます。
アプリケーションが、接続された VPC の外部からクラスタに接続する必要がある場合があります。たとえば、次のような状況です。
アプリケーションが、プライベート サービス アクセスを介してクラスタに接続している VPC の外部にある Google Cloud エコシステム内の別の場所で実行されている。
Google ネットワーク外部の VPC でアプリケーションが実行されている。
アプリケーションがオンプレミスで実行され、公共のインターネット上の別の場所にあるマシンで実行されている。
いずれの場合も、AlloyDB クラスタに対するこのような外部接続を有効にするには、追加のサービスを設定する必要があります。
外部接続ソリューションの概要
外部接続には、ニーズに応じて次の一般的なソリューションを使用することをおすすめします。
プロジェクト開発やプロトタイピング、または比較的低コストの本番環境の場合は、中間仮想マシン(VM)(「踏み台」とも呼ばれます)を VPC 内に設定します。この中間 VM を外部アプリケーション環境と AlloyDB クラスタ間の安全な接続として使用するには、さまざまな方法があります。
高可用性が必要な本番環境の場合は、Cloud VPN または Cloud Interconnect を介して VPC とアプリケーションの間に永続的な接続を確立することを検討してください。
以降のセクションでは、これらの外部接続ソリューションについて詳しく説明します。
中間 VM を介して接続する
オープンソース ツールと最小限の追加リソースを使用して VPC の外部から AlloyDB クラスタへの接続を確立するには、その VPC 内に設定された中間 VM でプロキシ サービスを実行します。この目的のために新しい VM を設定することも、AlloyDB クラスタの VPC 内ですでに実行されている VM を使用することもできます。
セルフマネージド ソリューションである中間 VM を使用すると、通常は Network Connectivity プロダクトを使用する場合よりも費用が少なくて済み、セットアップ時間も短くなります。ただし欠点もあります。接続の可用性、セキュリティ、データ スループットはすべて中間 VM に依存することになるほか、中間 VM はプロジェクトの一部としてご自身で維持管理する必要があります。
IAP を介して接続する
Identity-Aware Proxy(IAP)を使用すると、中間 VM のパブリック IP アドレスを公開せずにクラスタに安全に接続できます。このルートからのアクセスは、ファイアウォール ルールと Identity and Access Management(IAM)を組み合わせて使用することによって制限します。そのため、IAP は開発やプロトタイピングのような非本番環境の用途に適したソリューションです。
クラスタへの IAP アクセスを設定する手順は次のとおりです。
外部クライアントに Google Cloud CLI をインストールします。
-
新しいファイアウォール ルールを定義するときに、上り(内向き)TCP トラフィックに対してポート
22
(SSH)へのアクセスを許可します。プロジェクトのデフォルト ネットワークを使用していて、事前設定されたdefault-allow-ssh
ルールを有効にしている場合、追加のルールを定義する必要はありません。 IAP 経由の SSH を使用して、外部クライアントと中間 VM の間のポート転送を設定します。
```posix-terminal
gcloud compute ssh my-vm \
--tunnel-through-iap \
--zone=ZONE_ID \
--ssh-flag="-L PORT_NUMBER:ALLOYDB_IP_ADDRESS:5432"
```
Replace the following:
* `ZONE_ID`: The ID of the zone where the cluster
is located—for example, `us-central1-a`.
* `ALLOYDB_IP_ADDRESS`: The IP address of the
AlloyDB instance you want to connect to.
* `PORT_NUMBER`: The port number of your VM.
外部クライアントで
psql
を使用して接続をテストし、前の手順で指定したローカルポートに接続します。たとえば、postgres
ユーザーロールとしてポート5432
に接続するには、次のようにします。psql -h localhost -p 5432 -U USERNAME
次のように置き換えます。
USERNAME
: インスタンスに接続する postgreSQL ユーザー(デフォルト ユーザーpostgres
など)。
SOCKS プロキシを介して接続する
中間 VM で SOCKS サービスを実行すると、AlloyDB クラスタへの柔軟でスケーラブルな接続が可能になります。また、AlloyDB Auth Proxy によってエンドツーエンドの暗号化も提供されます。適切に構成することで、本番環境のワークロードに適したものにすることができます。
このソリューションでは、次の操作を行います。
中間 VM で、SOCKS サーバーをインストール、構成、実行します。このような例としては、一般的なオープンソース ソリューションである Dante があります。
外部接続と内部接続の両方で VM の
ens4
ネットワーク インターフェースにバインドするようにサーバーを構成します。内部接続に必要なポートを指定します。適切な IP アドレスまたは範囲から SOCKS サーバーの構成ポートへの TCP トラフィックを許可するように、VPC のファイアウォールを構成します。
外部クライアントに AlloyDB Auth Proxy をインストールします。
ALL_PROXY
環境変数を中間 VM の IP アドレスに設定し、SOCKS サーバーが使用するポートを指定して、外部クライアントで AlloyDB Auth Proxy を実行します。この例では、
198.51.100.1
のポート1080
で実行されている SOCKS サーバー経由で、my-main-instance
のデータベースに接続するように AlloyDB Auth Proxy を構成します。ALL_PROXY=socks5://198.51.100.1:1080 ./alloydb-auth-proxy \ /projects/PROJECT_ID/locations/REGION_ID/clusters/CLUSTER_ID/instances/INSTANCE_ID
ピアリングされた VPC から接続する場合は、中間 VM の内部 IP アドレスを使用できます。それ以外の場合は、外部 IP アドレスを使用します。
外部クライアントで
psql
を使用して接続をテストし、AlloyDB Auth Proxy がリッスンしているポートに接続します。たとえば、postgres
ユーザーロールとしてポート5432
に接続するには、次のようにします。psql -h IP_ADDRESS -p PORT_NUMBER -U USERNAME
PostgreSQL プーラーを介して接続する
外部クライアントの代わりに中間 VM に AlloyDB Auth Proxy をインストールして実行する必要がある場合、AlloyDB Auth Proxy をプロトコル対応プロキシ(プーラー)とペアリングすることで、AlloyDB Auth Proxy への安全な接続を有効にできます。PostgreSQL 用の一般的なオープンソース プーラーには、Pgpool-II と PgBouncer があります。
このソリューションでは、AlloyDB Auth Proxy とプーラーの両方を中間 VM で実行します。クライアントまたはアプリケーションは、SSL 経由でプーラーに直接かつ安全に接続でき、追加のサービスを実行する必要はありません。プーラーは、Auth Proxy を介して PostgreSQL クエリを AlloyDB クラスタに渡します。
AlloyDB クラスタ内のすべてのインスタンスに個別の内部 IP アドレスがあるため、各プロキシ サービスは、プライマリ インスタンス、スタンバイ、読み取りプールのいずれか 1 つのインスタンスとのみ通信できます。そのため、クラスタ内のすべてのインスタンスに対して、適切に構成された SSL 証明書を使用して個別のプーラー サービスを実行する必要があります。
Cloud VPN または Cloud Interconnect を介して接続する
高可用性(HA)が必要な本番環境では、外部サービスのニーズとネットワーク トポロジに応じて、Cloud VPN か Cloud Interconnect のいずれかの Google CloudNetwork Connectivity プロダクトを使用することをおすすめします。さらに、Cloud Router で適切なルートがアドバタイズされるように構成します。
Network Connectivity プロダクトを使用するプロセスは、中間 VM を設定するプロセスよりも複雑ですが、このアプローチでは、稼働時間と可用性に関する負担を Google に任せることができます。特に、HA VPN は 99.99% の SLA を提供するため、本番環境に適しています。
また、Network Connectivity ソリューションを使用すると、アプリケーションの一部として安全な VM を別途維持する必要がないため、このアプローチに固有の単一障害点のリスクを回避できます。
これらのソリューションの詳細については、Network Connectivity プロダクトの選択をご覧ください。
次のステップ
- Google Cloud VPC でのプライベート サービス アクセスとオンプレミス接続の詳細を確認する。