Initial commit: PrivX HA Architecture & Setup Guides
This commit is contained in:
146
core/setup-ha-nodes.md
Normal file
146
core/setup-ha-nodes.md
Normal file
@@ -0,0 +1,146 @@
|
||||
# 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;
|
||||
}
|
||||
}
|
||||
```
|
||||
Reference in New Issue
Block a user