Concept
39 pagesVersioning
This document describes the versions supported by the etcd project. Service versioning and supported versions etcd versions are expressed as x.y.z, where x is the major version, y is the minor version, and z is the patch version, following Semantic …
This document describes the versions supported by the etcd project. Service versioning and supported versions etcd versions are expressed as x.y.z, where x is the major version, y is the minor version, and z is the patch version, following Semantic …
Design of runtime reconfiguration
Runtime reconfiguration is one of the hardest and most error prone features in a distributed system, especially in a consensus based system like etcd. Read on to learn about the design of etcd’s runtime reconfiguration commands and how we tackled …
Runtime reconfiguration is one of the hardest and most error prone features in a distributed system, especially in a consensus based system like etcd. Read on to learn about the design of etcd’s runtime reconfiguration commands and how we tackled …
Performance
Understanding performance etcd provides stable, sustained high performance. Two factors define performance: latency and throughput. Latency is the time taken to complete an operation. Throughput is the total operations completed within some time …
Understanding performance etcd provides stable, sustained high performance. Two factors define performance: latency and throughput. Latency is the time taken to complete an operation. Throughput is the total operations completed within some time …
Failure modes
Failures are common in a large deployment of machines. A machine fails when its hardware or software malfunctions. Multiple machines fail together when there are power failures or network issues. Multiple kinds of failures can also happen at once; it …
Failures are common in a large deployment of machines. A machine fails when its hardware or software malfunctions. Multiple machines fail together when there are power failures or network issues. Multiple kinds of failures can also happen at once; it …
Why gRPC gateway
etcd v3 uses gRPC for its messaging protocol. The etcd project includes a gRPC-based Go client and a command line utility, etcdctl , for communicating with an etcd cluster through gRPC. For languages with no gRPC support, etcd provides a JSON gRPC …
etcd v3 uses gRPC for its messaging protocol. The etcd project includes a gRPC-based Go client and a command line utility, etcdctl , for communicating with an etcd cluster through gRPC. For languages with no gRPC support, etcd provides a JSON gRPC …
etcd versus other key-value stores
The name “etcd” originated from two ideas, the unix “/etc” folder and “d"istributed systems. The “/etc” folder is a place to store configuration data for a single system whereas etcd stores configuration information for large scale distributed …
The name “etcd” originated from two ideas, the unix “/etc” folder and “d"istributed systems. The “/etc” folder is a place to store configuration data for a single system whereas etcd stores configuration information for large scale distributed …
etcd API guarantees
etcd is a consistent and durable key value store. The key value store is exposed through gRPC Services . etcd ensures the strongest consistency and durability guarantees for a distributed system. This specification enumerates the API guarantees made …
etcd is a consistent and durable key value store. The key value store is exposed through gRPC Services . etcd ensures the strongest consistency and durability guarantees for a distributed system. This specification enumerates the API guarantees made …
etcd persistent storage files
This document explains the etcd persistent storage format: naming, content and tools that allow developers to inspect them. Going forward the document should be extended with changes to the storage model. This document is targeted at etcd developers …
This document explains the etcd persistent storage format: naming, content and tools that allow developers to inspect them. Going forward the document should be extended with changes to the storage model. This document is targeted at etcd developers …
etcd API
This document is meant to give an overview of the v3 etcd APIs central design. This should not be mistaken with etcd v2 API, deprecated in etcd v3.5. It is by no means all encompassing, but intended to focus on the basic ideas needed to understand …
This document is meant to give an overview of the v3 etcd APIs central design. This should not be mistaken with etcd v2 API, deprecated in etcd v3.5. It is by no means all encompassing, but intended to focus on the basic ideas needed to understand …
etcd v3 authentication design
Why not reuse the v2 auth system? The v3 protocol uses gRPC as its transport instead of a RESTful interface like v2. This new protocol provides an opportunity to iterate on and improve the v2 design. For example, v3 auth has connection based …
Why not reuse the v2 auth system? The v3 protocol uses gRPC as its transport instead of a RESTful interface like v2. This new protocol provides an opportunity to iterate on and improve the v2 design. For example, v3 auth has connection based …
etcd learner design
etcd Learner Gyuho Lee (github.com/gyuho, Amazon Web Services, Inc.), Joe Betz (github.com/jpbetz, Google Inc.) Background Membership reconfiguration has been one of the biggest operational challenges. Let’s review common challenges. 1. New Cluster …
etcd Learner Gyuho Lee (github.com/gyuho, Amazon Web Services, Inc.), Joe Betz (github.com/jpbetz, Google Inc.) Background Membership reconfiguration has been one of the biggest operational challenges. Let’s review common challenges. 1. New Cluster …
etcd client design
etcd Client Design Gyuho Lee (github.com/gyuho, Amazon Web Services, Inc.), Joe Betz (github.com/jpbetz, Google Inc.) Introduction etcd server has proven its robustness with years of failure injection testing. Most complex application logic is …
etcd Client Design Gyuho Lee (github.com/gyuho, Amazon Web Services, Inc.), Joe Betz (github.com/jpbetz, Google Inc.) Introduction etcd server has proven its robustness with years of failure injection testing. Most complex application logic is …
Data model
etcd is designed to reliably store infrequently updated data and provide reliable watch queries. etcd exposes previous versions of key-value pairs to support inexpensive snapshots and watch history events (“time travel queries”). A persistent, …
etcd is designed to reliably store infrequently updated data and provide reliable watch queries. etcd exposes previous versions of key-value pairs to support inexpensive snapshots and watch history events (“time travel queries”). A persistent, …
2. HAProxy Architecture
HAProxy is a multi-threaded, event-driven, non-blocking daemon. This means it uses event multiplexing to schedule all of its activities instead of relying on the system to schedule between multiple activities. Most of the time it runs as a single …
HAProxy is a multi-threaded, event-driven, non-blocking daemon. This means it uses event multiplexing to schedule all of its activities instead of relying on the system to schedule between multiple activities. Most of the time it runs as a single …
HA multi datacenter
The high availability of a PostgreSQL cluster deployed in multiple data centers is based on replication, which can be synchronous or asynchronous (see replication modes ). In both cases, it is important to be clear about the following concepts: …
The high availability of a PostgreSQL cluster deployed in multiple data centers is based on replication, which can be synchronous or asynchronous (see replication modes ). In both cases, it is important to be clear about the following concepts: …
Security Considerations
A Patroni cluster has two interfaces to be protected from unauthorized access: the distributed configuration storage (DCS) and the Patroni REST API. Protecting DCS Patroni and patronictl both store and retrieve data to/from the DCS. Despite DCS …
A Patroni cluster has two interfaces to be protected from unauthorized access: the distributed configuration storage (DCS) and the Patroni REST API. Protecting DCS Patroni and patronictl both store and retrieve data to/from the DCS. Despite DCS …
Integration with other tools
Patroni is able to integrate with other tools in your stack. In this section you will find a list of examples, which although not an exhaustive list, might provide you with ideas on how Patroni can integrate with other tools. Barman Patroni delivers …
Patroni is able to integrate with other tools in your stack. In this section you will find a list of examples, which although not an exhaustive list, might provide you with ideas on how Patroni can integrate with other tools. Barman Patroni delivers …
Citus support
Patroni makes it extremely simple to deploy Multi-Node Citus clusters. TL;DR There are only a few simple rules you need to follow: Citus database extension to PostgreSQL must be available on all nodes. Absolute minimum supported Citus version is …
Patroni makes it extremely simple to deploy Multi-Node Citus clusters. TL;DR There are only a few simple rules you need to follow: Citus database extension to PostgreSQL must be available on all nodes. Absolute minimum supported Citus version is …
1. Quick Reminder About HTTP
This document covers the configuration language as implemented in the version specified above. It does not provide any hints, examples, or advice. For such documentation, please refer to the Reference Manual or the Architecture Manual. The numbered …
This document covers the configuration language as implemented in the version specified above. It does not provide any hints, examples, or advice. For such documentation, please refer to the Reference Manual or the Architecture Manual. The numbered …
DCS Failsafe Mode
The problem Patroni is heavily relying on Distributed Configuration Store (DCS) to solve the task of leader elections and detect network partitioning. That is, the node is allowed to run Postgres as the primary only if it can update the leader lock …
The problem Patroni is heavily relying on Distributed Configuration Store (DCS) to solve the task of leader elections and detect network partitioning. That is, the node is allowed to run Postgres as the primary only if it can update the leader lock …
Watchdog support
Having multiple PostgreSQL servers running as primary can result in transactions lost due to diverging timelines. This situation is also called a split-brain problem. To avoid split-brain Patroni needs to ensure PostgreSQL will not accept any …
Having multiple PostgreSQL servers running as primary can result in transactions lost due to diverging timelines. This situation is also called a split-brain problem. To avoid split-brain Patroni needs to ensure PostgreSQL will not accept any …
Companion Products and Alternatives
HAProxy integrates fairly well with certain products listed below, which is why they are mentioned here even if not directly related to HAProxy. 4.1. Apache HTTP server Apache is the de-facto standard HTTP server. It’s a very complete and modular …
HAProxy integrates fairly well with certain products listed below, which is why they are mentioned here even if not directly related to HAProxy. 4.1. Apache HTTP server Apache is the de-facto standard HTTP server. It’s a very complete and modular …
Project Metrics
Code Coverage pgBackRest aims to have complete function/branch/line coverage for the core C code in /src. Function/line coverage is complete with no exceptions. Branch coverage excludes branches inside macros and assert() calls. Macros have their …
Code Coverage pgBackRest aims to have complete function/branch/line coverage for the core C code in /src. Function/line coverage is complete with no exceptions. Branch coverage excludes branches inside macros and assert() calls. Macros have their …
Community
Tutorials How to Set Up PgBouncer for Postgres Plus Standard Server Good overview of PgBouncer concepts. What is the point of bouncing? Discusses differences between pooling modes. Support Project page at GitHub Issue tracker at GitHub PgBouncer …
Tutorials How to Set Up PgBouncer for Postgres Plus Standard Server Good overview of PgBouncer concepts. What is the point of bouncing? Discusses differences between pooling modes. Support Project page at GitHub Issue tracker at GitHub PgBouncer …
Replication modes
Patroni uses PostgreSQL streaming replication. For more information about streaming replication, see the Postgres documentation . By default Patroni configures PostgreSQL for asynchronous replication. Choosing your replication schema is dependent on …
Patroni uses PostgreSQL streaming replication. For more information about streaming replication, see the Postgres documentation . By default Patroni configures PostgreSQL for asynchronous replication. Choosing your replication schema is dependent on …
etcd 3.7 Documentation
etcd is a strongly consistent, distributed key-value store. These guides cover installing and operating etcd, building applications against its APIs, understanding its design, measuring performance, and upgrading or downgrading clusters in the 3.7 …
etcd is a strongly consistent, distributed key-value store. These guides cover installing and operating etcd, building applications against its APIs, understanding its design, measuring performance, and upgrading or downgrading clusters in the 3.7 …
Advanced Features
3.5.1. Advanced features : Management HAProxy is designed to remain extremely stable and safe to manage in a regular production environment. It is provided as a single executable file which doesn’t require any installation process. Multiple versions …
3.5.1. Advanced features : Management HAProxy is designed to remain extremely stable and safe to manage in a regular production environment. It is provided as a single executable file which doesn’t require any installation process. Multiple versions …
Standard Features
In this section, some features that are very commonly used in HAProxy but are not necessarily present on other load balancers are enumerated. 3.4.1. Standard features : Sampling and converting information HAProxy supports information sampling using …
In this section, some features that are very commonly used in HAProxy but are not necessarily present on other load balancers are enumerated. 3.4.1. Standard features : Sampling and converting information HAProxy supports information sampling using …
pgBadger 13.2 Documentation
pgBadger is a fast, standalone PostgreSQL log analyzer written in Perl. It reads PostgreSQL or PgBouncer logs and produces detailed HTML, text, binary, JSON, or raw CSV output. The HTML reports are self-contained, interactive, zoomable, and need only …
pgBadger is a fast, standalone PostgreSQL log analyzer written in Perl. It reads PostgreSQL or PgBouncer logs and produces detailed HTML, text, binary, JSON, or raw CSV output. The HTML reports are self-contained, interactive, zoomable, and need only …
Basic Features
This section will enumerate a number of features that HAProxy implements, some of which are generally expected from any modern load balancer, and some of which are a direct benefit of HAProxy’s architecture. More advanced features will be detailed …
This section will enumerate a number of features that HAProxy implements, some of which are generally expected from any modern load balancer, and some of which are a direct benefit of HAProxy’s architecture. More advanced features will be detailed …
PgBouncer 1.25.2 Documentation
pgbouncer is a PostgreSQL connection pooler. Any target application can be connected to pgbouncer as if it were a PostgreSQL server, and pgbouncer will create a connection to the actual server, or it will reuse one of its existing connections. The …
pgbouncer is a PostgreSQL connection pooler. Any target application can be connected to pgbouncer as if it were a PostgreSQL server, and pgbouncer will create a connection to the actual server, or it will reuse one of its existing connections. The …
What HAProxy Is and How It Works
HAProxy is written as “HAProxy” to designate the product, and as “haproxy” to designate the executable program, software package or a process. However, both are commonly used for both purposes, and are pronounced H-A-Proxy. Very early, “haproxy” …
HAProxy is written as “HAProxy” to designate the product, and as “haproxy” to designate the executable program, software package or a process. However, both are commonly used for both purposes, and are pronounced H-A-Proxy. Very early, “haproxy” …
pgBackRest 2.59.1 Documentation
Introduction pgBackRest is a reliable backup and restore solution for PostgreSQL that seamlessly scales up to the largest databases and workloads. pgBackRest v2.59.1 is the current stable release. Release notes are on the Releases page. Please give …
Introduction pgBackRest is a reliable backup and restore solution for PostgreSQL that seamlessly scales up to the largest databases and workloads. pgBackRest v2.59.1 is the current stable release. Release notes are on the Releases page. Please give …
Load Balancing Fundamentals
This document is an introduction to HAProxy for all those who don’t know it, as well as for those who want to re-discover it when they know older versions. Its primary focus is to provide users with all the elements to decide if HAProxy is the …
This document is an introduction to HAProxy for all those who don’t know it, as well as for those who want to re-discover it when they know older versions. Its primary focus is to provide users with all the elements to decide if HAProxy is the …
Patroni 4.1.5 Documentation
Warning Running Patroni on memory-restricted systems with Python 3.11+ If you run Patroni on a system with strict memory limits, for example with vm.overcommit_memory=2 (recommended for PostgreSQL), and use Python 3.11 or newer, you may observe …
Warning Running Patroni on memory-restricted systems with Python 3.11+ If you run Patroni on a system with strict memory limits, for example with vm.overcommit_memory=2 (recommended for PostgreSQL), and use Python 3.11 or newer, you may observe …
Introduction
Patroni is a template for high availability (HA) PostgreSQL solutions using Python. Patroni originated as a fork of Governor , the project from Compose. It includes plenty of new features. For additional background info, see: PostgreSQL HA with …
Patroni is a template for high availability (HA) PostgreSQL solutions using Python. Patroni originated as a fork of Governor , the project from Compose. It includes plenty of new features. For additional background info, see: PostgreSQL HA with …
Features
Several levels of brutality when rotating connections: Session pooling Most polite method. When a client connects, a server connection will be assigned to it for the whole duration it stays connected. When the client disconnects, the server …
Several levels of brutality when rotating connections: Session pooling Most polite method. When a client connects, a server connection will be assigned to it for the whole duration it stays connected. When the client disconnects, the server …