Žinių bazė

Scaling & high availability · atnaujinta 2024 m. birželio 17 d. · peržiūrėta 2026 m. liepos 9 d.

Išorinio apkrovos balansuotojo naudojimas įrenginio servisams

TLS užbaigimas išoriniame tarpiniame serveryje ir NtkAS bei NtkSSO apkrovos balansavimas tarp kelių įrenginio mazgų su HAProxy ir Nginx pavyzdžiais.

Įprastai HTTP užklausų TLS užbaigiamas integruotame atvirkštiniame tarpiniame serveryje, tačiau, jei aplikaciją reikia plėsti į kelis serverius, šią elgseną galima pakeisti.

Norėdami naudoti išorinį tarpinį serverį ir balansuoti užklausas tarp mazgų, įvykdykite šias komandas.

Autentifikacijos serverio servisui (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 adresą 10.0.1.98 pakeiskite savo mazgo, kuriame veiks Redis spartintuvas, adresu. Redis spartintuvo serviso aukštam pasiekiamumui užtikrinti rekomenduojama naudoti VRRP servisą. Žr. Redis serviso konfigūravimas su VRRP.

SSO servisui (NtkSSO):

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

Komandas reikia įvykdyti kiekviename mazge, kuris dalyvaus išorinio apkrovos balansuotojo galinių serverių grupėje.

Servisai tikisi, kad tikrasis nutolusio kliento IP adresas bus perduodamas HTTP antraštėje X-Real-IP. Tai aktualu, jei taikote skirtingas saugumo politikas pagal naudotojo vietą tinkle.

Po perkonfigūravimo NtkAS servisas mazge bus pasiekiamas per tcp/5000, o NtkSSO servisas — per tcp/7000. Šiuos galinius taškus reikia įtraukti į išorinio apkrovos balansuotojo grupę. Vidiniam mazgo IP adresui sužinoti naudokite komandą ntk net eth0 address.

Jei valdymo prievado nustatymas nėra numatytasis ir įjungtas dviejų egzempliorių režimas (:nas.dual_instance_mode = on), valdymo sąsaja taip pat bus pasiekiama per tcp/6000; jei administravimo sąsają skelbiate viešai, šiam servisui apsaugoti naudokite papildomas priemones. Kitu atveju valdymą galite pasiekti tiesiogiai per vidinį mazgo IP adresą, naudodami integruotą tarpinio serverio servisą. VRRP servisą galima sukonfigūruoti taip, kad visi mazgai naudotų vieną vidinį IP adresą. Daugiau informacijos rasite dokumentacijoje.

Žemiau pateikiami dažniausiai naudojamų apkrovos balansavimo sprendimų konfigūracijos pavyzdžiai.

NtkAS serviso HAProxy konfigūracija

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

NtkAS serviso Nginx konfigūracija

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;
        }
    }
}

← Atgal į pagalbą

Pirmasis prisijungimas be slaptažodžio – jau šią savaitę

30 minučių pokalbis su inžinieriumi, o ne pardavimų prezentacija. Kartu suplanuosime, kaip jūsų VPN, SSO ar Windows aplinkoje paleisti veikiantį bandomąjį projektą.