From 0bf30c5401d51be7df2fc94832119735481cdc01 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Aneta=20=C5=A0teflov=C3=A1=20Petrov=C3=A1?= Date: Thu, 9 Jan 2025 12:03:38 +0100 Subject: [PATCH 01/14] Turn DR planning into a top-level chapter --- guides/common/assembly_deployment-path.adoc | 2 -- guides/doc-Planning_for_Project/master.adoc | 2 ++ 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/guides/common/assembly_deployment-path.adoc b/guides/common/assembly_deployment-path.adoc index 232b215886..2acf9d4f09 100644 --- a/guides/common/assembly_deployment-path.adoc +++ b/guides/common/assembly_deployment-path.adoc @@ -26,6 +26,4 @@ include::modules/con_best-practices-for-role-based-access-control-in-project.ado include::modules/con_configuring-provisioning.adoc[leveloffset=+1] -include::modules/con_planning-for-disaster-recovery.adoc[leveloffset=+1] - include::modules/con_additional-deployment-tasks.adoc[leveloffset=+1] diff --git a/guides/doc-Planning_for_Project/master.adoc b/guides/doc-Planning_for_Project/master.adoc index 0feeafe5bc..330fee2d7b 100644 --- a/guides/doc-Planning_for_Project/master.adoc +++ b/guides/doc-Planning_for_Project/master.adoc @@ -39,6 +39,8 @@ include::common/assembly_deployment-path.adoc[leveloffset=+1] include::common/assembly_common-deployment-scenarios.adoc[leveloffset=+1] +include::common/modules/con_planning-for-disaster-recovery.adoc[leveloffset=+1] + include::topics/Provisioning_Concepts.adoc[] include::topics/Required_Technical_Users.adoc[] From a03c8fed8682d8d58f74d145ae24e7ad6da41862 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Aneta=20=C5=A0teflov=C3=A1=20Petrov=C3=A1?= Date: Thu, 9 Jan 2025 15:24:48 +0100 Subject: [PATCH 02/14] Turn DR top-level chapter into an assembly --- guides/common/assembly_planning-for-disaster-recovery.adoc | 1 + guides/doc-Planning_for_Project/master.adoc | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) create mode 100644 guides/common/assembly_planning-for-disaster-recovery.adoc diff --git a/guides/common/assembly_planning-for-disaster-recovery.adoc b/guides/common/assembly_planning-for-disaster-recovery.adoc new file mode 100644 index 0000000000..b3a8b72d7e --- /dev/null +++ b/guides/common/assembly_planning-for-disaster-recovery.adoc @@ -0,0 +1 @@ +include::modules/con_planning-for-disaster-recovery.adoc[] diff --git a/guides/doc-Planning_for_Project/master.adoc b/guides/doc-Planning_for_Project/master.adoc index 330fee2d7b..b23a811fd1 100644 --- a/guides/doc-Planning_for_Project/master.adoc +++ b/guides/doc-Planning_for_Project/master.adoc @@ -39,7 +39,7 @@ include::common/assembly_deployment-path.adoc[leveloffset=+1] include::common/assembly_common-deployment-scenarios.adoc[leveloffset=+1] -include::common/modules/con_planning-for-disaster-recovery.adoc[leveloffset=+1] +include::common/assembly_planning-for-disaster-recovery.adoc[leveloffset=+1] include::topics/Provisioning_Concepts.adoc[] From 05b8706bd674cda3b38682232270f4b79de584b0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Aneta=20=C5=A0teflov=C3=A1=20Petrov=C3=A1?= Date: Thu, 9 Jan 2025 15:28:20 +0100 Subject: [PATCH 03/14] Turn existing DR planning into add. resources --- .../assembly_planning-for-disaster-recovery.adoc | 2 ++ .../con_planning-for-disaster-recovery.adoc | 15 +-------------- ...-resources-planning-for-disaster-recovery.adoc | 11 +++++++++++ 3 files changed, 14 insertions(+), 14 deletions(-) create mode 100644 guides/common/modules/ref_additional-resources-planning-for-disaster-recovery.adoc diff --git a/guides/common/assembly_planning-for-disaster-recovery.adoc b/guides/common/assembly_planning-for-disaster-recovery.adoc index b3a8b72d7e..5ad5f81f4e 100644 --- a/guides/common/assembly_planning-for-disaster-recovery.adoc +++ b/guides/common/assembly_planning-for-disaster-recovery.adoc @@ -1 +1,3 @@ include::modules/con_planning-for-disaster-recovery.adoc[] + +include::modules/ref_additional-resources-planning-for-disaster-recovery.adoc[leveloffset=+1] diff --git a/guides/common/modules/con_planning-for-disaster-recovery.adoc b/guides/common/modules/con_planning-for-disaster-recovery.adoc index 4c250f8f3e..901e1f4015 100644 --- a/guides/common/modules/con_planning-for-disaster-recovery.adoc +++ b/guides/common/modules/con_planning-for-disaster-recovery.adoc @@ -1,15 +1,2 @@ -[id="planning-for-disaster-recovery_{context}"] +[id="planning-for-disaster-recovery"] = Planning for disaster recovery - -Ensure to back up your {Project} data so that you can recover your {Project} deployment in case of a disaster. - -To create backups of your {ProjectServer} and {SmartProxyServers}, use the `{foreman-maintain} backup` command. -For more information, see {AdministeringDocURL}backing-up-{project-context}-server-and-{smart-proxy-context}_admin[Backing up {ProjectServer} and {SmartProxyServer}] in _{AdministeringDocTitle}_. - -To backup your hosts, you can use remote execution to configure recurring backup tasks that {Project} will run on the hosts. -For more information, see {ManagingHostsDocURL}Configuring_and_Setting_Up_Remote_Jobs_managing-hosts[Configuring and setting up remote jobs] in _{ManagingHostsDocTitle}_. - -ifndef::satellite[] -To create snapshots of hosts, you can use the Snapshot Management plugin. -For more information, see {ManagingHostsDocURL}Creating_Snapshots_of_a_Host_managing-hosts[Creating snapshots of a host] in _{ManagingHostsDocTitle}_. -endif::[] diff --git a/guides/common/modules/ref_additional-resources-planning-for-disaster-recovery.adoc b/guides/common/modules/ref_additional-resources-planning-for-disaster-recovery.adoc new file mode 100644 index 0000000000..37f0a3cdf0 --- /dev/null +++ b/guides/common/modules/ref_additional-resources-planning-for-disaster-recovery.adoc @@ -0,0 +1,11 @@ +[id="additional-resources-planning-for-disaster-recovery"] += Additional resources + +* To create backups of your {ProjectServer} and {SmartProxyServers}, use the `{foreman-maintain} backup` command. +For more information, see {AdministeringDocURL}backing-up-{project-context}-server-and-{smart-proxy-context}_admin[Backing up {ProjectServer} and {SmartProxyServer}] in _{AdministeringDocTitle}_. +* To backup your hosts, you can use remote execution to configure recurring backup tasks that {Project} will run on the hosts. +For more information, see {ManagingHostsDocURL}Configuring_and_Setting_Up_Remote_Jobs_managing-hosts[Configuring and setting up remote jobs] in _{ManagingHostsDocTitle}_. +ifndef::satellite[] +* To create snapshots of hosts, you can use the Snapshot Management plugin. +For more information, see {ManagingHostsDocURL}Creating_Snapshots_of_a_Host_managing-hosts[Creating snapshots of a host] in _{ManagingHostsDocTitle}_. +endif::[] From 06f8a6dff645199b144837afc361b79998a9223d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Aneta=20=C5=A0teflov=C3=A1=20Petrov=C3=A1?= Date: Thu, 9 Jan 2025 19:07:56 +0100 Subject: [PATCH 04/14] Fix a typo --- ...ref_additional-resources-planning-for-disaster-recovery.adoc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/guides/common/modules/ref_additional-resources-planning-for-disaster-recovery.adoc b/guides/common/modules/ref_additional-resources-planning-for-disaster-recovery.adoc index 37f0a3cdf0..b9bcd99930 100644 --- a/guides/common/modules/ref_additional-resources-planning-for-disaster-recovery.adoc +++ b/guides/common/modules/ref_additional-resources-planning-for-disaster-recovery.adoc @@ -3,7 +3,7 @@ * To create backups of your {ProjectServer} and {SmartProxyServers}, use the `{foreman-maintain} backup` command. For more information, see {AdministeringDocURL}backing-up-{project-context}-server-and-{smart-proxy-context}_admin[Backing up {ProjectServer} and {SmartProxyServer}] in _{AdministeringDocTitle}_. -* To backup your hosts, you can use remote execution to configure recurring backup tasks that {Project} will run on the hosts. +* To back up your hosts, you can use remote execution to configure recurring backup tasks that {Project} will run on the hosts. For more information, see {ManagingHostsDocURL}Configuring_and_Setting_Up_Remote_Jobs_managing-hosts[Configuring and setting up remote jobs] in _{ManagingHostsDocTitle}_. ifndef::satellite[] * To create snapshots of hosts, you can use the Snapshot Management plugin. From b1337a8729c3bc9b0065b2bfdae150a34535173a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Aneta=20=C5=A0teflov=C3=A1=20Petrov=C3=A1?= Date: Thu, 9 Jan 2025 19:12:01 +0100 Subject: [PATCH 05/14] Rename 'Planning for DR' to 'Preparing for DR' --- guides/common/assembly_planning-for-disaster-recovery.adoc | 3 --- guides/common/assembly_preparing-for-disaster-recovery.adoc | 3 +++ guides/common/modules/con_planning-for-disaster-recovery.adoc | 2 -- guides/common/modules/con_preparing-for-disaster-recovery.adoc | 2 ++ ..._additional-resources-preparing-for-disaster-recovery.adoc} | 2 +- guides/doc-Planning_for_Project/master.adoc | 2 +- 6 files changed, 7 insertions(+), 7 deletions(-) delete mode 100644 guides/common/assembly_planning-for-disaster-recovery.adoc create mode 100644 guides/common/assembly_preparing-for-disaster-recovery.adoc delete mode 100644 guides/common/modules/con_planning-for-disaster-recovery.adoc create mode 100644 guides/common/modules/con_preparing-for-disaster-recovery.adoc rename guides/common/modules/{ref_additional-resources-planning-for-disaster-recovery.adoc => ref_additional-resources-preparing-for-disaster-recovery.adoc} (93%) diff --git a/guides/common/assembly_planning-for-disaster-recovery.adoc b/guides/common/assembly_planning-for-disaster-recovery.adoc deleted file mode 100644 index 5ad5f81f4e..0000000000 --- a/guides/common/assembly_planning-for-disaster-recovery.adoc +++ /dev/null @@ -1,3 +0,0 @@ -include::modules/con_planning-for-disaster-recovery.adoc[] - -include::modules/ref_additional-resources-planning-for-disaster-recovery.adoc[leveloffset=+1] diff --git a/guides/common/assembly_preparing-for-disaster-recovery.adoc b/guides/common/assembly_preparing-for-disaster-recovery.adoc new file mode 100644 index 0000000000..33a0f37cb7 --- /dev/null +++ b/guides/common/assembly_preparing-for-disaster-recovery.adoc @@ -0,0 +1,3 @@ +include::modules/con_preparing-for-disaster-recovery.adoc[] + +include::modules/ref_additional-resources-preparing-for-disaster-recovery.adoc[leveloffset=+1] diff --git a/guides/common/modules/con_planning-for-disaster-recovery.adoc b/guides/common/modules/con_planning-for-disaster-recovery.adoc deleted file mode 100644 index 901e1f4015..0000000000 --- a/guides/common/modules/con_planning-for-disaster-recovery.adoc +++ /dev/null @@ -1,2 +0,0 @@ -[id="planning-for-disaster-recovery"] -= Planning for disaster recovery diff --git a/guides/common/modules/con_preparing-for-disaster-recovery.adoc b/guides/common/modules/con_preparing-for-disaster-recovery.adoc new file mode 100644 index 0000000000..29dba502eb --- /dev/null +++ b/guides/common/modules/con_preparing-for-disaster-recovery.adoc @@ -0,0 +1,2 @@ +[id="preparing-for-disaster-recovery"] += Preparing for disaster recovery diff --git a/guides/common/modules/ref_additional-resources-planning-for-disaster-recovery.adoc b/guides/common/modules/ref_additional-resources-preparing-for-disaster-recovery.adoc similarity index 93% rename from guides/common/modules/ref_additional-resources-planning-for-disaster-recovery.adoc rename to guides/common/modules/ref_additional-resources-preparing-for-disaster-recovery.adoc index b9bcd99930..ec8baf0219 100644 --- a/guides/common/modules/ref_additional-resources-planning-for-disaster-recovery.adoc +++ b/guides/common/modules/ref_additional-resources-preparing-for-disaster-recovery.adoc @@ -1,4 +1,4 @@ -[id="additional-resources-planning-for-disaster-recovery"] +[id="additional-resources-preparing-for-disaster-recovery"] = Additional resources * To create backups of your {ProjectServer} and {SmartProxyServers}, use the `{foreman-maintain} backup` command. diff --git a/guides/doc-Planning_for_Project/master.adoc b/guides/doc-Planning_for_Project/master.adoc index b23a811fd1..6aa89c5f41 100644 --- a/guides/doc-Planning_for_Project/master.adoc +++ b/guides/doc-Planning_for_Project/master.adoc @@ -39,7 +39,7 @@ include::common/assembly_deployment-path.adoc[leveloffset=+1] include::common/assembly_common-deployment-scenarios.adoc[leveloffset=+1] -include::common/assembly_planning-for-disaster-recovery.adoc[leveloffset=+1] +include::common/assembly_preparing-for-disaster-recovery.adoc[leveloffset=+1] include::topics/Provisioning_Concepts.adoc[] From 11d153e330cd37cf2335975ac34af3cf7e666713 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Aneta=20=C5=A0teflov=C3=A1=20Petrov=C3=A1?= Date: Thu, 9 Jan 2025 19:29:03 +0100 Subject: [PATCH 06/14] Add DR assembly intro --- guides/common/modules/con_preparing-for-disaster-recovery.adoc | 3 +++ 1 file changed, 3 insertions(+) diff --git a/guides/common/modules/con_preparing-for-disaster-recovery.adoc b/guides/common/modules/con_preparing-for-disaster-recovery.adoc index 29dba502eb..64a793068d 100644 --- a/guides/common/modules/con_preparing-for-disaster-recovery.adoc +++ b/guides/common/modules/con_preparing-for-disaster-recovery.adoc @@ -1,2 +1,5 @@ [id="preparing-for-disaster-recovery"] = Preparing for disaster recovery + +{Team} recommends preparing a disaster recovery plan to ensure the continuity of {Project} services in case of a disruptive event. +These guidelines help ensure that you will be able to restore your {Project} deployment to an operational state after an incident. From fb8798dfbb9ecf3badd23d0c0a62788786145c1a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Aneta=20=C5=A0teflov=C3=A1=20Petrov=C3=A1?= Date: Thu, 9 Jan 2025 20:59:22 +0100 Subject: [PATCH 07/14] Add overview of disaster recovery plans --- ...embly_preparing-for-disaster-recovery.adoc | 2 + ...f-recommended-disaster-recovery-plans.adoc | 73 +++++++++++++++++++ 2 files changed, 75 insertions(+) create mode 100644 guides/common/modules/con_overview-of-recommended-disaster-recovery-plans.adoc diff --git a/guides/common/assembly_preparing-for-disaster-recovery.adoc b/guides/common/assembly_preparing-for-disaster-recovery.adoc index 33a0f37cb7..2b752fdd85 100644 --- a/guides/common/assembly_preparing-for-disaster-recovery.adoc +++ b/guides/common/assembly_preparing-for-disaster-recovery.adoc @@ -1,3 +1,5 @@ include::modules/con_preparing-for-disaster-recovery.adoc[] +include::modules/con_overview-of-recommended-disaster-recovery-plans.adoc[leveloffset=+1] + include::modules/ref_additional-resources-preparing-for-disaster-recovery.adoc[leveloffset=+1] diff --git a/guides/common/modules/con_overview-of-recommended-disaster-recovery-plans.adoc b/guides/common/modules/con_overview-of-recommended-disaster-recovery-plans.adoc new file mode 100644 index 0000000000..7d0e6fca25 --- /dev/null +++ b/guides/common/modules/con_overview-of-recommended-disaster-recovery-plans.adoc @@ -0,0 +1,73 @@ +[id="overview-of-recommended-disaster-recovery-plans"] += Overview of recommended disaster recovery plans + +Choose a disaster recovery plan that best helps ensure the continuity of {Project} services in your deployment. + +Virtualizating your {ProjectServer}:: +How do I back up?::: +Virtualize your {ProjectServer} and use the hypervisor tools to take virtual machine snapshots of the server. +This method is suitable if you can run {Project} on top of virtualization. +How will I recover in case of a disruptive event?::: +To recover {Project} services, restore a virtual machine snapshot. ++ +[IMPORTANT] +==== +During recovery, you will need to ensure that the hostname of your {ProjectServer} does not change. +The IP address can change. +==== +What is the expected impact?::: +Expect some amount of data inconsistency after recovery, based on how often you created snapshosts. + +Active and passive {ProjectServer}, with external storage:: +How do I back up?::: +Store the following critical data on network attached storage: content in `/var/lib/pulp` and database in `/var/lib/pgsql`. +Replicate this storage into a different data center. +Attach the storage to a {ProjectServer} that is a clone of the primary {ProjectServer} but runs passively. +How will I recover in case of a disruptive event?::: +To recover {Project} services, switch DNS records of the active {ProjectServer} with the passive {ProjectServer}. +This ensures that the passive server becomes the active server. +All hosts remain connected without configuration updates. +What is the expected impact?::: +Expect some amount of data inconsistency after recovery, based on how often you synchronized the data storage. + +Active and passive {ProjectServer}, with backup and restore:: +How do I back up?::: +Ensure periodic backups of your {ProjectServer}. +Copy this backup to a passive {ProjectServer} and restore them on the passive server. +How will I recover in case of a disruptive event?::: +To recover {Project} services, switch DNS records of the active {ProjectServer} with the passive {ProjectServer}. +This ensures that the passive server becomes the active server. +All hosts remain connected without configuration updates. +What is the expected impact?::: +Expect some amount of data inconsistency after recovery, based on how often you took and restored backups and on how long it takes to complete the restore process. + +Dual active {ProjectServer}:: +How do I back up?::: +Operate an active, independent {ProjectServer} per data center. +Hosts from each data center are registered to the {ProjectServer} in that data center. +Then configure automation to ensure recovery in case of a disruptive event. +For example, you can periodically run a health check and if the health check discovers that the current {ProjectServer} a host is registered to does not resolve, the host is re-registered to the other {ProjectServer}. ++ +To minimize downtime, you can automate the recovery in various ways. +For example, you can use the {Project} Ansible collection. +For more information, see {AdministeringDocURL}managing_project_with_ansible_collections_admin[Managing {Project} with Ansible collections] in _{AdministeringDocTitle}_. +ifdef::katello,orcharhino,satellite[] ++ +[IMPORTANT] +==== +You must ensure that content synchronization and content view creation are synchronized to create the same content view in each {Project} and prevent drift. +Content drift occurs when available content deviates from the intended state defined by a content view. + +Alternatively, you can choose one of the two {ProjectServer}s to be the source of truth for content synchronization and content view creation. +In this case, the other {ProjectServer} synchronizes its content from the first {ProjectServer}. + +For more information, see {ContentManagementDocURL}/synchronizing_content_between_servers_content-management[Synchronizing content between servers] in _{ContentManagementDocTitle}_. +==== +endif::[] +How will I recover in case of a disruptive event?::: +To recover {Project} services, re-configure hosts to point at the {ProjectServer} in the other data center. +You will need to re-register each host to the new server. +ifdef::katello,orcharhino,satellite[] +What is the expected impact?::: +Expect inconsistency in content that is available to hosts if you were unable to prevent content drift. +endif::[] From c02748a42e3e9ac65b770b36c0371f09a0fea736 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Aneta=20=C5=A0teflov=C3=A1=20Petrov=C3=A1?= Date: Tue, 14 Jan 2025 11:42:22 +0100 Subject: [PATCH 08/14] Add suggestions from tech review --- ..._overview-of-recommended-disaster-recovery-plans.adoc | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/guides/common/modules/con_overview-of-recommended-disaster-recovery-plans.adoc b/guides/common/modules/con_overview-of-recommended-disaster-recovery-plans.adoc index 7d0e6fca25..fccb8c0a4a 100644 --- a/guides/common/modules/con_overview-of-recommended-disaster-recovery-plans.adoc +++ b/guides/common/modules/con_overview-of-recommended-disaster-recovery-plans.adoc @@ -38,6 +38,9 @@ How will I recover in case of a disruptive event?::: To recover {Project} services, switch DNS records of the active {ProjectServer} with the passive {ProjectServer}. This ensures that the passive server becomes the active server. All hosts remain connected without configuration updates. ++ +Lowering your DNS time to live (TTL) value before switching the DNS records will help ensure the DNS records are updated quickly. +Your TTL affects how long it takes before your hosts are able to reconnect and access the new active {ProjectServer}. What is the expected impact?::: Expect some amount of data inconsistency after recovery, based on how often you took and restored backups and on how long it takes to complete the restore process. @@ -58,8 +61,12 @@ ifdef::katello,orcharhino,satellite[] You must ensure that content synchronization and content view creation are synchronized to create the same content view in each {Project} and prevent drift. Content drift occurs when available content deviates from the intended state defined by a content view. -Alternatively, you can choose one of the two {ProjectServer}s to be the source of truth for content synchronization and content view creation. +As an alternative, you can implement the following setups: + +* You can choose one of the two {ProjectServer}s to be the source of truth for content synchronization and content view creation. In this case, the other {ProjectServer} synchronizes its content from the first {ProjectServer}. +* You can configure a third {ProjectServer} to act as the content definition source of truth. +In this case, the other {ProjectServer}s act as management servers. For more information, see {ContentManagementDocURL}/synchronizing_content_between_servers_content-management[Synchronizing content between servers] in _{ContentManagementDocTitle}_. ==== From 93df98ceed891159a9271c105aa13426fe7106dd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Aneta=20=C5=A0teflov=C3=A1=20Petrov=C3=A1?= Date: Tue, 14 Jan 2025 11:46:36 +0100 Subject: [PATCH 09/14] Apply suggestions from peer review (fixing links) Co-authored-by: Maximilian Kolb --- .../con_overview-of-recommended-disaster-recovery-plans.adoc | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/guides/common/modules/con_overview-of-recommended-disaster-recovery-plans.adoc b/guides/common/modules/con_overview-of-recommended-disaster-recovery-plans.adoc index fccb8c0a4a..329df99f55 100644 --- a/guides/common/modules/con_overview-of-recommended-disaster-recovery-plans.adoc +++ b/guides/common/modules/con_overview-of-recommended-disaster-recovery-plans.adoc @@ -53,7 +53,7 @@ For example, you can periodically run a health check and if the health check dis + To minimize downtime, you can automate the recovery in various ways. For example, you can use the {Project} Ansible collection. -For more information, see {AdministeringDocURL}managing_project_with_ansible_collections_admin[Managing {Project} with Ansible collections] in _{AdministeringDocTitle}_. +For more information, see {AdministeringDocURL}Managing_Project_with_Ansible_Collections_admin[Managing {Project} with Ansible collections] in _{AdministeringDocTitle}_. ifdef::katello,orcharhino,satellite[] + [IMPORTANT] @@ -68,7 +68,7 @@ In this case, the other {ProjectServer} synchronizes its content from the first * You can configure a third {ProjectServer} to act as the content definition source of truth. In this case, the other {ProjectServer}s act as management servers. -For more information, see {ContentManagementDocURL}/synchronizing_content_between_servers_content-management[Synchronizing content between servers] in _{ContentManagementDocTitle}_. +For more information, see {ContentManagementDocURL}Synchronizing_Content_Between_Servers_content-management[Synchronizing content between {ProjectServerTitle}s] in _{ContentManagementDocTitle}_. ==== endif::[] How will I recover in case of a disruptive event?::: From 64126cb5e316de91855135d528d3072489b5c8a7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Aneta=20=C5=A0teflov=C3=A1=20Petrov=C3=A1?= Date: Thu, 16 Jan 2025 12:10:48 +0100 Subject: [PATCH 10/14] Fix spelling errors Because I finally installed a spell checker. --- .../con_overview-of-recommended-disaster-recovery-plans.adoc | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/guides/common/modules/con_overview-of-recommended-disaster-recovery-plans.adoc b/guides/common/modules/con_overview-of-recommended-disaster-recovery-plans.adoc index 329df99f55..75dc6fb010 100644 --- a/guides/common/modules/con_overview-of-recommended-disaster-recovery-plans.adoc +++ b/guides/common/modules/con_overview-of-recommended-disaster-recovery-plans.adoc @@ -3,7 +3,7 @@ Choose a disaster recovery plan that best helps ensure the continuity of {Project} services in your deployment. -Virtualizating your {ProjectServer}:: +Virtualizing your {ProjectServer}:: How do I back up?::: Virtualize your {ProjectServer} and use the hypervisor tools to take virtual machine snapshots of the server. This method is suitable if you can run {Project} on top of virtualization. @@ -16,7 +16,7 @@ During recovery, you will need to ensure that the hostname of your {ProjectServe The IP address can change. ==== What is the expected impact?::: -Expect some amount of data inconsistency after recovery, based on how often you created snapshosts. +Expect some amount of data inconsistency after recovery, based on how often you created snapshots. Active and passive {ProjectServer}, with external storage:: How do I back up?::: From c6e5edf43ac93795883ffdc604bef13f2ed0e3c0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Aneta=20=C5=A0teflov=C3=A1=20Petrov=C3=A1?= Date: Thu, 16 Jan 2025 20:20:56 +0100 Subject: [PATCH 11/14] Implement part of the feedback (w/ comments) --- ...f-recommended-disaster-recovery-plans.adoc | 25 +++++++++++-------- 1 file changed, 14 insertions(+), 11 deletions(-) diff --git a/guides/common/modules/con_overview-of-recommended-disaster-recovery-plans.adoc b/guides/common/modules/con_overview-of-recommended-disaster-recovery-plans.adoc index 75dc6fb010..1fd1408b4c 100644 --- a/guides/common/modules/con_overview-of-recommended-disaster-recovery-plans.adoc +++ b/guides/common/modules/con_overview-of-recommended-disaster-recovery-plans.adoc @@ -3,32 +3,36 @@ Choose a disaster recovery plan that best helps ensure the continuity of {Project} services in your deployment. +//[IMPORTANT] +//==== +//During recovery, you will need to ensure that the hostname of your {ProjectServer} does not change. +//The IP address can change. +//==== + Virtualizing your {ProjectServer}:: How do I back up?::: Virtualize your {ProjectServer} and use the hypervisor tools to take virtual machine snapshots of the server. This method is suitable if you can run {Project} on top of virtualization. How will I recover in case of a disruptive event?::: To recover {Project} services, restore a virtual machine snapshot. -+ -[IMPORTANT] -==== -During recovery, you will need to ensure that the hostname of your {ProjectServer} does not change. -The IP address can change. -==== What is the expected impact?::: -Expect some amount of data inconsistency after recovery, based on how often you created snapshots. +Expect some amount of data inconsistency after recovery, based on how old your last snapshot is. +You will lose data changes that have occurred since the snapshot you are using to recover was taken. +//While taking snapshots frequently will result in smaller amounts of data loss, creating the snapshots takes time and the snapshots themselves also take up space. +//When planning your snapshot taking schedule, compare these factors with your tolerance for data loss. Active and passive {ProjectServer}, with external storage:: How do I back up?::: Store the following critical data on network attached storage: content in `/var/lib/pulp` and database in `/var/lib/pgsql`. Replicate this storage into a different data center. Attach the storage to a {ProjectServer} that is a clone of the primary {ProjectServer} but runs passively. +//You can mount the network attached storage directly by both the active and the passive {ProjectServer}s or you can replicate the network attached storage on some interval to another location. How will I recover in case of a disruptive event?::: To recover {Project} services, switch DNS records of the active {ProjectServer} with the passive {ProjectServer}. This ensures that the passive server becomes the active server. All hosts remain connected without configuration updates. What is the expected impact?::: -Expect some amount of data inconsistency after recovery, based on how often you synchronized the data storage. +If the network attached storage is replicated to another location, expect some amount of data inconsistency after recovery based on the synchronization interval. Active and passive {ProjectServer}, with backup and restore:: How do I back up?::: @@ -38,9 +42,8 @@ How will I recover in case of a disruptive event?::: To recover {Project} services, switch DNS records of the active {ProjectServer} with the passive {ProjectServer}. This ensures that the passive server becomes the active server. All hosts remain connected without configuration updates. -+ -Lowering your DNS time to live (TTL) value before switching the DNS records will help ensure the DNS records are updated quickly. -Your TTL affects how long it takes before your hosts are able to reconnect and access the new active {ProjectServer}. +//Use a low DNS time to live (TTL) value to help ensure that hosts reach the new active {ProjectServer} quickly. +//Consider your tolerance for how long it takes before your hosts are able to reconnect and access the correct {ProjectServer} and set your TTL according to your needs. What is the expected impact?::: Expect some amount of data inconsistency after recovery, based on how often you took and restored backups and on how long it takes to complete the restore process. From fbf95009d0235f2161dd43c60b4d69dd844ba2b1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Aneta=20=C5=A0teflov=C3=A1=20Petrov=C3=A1?= Date: Thu, 16 Jan 2025 20:23:50 +0100 Subject: [PATCH 12/14] Add pros/cons list items --- ...rview-of-recommended-disaster-recovery-plans.adoc | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/guides/common/modules/con_overview-of-recommended-disaster-recovery-plans.adoc b/guides/common/modules/con_overview-of-recommended-disaster-recovery-plans.adoc index 1fd1408b4c..1a3c96e596 100644 --- a/guides/common/modules/con_overview-of-recommended-disaster-recovery-plans.adoc +++ b/guides/common/modules/con_overview-of-recommended-disaster-recovery-plans.adoc @@ -15,7 +15,8 @@ Virtualize your {ProjectServer} and use the hypervisor tools to take virtual mac This method is suitable if you can run {Project} on top of virtualization. How will I recover in case of a disruptive event?::: To recover {Project} services, restore a virtual machine snapshot. -What is the expected impact?::: +Advantages::: +Disadvantages and expected impact::: Expect some amount of data inconsistency after recovery, based on how old your last snapshot is. You will lose data changes that have occurred since the snapshot you are using to recover was taken. //While taking snapshots frequently will result in smaller amounts of data loss, creating the snapshots takes time and the snapshots themselves also take up space. @@ -31,7 +32,8 @@ How will I recover in case of a disruptive event?::: To recover {Project} services, switch DNS records of the active {ProjectServer} with the passive {ProjectServer}. This ensures that the passive server becomes the active server. All hosts remain connected without configuration updates. -What is the expected impact?::: +Advantages::: +Disadvantages and expected impact::: If the network attached storage is replicated to another location, expect some amount of data inconsistency after recovery based on the synchronization interval. Active and passive {ProjectServer}, with backup and restore:: @@ -44,7 +46,8 @@ This ensures that the passive server becomes the active server. All hosts remain connected without configuration updates. //Use a low DNS time to live (TTL) value to help ensure that hosts reach the new active {ProjectServer} quickly. //Consider your tolerance for how long it takes before your hosts are able to reconnect and access the correct {ProjectServer} and set your TTL according to your needs. -What is the expected impact?::: +Advantages::: +Disadvantages and expected impact::: Expect some amount of data inconsistency after recovery, based on how often you took and restored backups and on how long it takes to complete the restore process. Dual active {ProjectServer}:: @@ -77,7 +80,8 @@ endif::[] How will I recover in case of a disruptive event?::: To recover {Project} services, re-configure hosts to point at the {ProjectServer} in the other data center. You will need to re-register each host to the new server. +Advantages::: +Disadvantages and expected impact::: ifdef::katello,orcharhino,satellite[] -What is the expected impact?::: Expect inconsistency in content that is available to hosts if you were unable to prevent content drift. endif::[] From aed815fde0e8386606f752339b4a0d82dfed210d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Aneta=20=C5=A0teflov=C3=A1=20Petrov=C3=A1?= Date: Thu, 16 Jan 2025 20:32:54 +0100 Subject: [PATCH 13/14] Get rid of the ugly note and simplify content drift info --- ...f-recommended-disaster-recovery-plans.adoc | 29 +++++++------------ 1 file changed, 11 insertions(+), 18 deletions(-) diff --git a/guides/common/modules/con_overview-of-recommended-disaster-recovery-plans.adoc b/guides/common/modules/con_overview-of-recommended-disaster-recovery-plans.adoc index 1a3c96e596..349a155e7b 100644 --- a/guides/common/modules/con_overview-of-recommended-disaster-recovery-plans.adoc +++ b/guides/common/modules/con_overview-of-recommended-disaster-recovery-plans.adoc @@ -60,28 +60,21 @@ For example, you can periodically run a health check and if the health check dis To minimize downtime, you can automate the recovery in various ways. For example, you can use the {Project} Ansible collection. For more information, see {AdministeringDocURL}Managing_Project_with_Ansible_Collections_admin[Managing {Project} with Ansible collections] in _{AdministeringDocTitle}_. -ifdef::katello,orcharhino,satellite[] -+ -[IMPORTANT] -==== -You must ensure that content synchronization and content view creation are synchronized to create the same content view in each {Project} and prevent drift. -Content drift occurs when available content deviates from the intended state defined by a content view. - -As an alternative, you can implement the following setups: - -* You can choose one of the two {ProjectServer}s to be the source of truth for content synchronization and content view creation. -In this case, the other {ProjectServer} synchronizes its content from the first {ProjectServer}. -* You can configure a third {ProjectServer} to act as the content definition source of truth. -In this case, the other {ProjectServer}s act as management servers. - -For more information, see {ContentManagementDocURL}Synchronizing_Content_Between_Servers_content-management[Synchronizing content between {ProjectServerTitle}s] in _{ContentManagementDocTitle}_. -==== -endif::[] How will I recover in case of a disruptive event?::: To recover {Project} services, re-configure hosts to point at the {ProjectServer} in the other data center. You will need to re-register each host to the new server. Advantages::: Disadvantages and expected impact::: ifdef::katello,orcharhino,satellite[] -Expect inconsistency in content that is available to hosts if you were unable to prevent content drift. +You must ensure that content synchronization and content view creation are synchronized to create the same content view in each {Project} and prevent content drift. +Content drift occurs when available content deviates from the intended state defined by a content view. +If you fail to prevent content drift, expect inconsistency in the content that is available to hosts. + +//As an alternative, you can implement the following setups: +//* You can choose one of the two {ProjectServer}s to be the source of truth for content synchronization and content view creation. +//In this case, the other {ProjectServer} synchronizes its content from the first {ProjectServer}. +//* You can configure a third {ProjectServer} to act as the content definition source of truth. +//In this case, the other {ProjectServer}s act as management servers. +//+ +//For more information, see {ContentManagementDocURL}Synchronizing_Content_Between_Servers_content-management[Synchronizing content between {ProjectServerTitle}s] in _{ContentManagementDocTitle}_. endif::[] From 269a7ea9acbf991f11a74e7d00c6baa2ce57aaff Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Aneta=20=C5=A0teflov=C3=A1=20Petrov=C3=A1?= Date: Mon, 20 Jan 2025 13:03:27 +0100 Subject: [PATCH 14/14] Remove 'Advantages' placeholders --- .../con_overview-of-recommended-disaster-recovery-plans.adoc | 4 ---- 1 file changed, 4 deletions(-) diff --git a/guides/common/modules/con_overview-of-recommended-disaster-recovery-plans.adoc b/guides/common/modules/con_overview-of-recommended-disaster-recovery-plans.adoc index 349a155e7b..a80625461a 100644 --- a/guides/common/modules/con_overview-of-recommended-disaster-recovery-plans.adoc +++ b/guides/common/modules/con_overview-of-recommended-disaster-recovery-plans.adoc @@ -15,7 +15,6 @@ Virtualize your {ProjectServer} and use the hypervisor tools to take virtual mac This method is suitable if you can run {Project} on top of virtualization. How will I recover in case of a disruptive event?::: To recover {Project} services, restore a virtual machine snapshot. -Advantages::: Disadvantages and expected impact::: Expect some amount of data inconsistency after recovery, based on how old your last snapshot is. You will lose data changes that have occurred since the snapshot you are using to recover was taken. @@ -32,7 +31,6 @@ How will I recover in case of a disruptive event?::: To recover {Project} services, switch DNS records of the active {ProjectServer} with the passive {ProjectServer}. This ensures that the passive server becomes the active server. All hosts remain connected without configuration updates. -Advantages::: Disadvantages and expected impact::: If the network attached storage is replicated to another location, expect some amount of data inconsistency after recovery based on the synchronization interval. @@ -46,7 +44,6 @@ This ensures that the passive server becomes the active server. All hosts remain connected without configuration updates. //Use a low DNS time to live (TTL) value to help ensure that hosts reach the new active {ProjectServer} quickly. //Consider your tolerance for how long it takes before your hosts are able to reconnect and access the correct {ProjectServer} and set your TTL according to your needs. -Advantages::: Disadvantages and expected impact::: Expect some amount of data inconsistency after recovery, based on how often you took and restored backups and on how long it takes to complete the restore process. @@ -63,7 +60,6 @@ For more information, see {AdministeringDocURL}Managing_Project_with_Ansible_Col How will I recover in case of a disruptive event?::: To recover {Project} services, re-configure hosts to point at the {ProjectServer} in the other data center. You will need to re-register each host to the new server. -Advantages::: Disadvantages and expected impact::: ifdef::katello,orcharhino,satellite[] You must ensure that content synchronization and content view creation are synchronized to create the same content view in each {Project} and prevent content drift.