Base di conoscenza

Scaling & high availability · aggiornato il 17 giugno 2024 · verificato il 9 luglio 2026

Usare un bilanciatore di carico esterno per i servizi dell'appliance

Terminate TLS su un proxy esterno e distribuite NtkAS e NtkSSO su più nodi dell'appliance, con esempi HAProxy e Nginx.

Di norma il TLS delle richieste HTTP viene terminato sul reverse proxy integrato, ma se dovete distribuire l’applicazione su più host potete modificare questo comportamento.

Per usare un proxy esterno e distribuire le richieste tra i nodi, eseguite i comandi seguenti.

Per il servizio Authentication Server (NtkAS):

$ ntk cfg setc nas.external_proxy on
$ ntk redis start
$ ntk cfg set :nas.redis_url redis://10.0.1.98:6379/cache
$ ntk as restart

Sostituite l’indirizzo IP 10.0.1.98 con quello del nodo che eseguirà l’acceleratore Redis. Per garantire l’alta disponibilità del servizio di accelerazione Redis vi consigliamo di usare il servizio VRRP. Consultate Configurare il servizio REDIS con VRRP.

Per il servizio SSO (NtkSSO):

$ ntk cfg setc sso.external_proxy on
$ ntk sso restart

Eseguite questi comandi su ogni nodo che farà parte del pool di backend del bilanciatore di carico esterno.

I servizi si aspettano di ricevere l’indirizzo IP reale del client nell’intestazione HTTP X-Real-IP. Questo è importante se applicate politiche di sicurezza diverse a seconda della posizione dell’utente nella rete.

Dopo la riconfigurazione, il servizio NtkAS sarà esposto sulla tcp/5000 del nodo, mentre il servizio NtkSSO sulla tcp/7000. Aggiungete questi endpoint al pool del bilanciatore di carico esterno. Usate ntk net eth0 address per individuare l’indirizzo IP interno del nodo.

Se la porta di gestione non ha il valore predefinito e la modalità dual instance è attiva (:nas.dual_instance_mode = on), anche l’interfaccia di gestione sarà esposta sulla tcp/6000; proteggetela però con misure aggiuntive se esponete pubblicamente l’interfaccia amministrativa. In caso contrario, potete usare il servizio proxy integrato per accedere alla gestione direttamente tramite l’indirizzo IP interno del nodo. Potete configurare il servizio VRRP in modo che tutti i nodi usino un unico indirizzo IP interno. Per maggiori dettagli consultate la documentazione.

Di seguito trovate alcuni esempi di configurazione per le soluzioni di bilanciamento di carico più comuni.

Configurazione di HAProxy per un servizio NtkAS

backend notakey-backend
        mode http
        balance roundrobin
        option forwardfor
        option httpchk
        http-request set-header X-Forwarded-Port %[dst_port]
        http-request set-header X-Real-IP %[src_addr]
        http-request add-header X-Forwarded-Proto https if { ssl_fc }
        server node01 10.0.1.71:5000 check
        server node02 10.0.1.72:5000 check
        server node03 10.0.1.73:5000 check

Configurazione di Nginx per un servizio NtkAS

http {
    include    conf/mime.types;
    index    index.html index.htm index.php;
    access_log   logs/access.log  main;
    sendfile     on;
    tcp_nopush   on;
    server_names_hash_bucket_size 128; # this seems to be required for some vhosts


    upstream ntkservers {
        server 10.0.1.71:5000;
        server 10.0.1.72:5000;
        server 10.0.1.73:5000;
        # Nginx open source monitors backends by analyzing requests
        # If request times out, backend is marked as unavailable
        # This may lead to unintended failures during appliance updates
    }

    ; Nginx Plus config
    match server_ok {
        status 200;
    }

    server {
        listen 443 ssl http2;
        root /app/public;

        ssl_certificate /etc/nginx/ssl/ntkchain.pem;
        ssl_certificate_key /etc/nginx/ssl/ntk.key;
        ssl_session_timeout 1d;
        ssl_session_cache shared:MySSL:10m;
        ssl_session_tickets off;

        ssl_protocols TLSv1.3;
        ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;
        ssl_prefer_server_ciphers off;

        location / {
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Proto https;
            proxy_set_header X-Forwarded-Port $server_port;

            client_max_body_size    10m;
            client_body_buffer_size 128k;

            proxy_connect_timeout   10;
            proxy_send_timeout      90;
            proxy_read_timeout      90;
            proxy_buffers           32 4k;

            proxy_redirect off;
            proxy_pass http://ntkservers;
            # Nginx Plus config
            health_check interval=10 uri=/api/health match=server_ok;
        }
    }
}

← Torna all’assistenza

Il vostro primo accesso senza password, già questa settimana

30 minuti con un ingegnere, non una presentazione commerciale. Insieme pianificheremo come avviare un progetto pilota funzionante nel vostro ambiente VPN, SSO o Windows.