Re: Question: Multiple pg clusters on one server can be reached with the standard port.

From: "Michael Weiller" <michael(at)weiller(dot)eu>
To: "Thomas Markus" <t(dot)markus(at)proventis(dot)net>
Cc: pgsql-general(at)lists(dot)postgresql(dot)org
Subject: Re: Question: Multiple pg clusters on one server can be reached with the standard port.
Date: 2023-06-16 11:52:56
Message-ID: 6c3babfef3065d8e1d69b8618a1aeac3@weiller.eu
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

16. Juni 2023 12:04, "Thomas Markus" <t(dot)markus(at)proventis(dot)net> schrieb:

> Hi
>
> Am 16.06.23 um 11:40 schrieb Brainmue:
>
>> Hello all,
>>
>> I am currently looking for a solution similar to Oracle Listener.
>>
>> Current situation:
>> I have a system with multiple PostgreSQL clusters for different databases.
>> Each cluster is running on the same physical machine and is accessed through its own DNS alias and
>> corresponding port.
>> I only have one single IP address available, and there is no possibility of obtaining additional
>> addresses.
>>
>> Here's an example:
>>
>> DNS ALIAS Host
>> ─> pgs1.server.net:5432 ─> PG_Cluster1(at)192(dot)168(dot)0(dot)1:5432
>> ─> pgs2.server.net:5433 ─> PG_Cluster2(at)192(dot)168(dot)0(dot)1:5433
>> ─> pgs3.server.net:5434 ─> PG_Cluster3(at)192(dot)168(dot)0(dot)1:5434
>> ─> pgs4.server.net:5435 ─> PG_Cluster4(at)192(dot)168(dot)0(dot)1:5435
>> ─> pgs5.server.net:5436 ─> PG_Cluster5(at)192(dot)168(dot)0(dot)1:5436
>>
>> Desired solution:
>> I still want to use the same system with different PostgreSQL clusters for the various databases.
>> These clusters are internally accessible through different ports.
>> However, I would like a service on the server to receive all external requests on port 5432 and
>> forward them to the corresponding internal cluster based on the DNS alias.
>> It would also be desirable if this service could provide additional features like connection
>> pooling or other functionalities.
>> Similar to a reverse proxy.
>>
>> Here's an example:
>>
>> DNS ALIAS HOST
>> ─> pgs1.server.net:5432 ─┐ ┌──────────────────┬──> PG_Cluster1(at)localhost:5433
>> ─> pgs2.server.net:5432 ─┤ │ ├──> PG_Cluster2(at)localhost:5434
>> ─> pgs3.server.net:5432 ─┼─>─┤ 192.168.0.1:5432 ├──> PG_Cluster3(at)localhost:5435
>> ─> pgs4.server.net:5432 ─┤ │ ├──> PG_Cluster4(at)localhost:5436
>> ─> pgs5.server.net:5432 ─┘ └──────────────────┴──> PG_Cluster5(at)localhost:5437
>>
>> Is there a solution for this, and what are the advantages or limitations that arise from it?
>>
>> Thank you in advance for your suggestions and help.
>>
>> Regards,
>> Michael
>
> possible solutions:
> * set up a firewall rule to forward connection
> * use a tcp proxy (nginx can do that)
> * check pg_bouncer
>
> best regards
> Thomas

Hello Thomas,

Thank you for your quick reply.

With firewall you mean an additional software, right?
Because with iptables or netfilter I can't forward TCP packets based on the DNS alias name. Or is that possible?

I have the same problem with nginx. I just looked in the documentation again but I can't find a way to distinguish which cluster to forward to based on the DNS alias.
Do you have an example for me?

We have already looked at pgbouncer and it works with that but unfortunately you have to do the authentication in pgbouncer. Which we don't like so much.

Regards,
Michael

In response to

Responses

Browse pgsql-general by date

  From Date Subject
Next Message Brainmue 2023-06-16 11:53:41 Re: Question: Multiple pg clusters on one server can be reached with the standard port.
Previous Message shveta malik 2023-06-16 10:31:37 Re: Support logical replication of DDLs