Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{"width":2145,"height":1419,"updated":"2026-05-07T22:28:53.266Z"}
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,10 @@
One of the benefits of High Availability is the database and file storage is running on a separate infrastructure from the Octopus Server service. For a production instance, we recommend everyone follow the steps below, even if you plan on running a single node instance. If anything were to happen to that single node, you could be back up and running quickly with a minimal amount of effort. In addition, adding a second node later will be much easier.
:::

:::figure
![Octopus Deploy Self-Hosted Reference Diagram](/docs/img/installation/octopus-install-diagram.png)
:::

This implementation guide will help configure High Availability. If you are looking for an in-depth set of recommendations, please refer to our white paper on [Best Practices for Self-Hosted Octopus Deploy HA/DR](https://octopus.com/whitepapers/best-practice-for-self-hosted-octopus-deploy-ha-dr).

## How High Availability Works
Expand All @@ -39,20 +43,20 @@
1. Tasks (Deployments, runbook runs, health checks, package re-indexing, system integrity checks, etc.)
2. User Interface via the Web UI and REST API (Users, build server integrations, deployment target registrations, etc.)

Tasks are placed onto a first-in-first-out (FIFO) queue. By default, each Octopus Deploy node is configured to process five (5) tasks concurrently, which [can be updated in the UI](/docs/support/increase-the-octopus-server-task-cap). That is known as the task cap. Once the task cap is reached, the remaining tasks in the queue will wait until one of the other tasks is finished.

Check failure on line 46 in src/pages/docs/best-practices/self-hosted-octopus/high-availability.mdx

View workflow job for this annotation

GitHub Actions / lint

Trailing spaces

src/pages/docs/best-practices/self-hosted-octopus/high-availability.mdx:46:380 MD009/no-trailing-spaces Trailing spaces [Expected: 0 or 2; Actual: 1] https://github.com/DavidAnson/markdownlint/blob/v0.40.0/doc/md009.md

Each Octopus Server node has a separate task cap. High Availability allows you to scale the task cap horizontally. If you have two (2) Octopus Server nodes each with a task cap of 10, you can process 20 concurrent tasks. Each node will pull items from the task queue and process them.

Check failure on line 48 in src/pages/docs/best-practices/self-hosted-octopus/high-availability.mdx

View workflow job for this annotation

GitHub Actions / lint

Trailing spaces

src/pages/docs/best-practices/self-hosted-octopus/high-availability.mdx:48:285 MD009/no-trailing-spaces Trailing spaces [Expected: 0 or 2; Actual: 1] https://github.com/DavidAnson/markdownlint/blob/v0.40.0/doc/md009.md

Learn more about [how High Availability processes tasks in the queue](/docs/administration/high-availability/how-high-availability-works) section.

## High Availability Limits

Octopus Deploy's High Availability functionality provides many benefits, but it has limits.

Check failure on line 54 in src/pages/docs/best-practices/self-hosted-octopus/high-availability.mdx

View workflow job for this annotation

GitHub Actions / lint

Trailing spaces

src/pages/docs/best-practices/self-hosted-octopus/high-availability.mdx:54:92 MD009/no-trailing-spaces Trailing spaces [Expected: 0 or 2; Actual: 1] https://github.com/DavidAnson/markdownlint/blob/v0.40.0/doc/md009.md

1. All Octopus Server nodes must run the same version of Octopus Deploy. Upgrading to a newer version of Octopus Deploy will require an outage as you upgrade all nodes.
1. You cannot specify the node a deployment or runbook run to execute on. Octopus Deploy uses a FIFO queue, nodes will pick up any pending tasks.
1. If a deployment or runbook run fails, it fails. Octopus Deploy will not automatically attempt to re-run that failed deployment or runbook run on a different node. In our experience, changing nodes rarely has been the solution to a failed deployment or runbook run.
1. All the Octopus Server nodes must connect to the same database.

Check failure on line 59 in src/pages/docs/best-practices/self-hosted-octopus/high-availability.mdx

View workflow job for this annotation

GitHub Actions / lint

Trailing spaces

src/pages/docs/best-practices/self-hosted-octopus/high-availability.mdx:59:67 MD009/no-trailing-spaces Trailing spaces [Expected: 0 or 2; Actual: 1] https://github.com/DavidAnson/markdownlint/blob/v0.40.0/doc/md009.md
1. Octopus Server nodes have no concept of a "read-only" connection to a database. All online nodes perform write operations to the database. Even if it is not processing tasks.
1. Octopus Server nodes are sensitive to latency to SQL Server and the file storage. The Octopus Server nodes, SQL Server, and file storage should all be located in the same data center or cloud region. The latency between availability zones within the same cloud region is acceptable. While the latency between cloud regions or data centers is not.

Expand All @@ -60,17 +64,17 @@

## Calculating Task Cap

The amount of computing resources required for the Octopus Server nodes and database is dependent on the task cap. The higher the task cap, the more resources you'll need.

Check failure on line 67 in src/pages/docs/best-practices/self-hosted-octopus/high-availability.mdx

View workflow job for this annotation

GitHub Actions / lint

Trailing spaces

src/pages/docs/best-practices/self-hosted-octopus/high-availability.mdx:67:172 MD009/no-trailing-spaces Trailing spaces [Expected: 0 or 2; Actual: 1] https://github.com/DavidAnson/markdownlint/blob/v0.40.0/doc/md009.md

To calculate the task cap we recommend using the number of applications or projects you need to deploy during the production deployment window.

Check failure on line 69 in src/pages/docs/best-practices/self-hosted-octopus/high-availability.mdx

View workflow job for this annotation

GitHub Actions / lint

Trailing spaces

src/pages/docs/best-practices/self-hosted-octopus/high-availability.mdx:69:144 MD009/no-trailing-spaces Trailing spaces [Expected: 0 or 2; Actual: 1] https://github.com/DavidAnson/markdownlint/blob/v0.40.0/doc/md009.md

- Deployments and runbook runs are the most common tasks.

Check failure on line 71 in src/pages/docs/best-practices/self-hosted-octopus/high-availability.mdx

View workflow job for this annotation

GitHub Actions / lint

Trailing spaces

src/pages/docs/best-practices/self-hosted-octopus/high-availability.mdx:71:58 MD009/no-trailing-spaces Trailing spaces [Expected: 0 or 2; Actual: 1] https://github.com/DavidAnson/markdownlint/blob/v0.40.0/doc/md009.md
- Deployments typically take longer than any other task, including runbook runs.

Check failure on line 72 in src/pages/docs/best-practices/self-hosted-octopus/high-availability.mdx

View workflow job for this annotation

GitHub Actions / lint

Trailing spaces

src/pages/docs/best-practices/self-hosted-octopus/high-availability.mdx:72:81 MD009/no-trailing-spaces Trailing spaces [Expected: 0 or 2; Actual: 1] https://github.com/DavidAnson/markdownlint/blob/v0.40.0/doc/md009.md
- Production deployments are time-constrained. They are done off-hours during an outage window.

Once you know the number of projects and the duration of the window, you can calculate the task cap using the average deployment duration. If you don't know the average deployment duration, use 30 minutes as the starting point. The formula is:

```

Check failure on line 77 in src/pages/docs/best-practices/self-hosted-octopus/high-availability.mdx

View workflow job for this annotation

GitHub Actions / lint

Fenced code blocks should have a language specified

src/pages/docs/best-practices/self-hosted-octopus/high-availability.mdx:77 MD040/fenced-code-language Fenced code blocks should have a language specified [Context: "```"] https://github.com/DavidAnson/markdownlint/blob/v0.40.0/doc/md040.md
(Number of Projects to Deploy * Average Deployment Duration) / Production Deployment Window in Minutes
```

Expand Down Expand Up @@ -130,7 +134,7 @@

#### Octopus Server node compute resources

Below is a baseline for setting compute resources based on the task cap. You are responsible for monitoring the compute resource utilization of your Octopus Server nodes to ensure you aren't over or under-provisioning.

Check failure on line 137 in src/pages/docs/best-practices/self-hosted-octopus/high-availability.mdx

View workflow job for this annotation

GitHub Actions / lint

Trailing spaces

src/pages/docs/best-practices/self-hosted-octopus/high-availability.mdx:137:219 MD009/no-trailing-spaces Trailing spaces [Expected: 0 or 2; Actual: 1] https://github.com/DavidAnson/markdownlint/blob/v0.40.0/doc/md009.md

| Task Cap Per Node | Windows Compute Resources | Container Compute Resources |
| ----------------- | ------------------------- | ---------------------------------- |
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,10 @@ There are three components to an Octopus Deploy instance:
- **SQL Server Database** Most data used by the Octopus Server nodes is stored in this database.
- **Files or BLOB Storage** Some larger files - like [packages](/docs/packaging-applications/package-repositories), artifacts, and deployment task logs - aren't suitable to be stored in the database and are stored on the file system instead. This can be a local folder, a network file share, or a cloud provider's storage.

:::figure
![Octopus Deploy Self-Hosted Reference Diagram](/docs/img/installation/octopus-install-diagram.png)
:::

This document will provide you with guidelines and recommendations for self-hosting Octopus Deploy.

<OctopusReleases />
Expand Down
4 changes: 4 additions & 0 deletions src/pages/docs/installation/index.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,10 @@ All inbound traffic to Octopus Deploy is via:

For production instances of Octopus Deploy, it is best to configure a [load balancer](/docs/installation/load-balancers) to route traffic to your instance. Leveraging a load balancer offers numerous benefits, such as redirecting users to a maintenance page while the instance is down for upgrading, as well as making it much easier to configure High Availability later.

:::figure
![Octopus Deploy Self-Hosted Reference Diagram](/docs/img/installation/octopus-install-diagram.png)
:::

## Self-hosted Octopus Server

When installed, the self-hosted Octopus Server:
Expand Down
Loading