> For the complete documentation index, see [llms.txt](https://docs.devolutions.net/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.devolutions.net/powershell-universal/es/config/hosting/high-availability.md).

# Alta disponibilidad

Configure la alta disponibilidad de PowerShell Universal mediante persistencia SQL, balanceadores de carga, sincronización git unidireccional y comprobaciones de estado en nodos en clúster.

PowerShell Universal se puede configurar para alta disponibilidad (HA) combinando la persistencia de SQL Server o PostgreSQL con un balanceador de carga. Esto mantiene accesibles las herramientas de front-end, como las aplicaciones, y permite que las herramientas de back-end, como los trabajos, sigan ejecutándose cuando un nodo no está disponible.

En esta topología, un balanceador de carga distribuye el tráfico a cada nodo de PSU a través de los puertos 443/80. Cada nodo lee y escribe de forma independiente en la base de datos compartida de SQL Server (o PostgreSQL) en el puerto 1433, y obtiene su configuración del repositorio Git compartido a través de los puertos 443/80.

## Configuración de la persistencia

Utilice la persistencia de SQL, o la persistencia de PostgreSQL, para que todos los nodos del clúster compartan las colas de trabajos, los tokens de aplicación, las identidades y otros datos persistidos. Configure cada nodo con la misma cadena de conexión a la base de datos.

A medida que se ejecutan los trabajos y los usuarios inician sesión, PowerShell Universal almacena los datos relacionados en la base de datos compartida para que estén disponibles para los demás nodos.

## Configuración del control de código fuente

Utilice la sincronización con Git para almacenar y controlar las versiones de los scripts de configuración de PowerShell que gestionan los nodos de PowerShell Universal. A menudo se prefiere la sincronización unidireccional con Git porque los nodos son de solo lectura y extraen la configuración después de fusionarla en la rama de producción. Cada nodo extrae la configuración en un intervalo configurable, que por defecto es de un minuto. Almacenar los ajustes de configuración de Git en la base de datos reduce la configuración por nodo.

## Balanceo de carga

PowerShell Universal admite balanceadores de carga como F5 y nginx. Los balanceadores de carga deben proporcionar:

* Sesiones persistentes (sticky) para la consola de administración y las aplicaciones.
* Compatibilidad con WebSocket para la consola de administración y las aplicaciones.

Configure el balanceador de carga para que utilice la API de estado en las comprobaciones de estado. Una respuesta `200` significa que el destino está en buen estado y puede recibir tráfico; una respuesta `5xx` significa que no debe recibir tráfico.

## API de estado

### `/api/v1/status`

`/api/v1/status` informa del estado del nodo actual. Ponga un nodo en modo de mantenimiento desde **Manage > Computers & Groups > Computers** para que este endpoint devuelva `503` y se retire el nodo del tráfico del balanceador de carga durante el mantenimiento.

Devuelve una respuesta 5xx cuando se cumple alguna de las siguientes condiciones:

* El ordenador está en estado de error de inicio.
* El ordenador está en modo de mantenimiento.
* Una aplicación crítica no se pudo iniciar.
* La configuración de endpoints no está vacía, pero ningún endpoint de API se está ejecutando correctamente.
* Un grupo de runspaces de endpoint está agotado. La respuesta es `503` con `One or more endpoint runspace pools are exhausted.`

Un fichero `.universal/endpoints.ps1` vacío se considera correcto y no provoca una respuesta de error.

### `/api/v2/status`

`/api/v2/status` es el endpoint de estado del clúster. Además de las comprobaciones de endpoints anteriores, devuelve `503` cuando:

* Cualquier ordenador del clúster está desconectado y no está en modo de mantenimiento.
* La sincronización con Git no se realiza correctamente en un nodo.
* La configuración de endpoints no está vacía, pero ningún endpoint de API se está ejecutando correctamente.
* Un grupo de runspaces de endpoint está agotado. El cuerpo de la respuesta es `One or more endpoint runspace pools are exhausted.`

Utilice `/api/v2/status` como sonda de estado del balanceador de carga cuando un destino deba retirarse del servicio si el clúster no está en buen estado o si un entorno de endpoint no tiene capacidad. Por ejemplo, cuando un entorno de endpoint tiene un número máximo de runspaces de uno y su único runspace está ocupado, el endpoint devuelve `503`; vuelve a devolver `200` cuando hay capacidad disponible.

Un fichero `.universal/endpoints.ps1` vacío se considera correcto y no provoca una respuesta de error.

## Limitaciones

Los clústeres de PowerShell Universal de alta disponibilidad tienen las siguientes limitaciones.

### Caché en varios nodos

El almacenamiento en caché con `$Cache` está limitado a un único proceso en un único nodo. Por ejemplo, cada aplicación que se ejecuta fuera del entorno integrado tiene su propia caché.

`Set-PSUCache` no comparte datos entre nodos a menos que se especifique `-Persist`. Incluya este modificador cuando todos los nodos necesiten los mismos datos de caché.

### Difusión de aplicaciones en varios nodos

No se admiten los mensajes de difusión de aplicaciones en varios nodos. Los cmdlets como `Show-UDToast -Broadcast` muestran un aviso únicamente a los usuarios conectados del nodo actual; no se difunden a las aplicaciones de otros nodos.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.devolutions.net/powershell-universal/es/config/hosting/high-availability.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
