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

# Høj tilgængelighed

Konfigurer høj tilgængelighed i PowerShell Universal ved hjælp af SQL-persistens, belastningsfordelere, envejs git-synkronisering og statussundhedstjek på tværs af klyngede noder.

PowerShell Universal kan konfigureres til høj tilgængelighed (HA) ved at kombinere SQL Server- eller PostgreSQL-persistens med en belastningsfordeler. Dette holder frontend-værktøjer, f.eks. apps, tilgængelige og gør det muligt for backend-værktøjer, f.eks. jobs, at fortsætte med at køre, når en node ikke er tilgængelig.

I denne topologi fordeler en belastningsfordeler trafikken til hver PSU-node via portene 443/80. Hver node læser og skriver uafhængigt til den delte SQL Server-database (eller PostgreSQL) på port 1433 og henter sin konfiguration fra det delte Git-lager via portene 443/80.

## Persistenskonfiguration

Brug SQL-persistens, eller PostgreSQL-persistens, så alle noder i klyngen deler jobkøer, app-tokens, identiteter og andre persisterede data. Konfigurer hver node med den samme databaseforbindelsesstreng.

Når jobs kører, og brugere logger på, gemmer PowerShell Universal de relaterede data i den delte database, så de er tilgængelige for andre noder.

## Konfiguration af kildekontrol

Brug Git-synkronisering til at gemme og versionsstyre de PowerShell-konfigurationsscripts, der administrerer PowerShell Universal-noder. Envejs-Git-synkronisering foretrækkes ofte, fordi noderne er skrivebeskyttede og henter konfigurationen, efter at den er flettet ind i produktionsbranchen. Hver node henter konfigurationen med et konfigurerbart interval, der som standard er ét minut. Når Git-konfigurationsindstillinger gemmes i databasen, reduceres konfigurationen pr. node.

## Belastningsfordeling

PowerShell Universal understøtter belastningsfordelere som F5 og nginx. Belastningsfordelere skal levere:

* Vedvarende (klæbende) sessioner til admin console og apps.
* Understøttelse af WebSocket til admin console og apps.

Konfigurer belastningsfordeleren til at bruge status-API'en til tilstandstjek. Et `200`-svar betyder, at målet er sundt og kan modtage trafik; et `5xx`-svar betyder, at det ikke bør modtage trafik.

## Status-API'er

### `/api/v1/status`

`/api/v1/status` rapporterer sundhedstilstanden for den aktuelle node. Sæt en node i vedligeholdelsestilstand fra **Manage > Computers & Groups > Computers** for at få dette slutpunkt til at returnere `503` og fjerne noden fra belastningsfordelerens trafik under vedligeholdelse.

Den returnerer et 5xx-svar, når et af følgende gælder:

* Computeren er i en opstartsfejltilstand.
* Computeren er i vedligeholdelsestilstand.
* En kritisk app kunne ikke starte.
* Slutpunktskonfigurationen er ikke tom, men ingen API-slutpunkter kører korrekt.
* En runspace-pulje for et slutpunkt er udtømt. Svaret er `503` med `One or more endpoint runspace pools are exhausted.`

En tom `.universal/endpoints.ps1`-fil er sund og forårsager ikke et fejlsvar.

### `/api/v2/status`

`/api/v2/status` er klyngens sundhedsslutpunkt. Ud over slutpunktstjekkene ovenfor returnerer det `503`, når:

* Enhver computer i klyngen er offline og er ikke i vedligeholdelsestilstand.
* Git-synkronisering er ikke vellykket på en node.
* Slutpunktskonfigurationen er ikke tom, men ingen API-slutpunkter kører korrekt.
* En runspacepulje for et slutpunkt er udtømt. Svarets brødtekst er `One or more endpoint runspace pools are exhausted.`

Brug `/api/v2/status` til en tilstandstest for en belastningsfordeler, når et mål skal fjernes fra tjenesten, hvis klyngen ikke er sund, eller et slutpunktsmiljø ikke har kapacitet. Når et slutpunktsmiljø f.eks. har et maksimalt antal runspaces på én, og dets eneste runspace er optaget, returnerer slutpunktet `503`; det returnerer `200` igen, når der er tilgængelig kapacitet.

En tom `.universal/endpoints.ps1`-fil er sund og forårsager ikke et fejlsvar.

## Begrænsninger

Højt tilgængelige PowerShell Universal-klynger har følgende begrænsninger.

### Cachelagring på flere noder

Cachelagring med `$Cache` er begrænset til en enkelt proces på en enkelt node. For eksempel har hver app, der kører uden for miljøet Integrated, sin egen cache.

`Set-PSUCache` deler ikke data på tværs af noder, medmindre `-Persist` er angivet. Medtag denne switch, når alle noder kræver de samme cachedata.

### App-udsendelse på flere noder

Udsendelsesmeddelelser for apps med flere noder understøttes ikke. Cmdlets såsom `Show-UDToast -Broadcast` viser en toast kun til tilsluttede brugere på den aktuelle node; de udsender ikke til apps på andre noder.


---

# 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/da/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.
