High Availability
PowerShell Universal high availability configuration.
PowerShell Universal can be configured for high availability by using a combination of SQL server persistence and a load balancer to ensure that both the front end tools, such as dashboards are accessible and back end tools, such as jobs, continue to run.

Persistence Configuration

We recommend taking advantage of SQL persistence to ensure that all nodes within your cluster share the same data in regards to job queues, app tokens and identities within your system. Each node should be configured with the same SQL server connection string.
As jobs run, users login and app tokens are created, the SQL server will be used to store this information and will be shared across nodes.

Source Control Configuration

We recommend using git synchronization to store and version control the PowerShell configuration scripts used to manage the PowerShell Universal nodes. One-way git sync may be preferred as the nodes will then be read-only and pull configurations after they have been merged to your production branch. Each node pulls the configuration files on a configurable interval (defaults to 1 minute). Storing git configuration settings in the database is desired as it requires less configuration per node.

Load Balancing

PowerShell Universal supports the use of load balancers such as F5 and nginx. There are some requirements that must be met when using load balancers.
  • Persistent (sticky) sessions are required by dashboards
  • Web socket support is required by the admin console and dashboards

Limitations

There currently are some limitations to highly available PowerShell Universal clusters.

Multi-Node Caching

Caching performed using $Cache or Set-PSUCache is currently limited to the single node that is performing these operations as they are stored in memory on the system. We recommend an external cache, such as Redis, if you wish to cache data across nodes.

Multi-Node Dashboard Broadcast

Multi-Node dashboard broadcast messages are currently not supported. Using cmdlets like Show-UDToast -Broadcast will cause a toast to be shown on all connected users to the current node but will not broadcast to the dashboards across all nodes.
Last modified 10d ago
Copy link
On this page
Persistence Configuration
Source Control Configuration
Load Balancing
Limitations
Multi-Node Caching
Multi-Node Dashboard Broadcast