147 lines
4.2 KiB
Markdown
147 lines
4.2 KiB
Markdown
# 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):
|
|
```bash
|
|
sudo dnf install -y chrony
|
|
sudo systemctl enable --now chronyd
|
|
```
|
|
|
|
Disabilitare SELinux (Opzionale ma consigliato per evitare problemi iniziali nel lab, riabilitare poi):
|
|
```bash
|
|
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)
|
|
|
|
```bash
|
|
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):
|
|
|
|
```bash
|
|
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.
|
|
|
|
```bash
|
|
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):
|
|
|
|
```bash
|
|
# 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.
|
|
|
|
```bash
|
|
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:
|
|
|
|
```bash
|
|
# 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.
|
|
|
|
```bash
|
|
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:
|
|
|
|
```bash
|
|
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):
|
|
|
|
```nginx
|
|
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;
|
|
}
|
|
}
|
|
```
|