6

RDS に 2 つの Postgres 9.3.5 インスタンスがあり、どちらもセキュリティ グループ内からのすべてのインバウンド トラフィックとすべてのアウトバウンド トラフィックを許可する 1 つのセキュリティ グループにあります。postgres_fdw を介して、あるデータベースを別のテーブルから選択できるように設定しようとしています。

サーバーを作成しました -

create server master 
foreign data wrapper postgres_fdw 
OPTIONS (dbname 'main', 
         host 'myinstance.xxxxx.amazonaws.com');

必要なユーザー マッピングと外部テーブルと同様に -

create foreign table condition_fdw (
    cond_id integer,
    cond_name text
) server master options(table_name 'condition', schema_name 'data');

しかし、単純なselect count(*) from condition_fdwことは私に与えます

ERROR:  could not connect to server "master"
DETAIL:  could not connect to server: Connection timed out
        Is the server running on host "myinstance.xxxxxx.amazonaws.com" (xx.xx.xx.xx) and accepting
        TCP/IP connections on port 5432?

psqlEC2 インスタンスから両方のデータベースに接続できます。最近まで RDS が postgres_fdw をサポートしていなかったことは知っていますが、サポートしている新しいバージョンを実行しています。

create server ステートメントで、「myinstance.xxxxxx.amazonaws.com」を解決先の IP アドレスに置き換えようとしましたが、うまくいきませんでした。

何か案は?

さらなるテスト

同じセキュリティ グループを持つ ec2 インスタンスに postgres をインストールしました。マスター サーバーへの外部テーブルは期待どおりに動作します。

同じ RDS インスタンス上のデータベース間の postgres_fdw は機能します。

これはすべて、Postgres RDS インスタンスの postgres_fdw からの発信接続に何らかの問題があるに違いないと私に思わせます。

4

4 に答える 4

1

Amazon は RDS インスタンスからの発信接続を許可していないようです。そのため、RDS インスタンス間で postgres_fdw を使用して変更することはできません。外部テーブルを別のサーバーのデータベースに使用するには、postgres サーバーとして ec2 インスタンスを実行する必要があります。

http://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Overview.RDSSecurityGroups.html

于 2015-02-27T02:53:55.677 に答える
0

同じアベイラビリティ ゾーンにいる場合、機能しない理由はありません。

于 2016-11-25T10:48:00.320 に答える
0

私は同様の問題を経験し、postgres_fdw が EU-WEST-1 RDS リージョンでのみ機能することを発見しました。マスター インスタンスとリモート インスタンスが同じアベイラビリティ ゾーンにあり、9.3.5 では、AZ をまたがると接続されません。私のセキュリティ グループは 5432 TCP インバウンドのみで、すべてアウトバウンドでした。

于 2015-03-17T13:59:00.037 に答える