Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

PostgreSQL high-availability/load-balancing strategy #1

Open
ustuehler opened this issue Sep 15, 2013 · 2 comments
Open

PostgreSQL high-availability/load-balancing strategy #1

ustuehler opened this issue Sep 15, 2013 · 2 comments

Comments

@ustuehler
Copy link
Member

Looking at the matrix in PostgreSQL: Documentation: 9.3: Comparison of Different Solutions, I think that Transaction Log Shipping comes out on top for our PuppetDB scenario. Second best might be Trigger-Based Master-Standby Replication.

My criteria was:

  • There shoudn't be a need for conflict resolution strategies, ever. This ruled out pgpool-II and Bucardo.
  • Standby should be able to serve read-only queries. This ruled out shared storage: Gluster, NAS, DRBD.
  • Write delay is acceptable (writes are asynchronous from Puppet's point of view, anyway), while data loss on master failure is not. This ruled out Slony, or Trigger-Based Master-Standby Replication.

Those criteria only leave us with Streaming Replication (synchronous) for Transaction Log Shipping and proprietary synchronous multi-master replication.

@ustuehler
Copy link
Member Author

PostgreSQL documentation 25.2. Log-Shipping Standby Servers says the following:

No changes to the database tables are required to enable this capability, so it offers low administration overhead compared to some other replication solutions.

Low administration overhead is also what we want, since we want our attention to focus on Puppet and not so much on database administration.

ustuehler added a commit that referenced this issue Sep 15, 2013
This does not yet provide high-availability or load-balancing for
PuppetDB.  The next steps would be to configure a second PuppetDB
instance and do load-balancing over both.  Once that works we can
set up a second PostgreSQL instance as a hot-standby and try to
use that for read-only queries.
@ustuehler
Copy link
Member Author

See output.txt for a successful run of vagrant up with two load-balancing instances of gluster, puppetdb and puppet. Remaining single-point of failure is postgres. :)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant