Re: Proposal: Implement failover on libpq connect level. - Mailing list pgsql-hackers
From | Robert Haas |
---|---|
Subject | Re: Proposal: Implement failover on libpq connect level. |
Date | |
Msg-id | CA+Tgmobvj7ORhqg+CBfHgcBYmEn0U6F22rOrvb4VYHSzpzNKSQ@mail.gmail.com Whole thread Raw |
In response to | Re: Proposal: Implement failover on libpq connect level. (Stephen Frost <sfrost@snowman.net>) |
Responses |
Re: Proposal: Implement failover on libpq connect level.
Re: Proposal: Implement failover on libpq connect level. Re: Proposal: Implement failover on libpq connect level. |
List | pgsql-hackers |
On Thu, Sep 3, 2015 at 11:42 AM, Stephen Frost <sfrost@snowman.net> wrote: >> > I believe that having a floating IP for the master is much more practical >> > approach and it doesn't require any patch to libpq or modification of the >> > client connection settings. >> >> I think that's a great approach if all the machines are on the same >> subnet. If they are in different datacenters, it doesn't work. > > Anycast could technically be used to address that issue, but there's a > whole host of reasons why that would be quite painful for a PG > connection. /me rolls eyes. >> I think it would be far better to progress to talking about what >> design we'd be comfortable with, rather than kidding ourselves that a >> feature that everyone else has and which somebody has taken the time >> to implement (thus, obviously it has value for them) and which has >> been discussed to general approval at PGCon developer meetings and >> which has been endorsed on this thread by three committers is somehow >> something that nobody really needs. Seriously? > > Agreed. For my part, I like the JDBC configuration approach and > definitely would ask that we support 'host:port' options since not all > servers will be on the same port. I don't agree with Tom's concern > regarding the simultaneous connection to all servers at once (yes, it's > a bit unfriendly, but I don't see that as a reason to not provide that > choice and there's a lot of reasons why you'd want it). Yep. And it can even be configurable behavior, as I suggested upthread. > What would be nice is a better way to configure these more complicated > options than the single string or even the current very simple > pg_service.conf file. For example, a service name which could define > *other* service names to try along with a plan for how to connect to > them (round robin, simultaneously, read/write only, etc) and perhaps > also support specifying multiple service names to the 'service' > parameter. I'd prefer that we support all different configuration > options through the 'single string' method also, but I'm not convinced > that's a hard requirement. Maybe someday we should have all that, but I think for right now that's complicating things unnecessarily. I think the best proposal so far is to allow the host=X option to be repeated multiple times. If you repeat the host=X option N times, you can also repeat the port=X option exactly N times, or else you can specify it just once. Done. Alternatively, leave the host=X option alone and add a new option hostlist=X, allowing a comma-separated list of names or IPs, with each hostname or IP allowed an optional :port suffix. If host=X parameter is omitted or the connection to that machine fails, try everybody in the hostlist concurrently, or with some configurable (and presumably short) delay between one and then next. Again, done. Alternatively, change the rules for parsing the existing host=X parameter so that we split it on some separator that isn't a valid hostname character, and then strip off an optional :port syntax from each entry; that value, if present, overrides port=X for that entry. I think we're really tying ourselves in knots about problems that really aren't very hard to solve here. I'm sure some of these proposals are better than others and the idea thing may be something else again. But if NASA can send a space probe 7.5 billion kilometers to a frigid spheroid in the outer solar system without crashing into anything or having any catastrophic software or hardware failures, I bet we can come up with a convenient way to specify multiple IP addresses. I'd like the story of this feature to resemble a work by e.e. cummings more than it does one by Robert Jordan. -- Robert Haas EnterpriseDB: http://www.enterprisedb.com The Enterprise PostgreSQL Company
pgsql-hackers by date: