Znalostní báze

Scaling & high availability · aktualizováno 17. června 2024 · revidováno 9. července 2026

Použití externího load balanceru pro služby zařízení

Ukončete TLS na externí proxy a rozložte NtkAS a NtkSSO mezi více uzlů zařízení, s příklady pro HAProxy a Nginx.

TLS pro HTTP požadavky se běžně ukončuje na vestavěné reverzní proxy. Pokud však potřebujete aplikaci škálovat na více hostitelů, lze toto chování změnit.

Chcete-li použít externí proxy a rozkládat požadavky mezi uzly, spusťte následující příkazy.

Pro službu 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

IP adresu 10.0.1.98 nahraďte adresou uzlu, na kterém poběží akcelerátor Redis. Pro vysokou dostupnost služby akcelerátoru Redis doporučujeme nakonfigurovat službu VRRP. Viz Nastavení služby REDIS s VRRP.

Pro službu SSO (NtkSSO):

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

Příkazy je nutné spustit na každém uzlu, který bude součástí backend poolu externího load balanceru.

Služby očekávají, že skutečná vzdálená IP adresa bude předána v HTTP hlavičce X-Real-IP. To je důležité, pokud používáte různé bezpečnostní politiky podle umístění uživatele v síti.

Po rekonfiguraci bude služba NtkAS na uzlu dostupná na tcp/5000 a služba NtkSSO na tcp/7000. Tyto endpointy je třeba přidat do poolu externího load balanceru. Interní IP adresu uzlu zjistíte příkazem ntk net eth0 address.

Pokud je nastavení portu pro správu jiné než výchozí a je aktivní režim dvou instancí (:nas.dual_instance_mode = on), bude rozhraní pro správu dostupné také na tcp/6000. Pokud administrativní rozhraní zpřístupňujete veřejně, měli byste tuto službu dodatečně chránit. V opačném případě můžete pro přístup ke správě použít vestavěnou proxy přímo na interní IP adrese uzlu. Službu VRRP lze nakonfigurovat tak, aby všechny uzly používaly jedinou interní IP adresu. Podrobnosti najdete v dokumentaci.

Níže najdete příklady konfigurace běžných řešení pro load balancing.

Konfigurace HAProxy pro službu 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

Konfigurace Nginx pro službu 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;
        }
    }
}

← Zpět na podporu

První přihlášení bez hesla už tento týden

30minutový rozhovor s inženýrem, žádná prodejní prezentace. Společně naplánujeme, jak ve vašem prostředí s VPN, SSO nebo Windows spustit funkční pilotní projekt.