Files
privx-home-lab/core/setup-ha-nodes.md

4.2 KiB

PrivX Core HA Setup - 2 Nodi (Rocky Linux 9)

Questa guida descrive l'installazione di due server PrivX Core in configurazione Active-Active, connessi al DB centralizzato.

Hostname: privx-core-01, privx-core-02 Ruolo: Gestione autenticazione, API, storage configurazioni.

1. Prerequisiti su entrambi i nodi

1.1 Configurazione OS (Rocky Linux 9)

Assicurarsi che l'orario sia sincronizzato (Cruciale per i token TOTP/JWT):

sudo dnf install -y chrony
sudo systemctl enable --now chronyd

Disabilitare SELinux (Opzionale ma consigliato per evitare problemi iniziali nel lab, riabilitare poi):

sudo sed -i 's/^SELINUX=.*/SELINUX=permissive/g' /etc/selinux/config
sudo setenforce 0

1.2 Firewall (UFW/Firewalld)

Aprire le porte necessarie per la comunicazione tra nodi Core e verso il DB:

  • TCP 80/443 (HTTP/S per Load Balancer)
  • TCP 5432 (PostgreSQL - Outbound)
  • TCP 8888 (PrivX internal API - Inbound da altri nodi PrivX)
sudo firewall-cmd --permanent --add-port=80/tcp
sudo firewall-cmd --permanent --add-port=443/tcp
sudo firewall-cmd --permanent --add-port=8888/tcp
sudo firewall-cmd --reload

2. Installazione PrivX (Nodo 01 - Master Iniziale)

2.1 Aggiunta Repository PrivX

Scarica e installa la repo ufficiale SSH.com (richiede licenza o trial):

sudo dnf config-manager --add-repo https://product-repository.ssh.com/rhel8/privx/privx.repo
# Nota: La repo RHEL8 funziona spesso anche su RHEL9, altrimenti cercare specifica RHEL9 se disponibile.
sudo dnf install -y privx

2.2 Configurazione Post-Install (Script interattivo)

Lancia lo script di setup sul primo nodo. Questo popolerà il DB.

sudo /opt/privx/scripts/postinstall.sh

Durante il setup, ti verranno chiesti i parametri del DB. Inserisci quelli creati nella guida setup-postgresql.md:

  • Database Host: privx-db (o IP del DB)
  • Database User: privx
  • Database Password: password_super_segreta...
  • Database Name: privx
  • SSL Mode: verify-full (o require se hai certificati self-signed senza CA affidabile nel sistema).

Lo script genererà anche i certificati interni per Nginx e i microservizi.

3. Configurazione HA (Shared Config)

Per far funzionare il cluster, entrambi i nodi devono condividere la stessa chiave di cifratura e puntare allo stesso DB.

3.1 Backup Chiavi e Config dal Nodo 01

Copia i file critici dal Nodo 01 al Nodo 02 (via SCP sicuro):

# Sul Nodo 01
sudo tar czvf privx-ha-pack.tar.gz \
  /opt/privx/keyvault \
  /opt/privx/etc/shared-config.toml \
  /opt/privx/etc/privx-ca.crt \
  /opt/privx/etc/privx-ca.key

Trasferisci privx-ha-pack.tar.gz sul Nodo 02.

4. Installazione PrivX (Nodo 02 - Replica)

4.1 Installazione RPM

Sul secondo nodo, installa solo i pacchetti senza lanciare postinstall.sh subito.

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

4.2 Ripristino Configurazione HA

Prima di avviare, sovrascrivi le config con quelle del Nodo 01:

# Sul Nodo 02
sudo systemctl stop privx || true
sudo tar xzvf privx-ha-pack.tar.gz -C /
sudo chown -R privx:privx /opt/privx

4.3 Registrazione Nodo

Ora avvia PrivX sul secondo nodo. Se la configurazione DB in shared-config.toml è corretta, il nodo si collegherà al DB esistente e scaricherà le policy.

sudo systemctl enable --now privx
sudo /opt/privx/scripts/init_node.sh # Se disponibile, per registrare il nodo nel cluster DB

5. Verifica Cluster

Dal Nodo 01, controlla lo stato dei componenti:

privx-status
# Dovresti vedere entrambi i nodi (hostname) listati nei log o nella dashboard "Settings > Deployment".

6. Configurazione Load Balancer (Nginx/HAProxy)

Davanti ai due nodi Core devi mettere un LB. Esempio config Nginx (upstream):

upstream privx_core {
    ip_hash; # Sticky session obbligatoria!
    server privx-core-01:443;
    server privx-core-02:443;
}

server {
    listen 443 ssl;
    server_name privx-lb.tuodominio.local;
    
    location / {
        proxy_pass https://privx_core;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
    }
}