|
| 1 | +# Recovery procedures |
| 2 | + |
| 3 | +These instructions provide automated procedures for recovering from select failures of PE components which are managed by PEADM. |
| 4 | + |
| 5 | +Manual procedures are documented in [recovery.md](recovery.md) |
| 6 | + |
| 7 | +## Recover from failed Puppet primary server |
| 8 | + |
| 9 | +1. Promote the replica ([official docs](https://puppet.com/docs/pe/2019.8/dr_configure.html#dr-promote-replica)) |
| 10 | +2. [Replace missing or failed replica Puppet primary server](#replace-missing-or-failed-replica-puppet-server) |
| 11 | + |
| 12 | +## Replace missing or failed replica Puppet primary server |
| 13 | + |
| 14 | +This procedure uses the following placeholder references. |
| 15 | + |
| 16 | +* _\<primary-server-fqdn\>_ - The FQDN and certname of the Puppet primary server |
| 17 | +* _\<replica-postgres-server-fqdn\>_ - The FQDN and certname of the PE-PostgreSQL server which resides in the same availability group as the replacement replica Puppet primary server |
| 18 | +* _\<replacement-replica-fqdn\>_ - The FQDN and certname of the replacement replica Puppet primary server |
| 19 | + |
| 20 | +1. Run `peadm::add_replica` plan to deploy replacement replica Puppet primary server |
| 21 | + 1. For Standard and Large deployments: |
| 22 | + |
| 23 | + bolt plan run peadm::add_replica primary_host=<primary-server-fqdn> replica_host=<replacement-replica-fqdn> |
| 24 | + |
| 25 | + 2. For Extra Large deployments: |
| 26 | + |
| 27 | + bolt plan run peadm::add_replica primary_host=<primary-server-fqdn> replica_host=<replacement-replica-fqdn> replica_postgresql_host=<replica-postgres-server-fqdn> |
| 28 | + |
| 29 | +## Replace failed PE-PostgreSQL server (A or B side) |
| 30 | + |
| 31 | +The procedure for replacing a failed PE-PostgreSQL server is the same regardless of which PE-PostgreSQL server is missing or whether the name of the PE-PostgreSQL server is the same or different. This procedure uses the following placeholder references. |
| 32 | + |
| 33 | +* _\<replacement-postgres-server-fqdn\>_ - The FQDN and certname of the new server being brought in to replace the failed PE-PostgreSQL server |
| 34 | +* _\<working-postgres-server-fqdn\>_ - The FQDN and certname of the still-working PE-PostgreSQL server |
| 35 | +* _\<failed-postgres-server-fqdn\>_ - The FQDN and certname of the failed PE-PostgreSQL server |
| 36 | +* _\<primary-server-fqdn\>_ - The FQDN and certname of the Puppet primary server |
| 37 | +* _\<replica-server-fqdn\>_ - The FQDN and certname of the replica Puppet primary server |
| 38 | + |
| 39 | +Procedure: |
| 40 | + |
| 41 | +1. Run the `peadm::replace_failed_postgresql` plan to replace the failed PE-PostgreSQL server: |
| 42 | + |
| 43 | + bolt plan run peadm::replace_failed_postgresql \ |
| 44 | + primary_host=<primary-server-fqdn> \ |
| 45 | + replica_host=<replica-server-fqdn> \ |
| 46 | + working_postgresql_host=<working-postgres-server-fqdn> \ |
| 47 | + failed_postgresql_host=<failed-postgres-server-fqdn> \ |
| 48 | + replacement_postgresql_host=<replacement-postgres-server-fqdn> |
| 49 | + |
| 50 | +## Replace failed replica Puppet primary server AND failed replica PE-PostgreSQL server |
| 51 | + |
| 52 | +This procedure uses the following placeholder references. |
| 53 | + |
| 54 | +* _\<primary-server-fqdn\>_ - The FQDN and certname of the Puppet primary server |
| 55 | +* _\<failed-replica-fqdn\>_ - The FQDN and certname of the failed replica Puppet primary server |
| 56 | + |
| 57 | +1. Ensure the old replica server is forgotten. |
| 58 | + |
| 59 | + bolt command run "/opt/puppetlabs/bin/puppet infrastructure forget <failed-replica-fqdn>" --targets <primary-server-fqdn> |
| 60 | + |
| 61 | +2. [Replace failed PE-PostgreSQL server (A or B side)](#replace-failed-pe-postgresql-server-a-or-b-side) |
| 62 | +3. [Replace missing or failed replica Puppet primary server](#replace-missing-or-failed-replica-puppet-server) |
| 63 | + |
| 64 | +## Add or replace compilers |
| 65 | + |
| 66 | +This procedure uses the following placeholder references. |
| 67 | + |
| 68 | +* _\<avail-group-letter\>_ - Either A or B; whichever of the two letter designations the compiler is being assigned to |
| 69 | +* _\<compiler-hosts\>_ - A comma-separated list of FQDN and certname of the new compiler(s) |
| 70 | +* _\<dns-alt-names\>_ - A comma-separated list of DNS alt names for the compiler |
| 71 | +* _\<primary-server-fqdn\>_ - The FQDN and certname of the Puppet primary server |
| 72 | +* _\<postgresql-server-fqdn\>_ - The FQDN and certname of the PE-PostgreSQL server with availability group _\<avail-group-letter\>_ |
| 73 | + |
| 74 | +Procedure: |
| 75 | + |
| 76 | +1. Run the `peadm::add_compilers` plan to add the compilers: |
| 77 | + |
| 78 | + bolt plan run peadm::add_compilers \ |
| 79 | + primary_host=<primary-server-fqdn> \ |
| 80 | + compiler_hosts=<compiler-hosts> \ |
| 81 | + avail_group_letter=<avail-group-letter> \ |
| 82 | + dns_alt_names=<dns-alt-names> \ |
| 83 | + primary_postgresql_host=<postgresql-server-fqdn> |
| 84 | + |
| 85 | +Please note, the optional parameters and values of the plan are as follows: |
| 86 | + |
| 87 | +<!-- table --> |
| 88 | + |
| 89 | +| Parameter | Default value | Description | |
| 90 | +| ------------------------- | ------------- | ------------------------------------------------------------------------------------------------------------------------------ | |
| 91 | +| `avail_group_letter` | `A` | By default, each compiler will be added to the primary group A. | |
| 92 | +| `dns_alt_names` | `undef` | | |
| 93 | +| `primary_postgresql_host` | `undef` | By default, this will pre-populate to the required value depending on whether your architecture contains HA and or external databases. | |
| 94 | + |
| 95 | +For more information around adding compilers to your infrastructure [Expanding Your Deployment](expanding.md#adding-compilers-with-peadmadd_compiler) |
0 commit comments