Skip to content

Commit

Permalink
Add DR virtualization scenario (#3615)
Browse files Browse the repository at this point in the history
Co-authored-by: Maximilian Kolb <mail@maximilian-kolb.de>
Co-authored-by: Evgeni Golov <evgeni@golov.de>
  • Loading branch information
3 people authored Feb 12, 2025
1 parent 4e264ea commit 0485f4b
Show file tree
Hide file tree
Showing 8 changed files with 79 additions and 0 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
include::modules/con_disaster-recovery-by-virtualizing-your-projectserver.adoc[]

include::modules/ref_prerequisites-disaster-recovery-by-virtualizing-your-projectserver.adoc[leveloffset=+1]

include::modules/proc_preparing-for-disaster-recovery-by-virtualizing-your-projectserver.adoc[leveloffset=+1]

include::modules/proc_recovering-from-disaster-by-restoring-a-vm-snapshot-of-projectserver.adoc[leveloffset=+1]

include::modules/proc_retrieving-status-of-services.adoc[leveloffset=+1]
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
include::modules/con_preparing-for-disaster-recovery-and-recovering-from-data-loss.adoc[]

include::modules/con_overview-of-recommended-disaster-recovery-plans.adoc[leveloffset=+1]

include::assembly_disaster-recovery-by-virtualizing-your-projectserver.adoc[leveloffset=+1]
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
[id="disaster-recovery-by-virtualizing-your-{project-context}-server"]
= Disaster recovery by virtualizing your {ProjectServer}

If you virtualize your {ProjectServer} and ensure that you take regular snapshots of the virtual machine (VM), you can respond to various disaster scenarios by restoring your {Project} deployment from one of your snapshots.

[NOTE]
====
The details for how to implement this scenario depend on your choice of a virtualization platform.
Due to the variety of different hypervisors and their capabilities, {Team} does not provide detailed instructions for any specific virtualization platform.
====
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
[id="preparing-for-disaster-recovery-by-virtualizing-your-{project-context}-server"]
= Preparing for disaster recovery by virtualizing your {ProjectServer}

Implement a reliable process for regularly taking VM snapshots of your virtualized {ProjectServer} and for backing up your snapshots for long-term storage.

.Procedure
. Define a schedule for taking periodic snapshots of your virtualized {ProjectServer}.
Consider your tolerance for potential data loss:
Taking snapshots frequently will result in smaller amounts of data loss in case of a disaster.
However, creating a snapshot takes time, and the snapshots also require storage space.
. Define your snapshot retention policy.
Consider how many snapshots you want to store: Regularly removing outdated snapshots helps optimize storage usage.
. Using your hypervisor, schedule periodic snapshots of your {ProjectServer}.
. Schedule periodic backups of the snapshots to prevent data loss in case of hypervisor failure.
+
[NOTE]
====
While snapshots provide quick recovery points, backing up your snapshots gives you the ability for long-term storage and provides extra safety in case of a disaster on the side of your hypervisor.
====
. If you are using an external database that runs on a different machine than your {ProjectServer}, create snapshots and backups on the same schedule as your {ProjectServer}.

.Verification
. Verify that your hypervisor takes the snapshots according to the schedule that you defined.
. Use the latest snapshot of your {ProjectServer} and restore it in an isolated environment.
. To verify that you will be able to restore {Project} services in case of a disaster, assess the functionality of the test {ProjectServer}.
See xref:Retrieving_the_Status_of_Services_{context}[].
. Perform these verification checks regularly.
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
[id="recovering-from-disaster-by-restoring-a-vm-snapshot-of-{project-context}-server"]
= Recovering from disaster by restoring a VM snapshot of {ProjectServer}

In case of a disaster, use a virtual machine (VM) snapshot of your {ProjectServer} to restore {Project} services.

include::snip_disaster-recovery-hostname-cannot-change.adoc[]

.Procedure
. Identify the snapshot from which you want to recover.
. Use hypervisor tools to restore from the selected snapshot.
. If you are using an external database that runs on a different machine than your {ProjectServer}, ensure that you restore the database from a snapshot taken at the same time as or before the {ProjectServer} snapshot.
. Update DNS records so that the {ProjectServer} hostname resolves to the new IP address.
This redirects traffic from the old server to the new server and you will not need to re-register your hosts.

.Verification
* Assess the functionality of your restored {ProjectServer}.
See xref:Retrieving_the_Status_of_Services_{context}[].
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
[id="prerequisites-disaster-recovery-by-virtualizing-{project-context}-server"]
= Prerequisites

* Review xref:overview-of-recommended-disaster-recovery-plans[] to make sure that this disaster recovery plan works for you.
* Your {ProjectServer} is deployed as a VM.
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
[IMPORTANT]
====
Ensure that the hostname of your {ProjectServer} does not change during recovery.
The IP address can change.
====
4 changes: 4 additions & 0 deletions guides/doc-Administering_Project/master.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,11 @@ include::common/assembly_using-foreman-webhooks.adoc[leveloffset=+1]

include::common/assembly_searching-and-bookmarking.adoc[leveloffset=+1]

:parent-context: {context}
:context: disaster-recovery
include::common/assembly_preparing-for-disaster-recovery-and-recovering-from-data-loss.adoc[leveloffset=+1]
:context: {parent-context}
:!parent-context:

[appendix]
ifdef::satellite[]
Expand Down

0 comments on commit 0485f4b

Please sign in to comment.