> 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/fr/config/hosting/high-availability.md).

# Haute disponibilité

Configurer la haute disponibilité de PowerShell Universal à l'aide de la persistance SQL, d'équilibreurs de charge, de la synchronisation git unidirectionnelle et de vérifications d'état réparties sur

PowerShell Universal peut être configuré pour la haute disponibilité (HA) en combinant la persistance SQL Server ou PostgreSQL avec un équilibreur de charge. Les outils frontaux, comme les applis, demeurent ainsi accessibles et les outils dorsaux, comme les tâches, peuvent continuer de s'exécuter lorsqu'un nœud est indisponible.

Dans cette topologie, un équilibreur de charge répartit le trafic vers chaque nœud PSU par les ports 443/80. Chaque nœud lit et écrit de façon indépendante dans la base de données SQL Server (ou PostgreSQL) partagée sur le port 1433, et récupère sa configuration à partir du dépôt Git partagé par les ports 443/80.

## Configuration de la persistance

Utilisez la persistance SQL ou la persistance PostgreSQL afin que chaque nœud de la grappe partage les files d'attente de tâches, les jetons d'applis, les identités et les autres données persistées. Configurez chaque nœud avec la même chaîne de connexion à la base de données.

À mesure que les tâches s'exécutent et que les utilisateurs se connectent, PowerShell Universal stocke les données connexes dans la base de données partagée afin qu'elles soient disponibles pour les autres nœuds.

## Configuration du contrôle de code source

Utilisez la synchronisation Git pour stocker et gérer les versions des scripts de configuration PowerShell qui gèrent les nœuds PowerShell Universal. La synchronisation Git unidirectionnelle est souvent préférée, car les nœuds sont en lecture seule et récupèrent la configuration une fois qu'elle a été fusionnée dans la branche de production. Chaque nœud récupère la configuration selon un intervalle configurable, qui est d'une minute par défaut. Le stockage des paramètres de configuration Git dans la base de données réduit la configuration par nœud.

## Équilibrage des charges

PowerShell Universal prend en charge les équilibreurs de charge comme F5 et nginx. Les équilibreurs de charge doivent offrir :

* Des sessions persistantes (sticky) pour la console d'administration et les applis.
* La prise en charge des WebSockets pour la console d'administration et les applis.

Configurez l'équilibreur de charge pour qu'il utilise l'API de statut pour les vérifications d'état. Une réponse `200` signifie que la cible est saine et peut recevoir du trafic; une réponse `5xx` signifie qu'elle ne devrait pas recevoir de trafic.

## API de statut

### `/api/v1/status`

`/api/v1/status` signale l'état du nœud actuel. Mettez un nœud en mode maintenance à partir de **Gérer > Ordinateurs et groupes > Ordinateurs** pour que ce terminal renvoie `503` et que le nœud soit retiré du trafic de l'équilibreur de charge pendant la maintenance.

Il renvoie une réponse 5xx lorsque l'un des cas suivants s'applique :

* L'ordinateur est dans un état d'erreur de démarrage.
* L'ordinateur est en mode maintenance.
* Une appli critique n'a pas réussi à démarrer.
* La configuration des terminaux n'est pas vide, mais aucun terminal d'API ne fonctionne correctement.
* Un pool de runspaces de terminal est épuisé. La réponse est `503` avec `One or more endpoint runspace pools are exhausted.`

Un fichier `.universal/endpoints.ps1` vide est considéré comme sain et n'entraîne pas de réponse d'échec.

### `/api/v2/status`

`/api/v2/status` est le terminal d'état de la grappe. En plus des vérifications de terminaux ci-dessus, il renvoie `503` lorsque :

* Un ordinateur de la grappe est hors ligne et n'est pas en mode maintenance.
* La synchronisation Git n'a pas réussi sur un nœud.
* La configuration des terminaux n'est pas vide, mais aucun terminal d'API ne fonctionne correctement.
* Un pool de runspaces de terminal est épuisé. Le corps de la réponse est `One or more endpoint runspace pools are exhausted.`

Utilisez `/api/v2/status` comme sonde d'état pour l'équilibreur de charge lorsqu'une cible doit être retirée du service si la grappe n'est pas saine ou si un environnement de terminal n'a plus de capacité. Par exemple, lorsqu'un environnement de terminal a un nombre maximal de runspaces fixé à un et que son seul runspace est occupé, le terminal renvoie `503`; il renvoie de nouveau `200` lorsque de la capacité est disponible.

Un fichier `.universal/endpoints.ps1` vide est considéré comme sain et n'entraîne pas de réponse d'échec.

## Limites

Les grappes PowerShell Universal à haute disponibilité comportent les limites suivantes.

### Mise en cache multinœud

La mise en cache avec `$Cache` est limitée à un seul processus sur un seul nœud. Par exemple, chaque appli s'exécutant à l'extérieur de l'environnement intégré possède sa propre cache.

`Set-PSUCache` ne partage pas les données entre les nœuds à moins que `-Persist` ne soit spécifié. Incluez ce commutateur lorsque tous les nœuds ont besoin des mêmes données de cache.

### Diffusion d'applis multinœud

Les messages de diffusion d'applis multinœud ne sont pas pris en charge. Les applets de commande comme `Show-UDToast -Broadcast` affichent une notification aux utilisateurs connectés du nœud actuel seulement; elles ne diffusent pas vers les applis des autres nœuds.


---

# 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 by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

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

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

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.
