Files
privx-home-lab/web-access/setup-web-proxy-ha.md

4.0 KiB

Setup PrivX Web Access HA (Carrier + Web Proxy) - 2 Nodi

Questa guida copre l'installazione dei componenti per l'accesso Web (RDP/SSH via browser) in alta affidabilità. Replichiamo l'architettura Enterprise con 2 Carrier e 2 Web Proxy.

Hostname: privx-web-01, privx-web-02 Ruolo: Gestione sessioni browser isolate (Docker-in-Docker) e proxy WSS.

1. Architettura Logica

  • Web Proxy: Gestisce il traffico WebSocket sicuro (WSS) tra il browser dell'utente e il Carrier.
  • Carrier: Esegue container Docker effimeri (Firefox) che renderizzano la sessione remota.
  • Relazione: Ogni Web Proxy deve avere un Carrier associato (spesso sulla stessa macchina per latenza zero).

Nel nostro lab, installeremo entrambi i ruoli su ciascuno dei 2 nodi dedicati (privx-web-01, privx-web-02).

2. Prerequisiti (Rocky Linux 9)

Queste macchine richiedono più RAM (min 8GB, meglio 16GB) perché eseguono browser pesanti per ogni utente connesso.

2.1 Installazione Docker (Podman non supportato ufficialmente per Carrier)

PrivX Carrier usa Docker per spawnare i browser.

sudo dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
sudo dnf install -y docker-ce docker-ce-cli containerd.io
sudo systemctl enable --now docker
sudo usermod -aG docker privx-carrier # (Dopo installazione pacchetto)

2.2 Repository PrivX

Aggiungi la repo come per i Core:

sudo dnf config-manager --add-repo https://product-repository.ssh.com/rhel8/privx/privx.repo

3. Installazione Componenti

Su entrambi i nodi (privx-web-01 e privx-web-02), installa i pacchetti specifici:

sudo dnf install -y privx-carrier privx-web-proxy

4. Configurazione Nodo 01 (Master Web)

4.1 Registrazione al Core

Il Web Proxy deve autenticarsi con il Core. Genera un token di pairing sul Core (privx-core-01):

# SUL NODO CORE
sudo /opt/privx/scripts/generate_token.sh --ttl 3600 --type extender
# Copia il token generato.

Ora configura il Web Proxy sul Nodo 01:

# SUL NODO WEB 01
sudo /opt/privx/scripts/postinstall-web-proxy.sh
# Inserisci:
# - Core URL: https://privx-lb.tuodominio.local (o IP Core 01 per test)
# - Pairing Token: <incolla qui>

4.2 Configurazione Carrier

Il Carrier deve sapere dove trovare il Web Proxy (localhost) e scaricare l'immagine Docker del browser.

sudo /opt/privx/scripts/postinstall-carrier.sh
# L'installer scaricherà l'immagine Docker ufficiale di PrivX Browser.
# Verifica che Docker sia attivo!

5. Configurazione Nodo 02 (Replica HA)

Ripeti ESATTAMENTE gli stessi passaggi sul Nodo 02 (privx-web-02). Usa un nuovo token generato dal Core (i token sono monouso).

5.1 Verifica HA

In PrivX GUI (Settings > Deployment > Status), dovresti vedere:

  • 2 Web Proxies Online
  • 2 Carriers Online

Se un nodo cade, il Load Balancer (vedi sotto) sposterà le nuove sessioni sull'altro. Le sessioni attive sul nodo caduto verranno perse (comportamento standard, non c'è live migration delle sessioni browser).

6. Configurazione Load Balancer per Web Access

Il traffico Web Access usa WebSocket (WSS). Il Load Balancer deve supportarlo.

Aggiungi al file di config del LB (es. Nginx):

upstream privx_web {
    ip_hash; # Sticky session CRUCIALE anche qui
    server privx-web-01:443;
    server privx-web-02:443;
}

server {
    listen 443 ssl;
    server_name privx-web.tuodominio.local;
    
    location /ws {
        proxy_pass https://privx_web;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "Upgrade";
        proxy_set_header Host $host;
    }
}

7. Tuning Performance (Carrier)

Poiché girano browser, questi nodi consumano CPU/RAM. Modifica /opt/privx/etc/carrier-config.toml:

[carrier]
# Limita il numero max di sessioni per nodo per non crashare
max_sessions = 50 

# Pulisci container orfani ogni ora
cleanup_interval = 3600

Riavvia i servizi dopo le modifiche:

sudo systemctl restart privx-carrier privx-web-proxy