Initial commit: PrivX HA Architecture & Setup Guides
This commit is contained in:
137
web-access/setup-web-proxy-ha.md
Normal file
137
web-access/setup-web-proxy-ha.md
Normal file
@@ -0,0 +1,137 @@
|
||||
# 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.
|
||||
|
||||
```bash
|
||||
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:
|
||||
|
||||
```bash
|
||||
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:
|
||||
|
||||
```bash
|
||||
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`):
|
||||
|
||||
```bash
|
||||
# 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:
|
||||
|
||||
```bash
|
||||
# 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.
|
||||
|
||||
```bash
|
||||
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):
|
||||
|
||||
```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`:
|
||||
|
||||
```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:
|
||||
```bash
|
||||
sudo systemctl restart privx-carrier privx-web-proxy
|
||||
```
|
||||
Reference in New Issue
Block a user