diff --git a/SETTINGS.rst b/SETTINGS.rst index a5ba11b5..6b0d4153 100644 --- a/SETTINGS.rst +++ b/SETTINGS.rst @@ -4,26 +4,52 @@ YAML Configuration Settings Global/Universal ---------------- -- **loop\_wait**: the number of seconds the loop will sleep. -- **ttl**: the TTL to acquire the leader lock. Think of it as the length of time before initiation of the automatic failover process. +- **name**: the name of the host. Must be unique for the cluster. +- **namespace**: path within configuration store where Patroni will keep information about cluster. Default value: "/service" +- **scope**: cluster name + +Bootstrap configuration +----------------------- +- **dcs**: This section will be written into `///config` of a given configuration store after initializing of new cluster. This is the global configuration for the cluster. If you want to change some parameters for all cluster nodes - just do it in DCS (or via Patroni API) and all nodes will apply this configuration. + - **loop\_wait**: the number of seconds the loop will sleep. Default value: 10 + - **ttl**: the TTL to acquire the leader lock. Think of it as the length of time before initiation of the automatic failover process. Default value: 30 + - **maximum\_lag\_on\_failover**: the maximum bytes a follower may lag to be able to participate in leader election. + - **postgresql**: + - **use\_pg\_rewind**:whether or not to use pg_rewind + - **use\_slots**: whether or not to use replication_slots. Must be False for PostgreSQL 9.3. You should comment out max_replication_slots before it becomes ineligible for leader status. + - **recovery\_conf**: additional configuration settings written to recovery.conf when configuring follower. + - **parameters**: list of configuration settings for Postgres. Many of these are required for replication to work. +- **initdb**: List options to be passed on to initdb. + - **- data-checksums**: Must be enabled when pg_rewind is needed on 9.3. + - **- encoding: UTF8**: default encoding for new databases. + - **- locale: UTF8**: default locale for new databases. +- **pg\_hba**: list of lines that you should add to pg\_hba.conf. + - **- host all all 0.0.0.0/0 md5**. + - **- host replication replicator 127.0.0.1/32 md5**: A line like this is required for replication. +- **users**: Some additional users users which needs to be created after initializing new cluster + - **admin**: the name of user + - **password: zalando**: + - **options**: list of options for CREATE USER statement + - **- createrole** + - **- createdb** Consul ------ - **host**: the host:port for the Consul endpoint. -- **scope**: the relative path used on Consul's HTTP API for this deployment; makes it possible to run multiple HA deployments from a single Consul cluster. -- **ttl**: the TTL to acquire the leader lock. Think of it as the length of time before initiation of the automatic failover process. etcd ---- - **host**: the host:port for the etcd endpoint. -- **scope**: the relative path used on etcd's HTTP API for this deployment. Makes it possible to run multiple HA deployments from a single etcd cluster. -- **ttl**: the TTL to acquire the leader lock. Think of it as the length of time before initiation of the automatic failover process. PostgreSQL ---------------- -- **admin**: - - **password**: admin password; user is created during initialization. - - **username**: admin username; user is created during initialization. It will have CREATEDB and CREATEROLE privileges. +---------- +- **authentication**: + - **superuser**: + - **username**: name for the superuser, set during initialization (initdb) and later used by Patroni to connect to the postgres. + - **password**: password for the superuser, set during initialization (initdb). + - **replication**: + - **username**: replication username; user will be created during initialization. + - **password**: replication password; user will be created during initialization. - **callbacks**: callback scripts to run on certain actions. Patroni will pass the action, role and cluster name. (See scripts/aws.py as an example of how to write them.) - **on\_reload**: run this script when configuration reload is triggered. - **on\_restart**: run this script when the cluster restarts. @@ -33,25 +59,10 @@ PostgreSQL - **connect\_address**: IP address + port through which Postgres is accessible from other nodes and applications. - **create\_replica\_methods**: an ordered list of the create methods for turning a Patroni node into a new replica. "basebackup" is the default method; other methods are assumed to refer to scripts, each of which is configured as its own config item. - **data\_dir**: file path to initialize and store Postgres data files. -- **initdb**: List options to be passed on to initdb. - - **data-checksums**: Must be enabled when pg_rewind is needed on 9.3. - - **encoding**: default encoding for new databases. - - **locale**: default locale for new databases. - **listen**: IP address + port that Postgres listens to; must be accessible from other nodes in the cluster, if you're using streaming replication. Multiple comma-separated addresses are permitted, as long as the port component is appended after to the last one with a colon, i.e. ``listen: 127.0.0.1,127.0.0.2:5432``. Patroni will use the first address from this list to establish local connections to the PostgreSQL node. -- **maximum\_lag\_on\_failover**: the maximum bytes a follower may lag. -- **name**: the name of the Postgres host. Must be unique for the cluster. -- **pg\_hba**: list of lines that you should add to pg\_hba.conf. - - **- host all all 0.0.0.0/0 md5**. - - **- host replication replicator 127.0.0.1/32 md5**: A line like this is required for replication. - **recovery\_conf**: additional configuration settings written to recovery.conf when configuring follower. - - **parameters**: list of configuration settings for Postgres. Many of these are required for replication to work. +- **parameters**: list of configuration settings for Postgres. Many of these are required for replication to work. - **replica\_method** for each create_replica_method other than basebackup, you would add a configuration section of the same name. At a minimum, this should include "command" with a full path to the actual script to be executed. Other configuration parameters will be passed along to the script in the form "parameter=value". -- **replication**: - - **username**: replication username; user will be created during initialization. - - **password**: replication password; user will be created during initialization. -- **use\_slots**: whether or not to use replication_slots. Must be False for PostgreSQL 9.3. You should comment out max_replication_slots before it becomes ineligible for leader status. -- **superuser**: - - **password**: password for the Postgres user, set during initialization. REST API -------- @@ -65,10 +76,6 @@ REST API ZooKeeper ---------- - **hosts**: list of ZooKeeper cluster members in format: ['host1:port1', 'host2:port2', 'etc...']. -- **reconnect\_timeout**: how long you should try to reconnect to ZooKeeper after a connection loss. After this timeout, assume that you no longer have a lock and restart in read-only mode. -- **scope**: the relative path used on ZooKeeper for this deployment. Makes it possible to run multiple HA deployments from a single ZooKeeper cluster. -- **session\_timeout**: the TTL to acquire the leader lock. Think of it as the length of time before initiation of the automatic failover process. - - **exhibitor**: If you are running a ZooKeeper cluster under the Exhibitor supervisory, this section might interest you: - **hosts**: initial list of Exhibitor (ZooKeeper) nodes in format: ['host1', 'host2', 'etc...' ]. This list updates automatically whenever the Exhibitor (ZooKeeper) cluster topology changes. - **poll\_interval**: how often the list of ZooKeeper and Exhibitor nodes should be updated from Exhibitor