á¡ááááá¯ááºááœáŸááºááŸá¯á¡ááºá¹áá«áááºáá»á¬áž-
- API á¡áá
áºááᯠááááºáááºááá¯ááºáá«áááºá
áá±áá¬á¡á á®á¡á áẠREST Web API ááŸáááá·áº HAProxy áááºáááºáá»á¬ážááᯠáá»ááºááŒááºá áœá¬ á á®áá¶ááá·áºááœá²ááá¯ááºá á±áá«áááºá á¡áá«á¡áááºá áááºááẠá¡ááºááá¯ááºá¡á¬ážááá¯áẠááá·áºááœááºážááá¯ááºááŒá®áž áá±á¬ááºáá¶áá»á¬ážááŸáá·áº áá¬áá¬áá»á¬ážááᯠáááºááŸá¬ážááá¯ááºáááºá ACLs áááºáá®ážááŒááºážá áá±á¬ááºážááá¯ááŸá¯áááºážááŒá±á¬ááºážááᯠááŒá±á¬ááºážáá²ááŒááºážá ááá¯ááºááœááºááááºážááŸáááŒááºážáá»á¬ážááᯠIP ááá¯á· ááŒá±á¬ááºážáá²ááá¯ááºáááºá - Multi-core CPU áá»á¬ážááœáẠá áœááºážáá±á¬ááºáááºááá¯áá±á¬ááºážá¡á±á¬áẠáá¯ááºáá±á¬ááºááẠHAProxy ááœáẠá¡áá¯á¶ážááŒá¯áá¬ážáá±á¬ thread á¡áá±á¡ááœááºááᯠáá»áááºááŸáááá¯ááºá á±ááá·áº nbthread ááœáŸááºááŒá¬ážáá»ááºááᯠááá·áºááœááºážáá¬ážáááºá áá°áááºážá¡á¬ážááŒáá·áºá áááºááŸááááºáááºážáá»ááºááœáẠáááŸáááá¯ááºáá±á¬ CPU cores áá»á¬ážáá±á«áºáá°áááºá á¡áá¯ááºááá¬áž threads á¡áá±á¡ááœááºááᯠááœá±ážáá»ááºáá¬ážááŒá®áž cloud áááºáááºážáá»ááºáá»á¬ážááœáẠáá¯á¶áá±ááẠthread áá áºáá¯ááŒá áºáááºá áááºáá²áá±á¬ááá·áºáááºáá»ááºáá»á¬ážááá¯áááºááŸááºáááºá á ááºážáá±ážááœá²ááœá±ážáá»ááºá áá¬áá»á¬áž MAX_THREADS ááŸáá·áº MAX_PROCS ááá¯á·ááᯠááá·áºááœááºážáá²á·ááŒá®ážá threads ááŸáá·áº processes á¡áá±á¡ááœááºá¡áá±á«áº ááá·áºáááºáá»ááºá¡áá±á«áºááá¯ááºážááá·áºáááºáá»ááºá
- ááœááºáááºááááºá á¬áá»á¬ážááá¯á· binding handlers áá»á¬ážá¡ááœáẠbind ááœáŸááºááŒá¬ážáá»ááºááᯠá¡áá¯á¶ážááŒá¯ááŒááºážááẠááá¯ážááŸááºážáá«áááºá á áá áºááá·áºááœááºážááá·áºá¡áá«á áá¯ááºáááºážá ááºáá±á¬ááºáá»á¬ážááᯠáááºááŸááºááẠáááá¯á¡ááºáá±á¬á·áá« - áá¯á¶ááŸááºá¡á¬ážááŒáá·áºá á¡áá¯á¶ážááŒá¯áá±áá±á¬áá»áááºáááºááŸá¯á¡áá±á¡ááœááºáá±á«áº áá°áááºá ááá¯ááºážáá»á¬ážááŒá¬ážááœáẠáá»áááºáááºááŸá¯áá»á¬ážááᯠááŒáá·áºáá±áá«áááºá
- áá®ážááŒá¬ážááœááºááááºáá¬áá»á¬ážááœáẠá¡áá¯ááºáá¯ááºáá±á¬á¡áá« ááŸááºáááºážáá»á¬ážááᯠá áá áºááá·áºááœááºážááŒááºážááŸá¬ ááá¯ážááŸááºážááœá¬ážááẠ- ááᯠááŸááºáááºážááᯠstdout ááŸáá·áº stderr ááá¯á·á¡ááŒáẠááŸáááŒá®ážáá¬áž ááá¯ááºáá±á¬áºááŒáá°áᶠáá±ážááá¯á·ááá¯ááºááẠ(á¥ááá¬á âlog fd@1 local0â);
- HTX (Native HTTP Representation) á¡ááœáẠáá¶á·ááá¯ážááŸá¯á¡á¬áž áá°áááºážá¡á¬ážááŒáá·áº ááœáá·áºáá¬ážááŒá®ážá á¡áá¯á¶ážááŸá¡áá¯á¶áž HTTP/2á Layer 7 ááŒááºáááºááŒáá¯ážá á¬ážááŒááºážááŸáá·áº gRPC áá²á·ááá¯á·áá±á¬ á¡ááá·áºááŒáá·áºá¡ááºá¹áá«áááºáá»á¬ážááᯠá¡áá¯á¶ážááŒá¯ááá·áºá¡áá« áááºáá»ááºáá®á á±ááẠááœáá·áºááŒá¯áá«áááºá HTX ááẠáá±á«ááºážá á®ážáá»á¬ážááᯠá¡á á¬ážááá¯ážááŒááºážáááŸááá±á¬áºáááºážá á á¬áááºážáá¡áá¯á¶ážááœáẠáá±á«ááºážá á®ážá¡áá áºáá áºáá¯ááᯠáááºááŸá¬ážááŒááºážááŸáá·áº áá±á«ááºážááá·áºááŒááºážá¡ááœáẠááŒá¯ááŒááºááœááºážáá¶ááŒááºážáá¯ááºáááºážááᯠáá»áŸá±á¬á·áá»áá±ážáááºá áááºážááẠHTTP áááá¯ááá¯áá±á¬á ááá¯ážáá»á²á·áá°ááœá²áá»á¬ážááᯠááŒááºááŸááºááá¯ááºá á±áá¬á áá±á«ááºážá á®ážá áá°áááºážá¡áá¯á¶ážá¡ááŸá¯ááºážáá»á¬ážááᯠááááºážááááºážáᬠááá·áºááá¯ááœáá·áºááŒá¯áá±ážáááºá HTTP/2 ááᯠHTTP/1.1 ááŸáá·áºá¡ááŒááºá¡ááŸááºáá¬áá¬ááŒááºáá±á¬á¡áá« ááá¯ááá¯ááŒáá·áºáá¬ážáá±á¬á áœááºážáá±á¬ááºáááºáááŸáá á±áááºá
- End-to-End HTTP/2 áá¯ááºá¡ááœááºááá¬ážáááºáá¶á·ááá¯ážááŸá¯ááᯠáááºáá±á¬ááºážááá·áºááœááºážáá¬ážááẠ(áá±á¬ááºááœááºááá¯á·áá±á«áºááá¯ááŸá¯áá»á¬ážá¡áá«á¡ááẠHTTP/2 ááœáẠá¡ááá·áºá¡á¬ážáá¯á¶ážááá¯ááºáá±á¬ááºááŒááºážá ááá±á¬ááºá á®ááŸáá·áº áááá¯ááºážááá·áºá¡ááŒá¬áž á¡ááŒááºá¡ááŸááºáá¯á¶á·ááŒááºááŸá¯áá¬áá)á
- gRPC áááá¯ááá¯áá±á¬á bidirectional proxying á¡ááœáẠá¡ááŒáá·áºá¡á áá¶á·ááá¯ážááŸá¯ááŒáá·áº gRPC áááºážááŒá±á¬ááºážáá»á¬ážááᯠááœá²ááŒááºážá áááºááŒá¬ááŒááºážá á á¬ááá¯áá áºáá¯áá»ááºážá á®ááᯠáá®ážáá±á¬ááºážááá¯ážááŒááŒááºážá ááŸááºáááºážááŸá gRPC áááºážááŒá±á¬ááºážááᯠáááºáááºá á±ááŒááºážááŸáá·áº ACLs áá»á¬ážááᯠá¡áá¯á¶ážááŒá¯áá¬ážáá±á¬ áááºáá±á·áá»áºáá»á¬ážááᯠá á áºáá¯ááºááŒááºážá áœááºážáááºááŒáá·áº á¡áá±á¬ááºá¡áááºáá±á¬áºáá¬ážáá«áááºá gRPC ááẠááá·áºá¡á¬áž universal API ááᯠá¡áá¯á¶ážááŒá¯á áá áºáá¯ááŸáá·áºáá áºáᯠá¡ááŒááºá¡ááŸááºá¡ááŒááºá¡ááŸááºáááºááœááºááá·áº á¡áá»áá¯ážáá»áá¯ážáá±á¬ áááá¯ááááºážáááºážáá¬áá¬á áá¬ážáá»á¬ážááŒáá·áº microservices áá»á¬ážááᯠá á¯á ááºážááá¯ááºá á±áá«áááºá gRPC ááŸá ááœááºáááºáááºááœááºáá±ážááᯠHTTP/2 áááá¯ááá¯áá±á¬áááááºááœáẠá¡áá±á¬ááºá¡áááºáá±á¬áºáá¬ážááŒá®áž áá±áá¬á¡ááŸááºá ááºááŒá¯áá¯ááºáááºá¡ááœáẠProtocol Buffers ááá¯á¡áá¯á¶ážááŒá¯ááŸá¯á¡áá±á«áº á¡ááŒá±áá¶áá¬ážáááºá
- ááœááºáááºáá»áááºáááºááŸá¯áááºáá±á¬ááºáá¬ááœáẠááŒá¿áá¬áá»á¬ážááŸáá·áº ááááºááá¯ááºáá±á¬ áá±á¬á·ááºáá²áá»áá¯á·ááœááºážááŸá¯áá»á¬ážááŒá áºááœá¬ážááá·áºá¡áá«ááœáẠáááºáá«ááá²áá² HTTP áá±á¬ááºážááá¯áá»ááºáá»á¬ážááᯠáá±ážááá¯á·ááá¯ááºá á±ááá·áº âLayer 7 Retriesâ áá¯ááºá¡ááœáẠáá¶á·ááá¯ážááŸá¯ áááºáá±á¬ááºážáá« (á¥ááá¬á áá¯á¶á·ááŒááºááŸá¯áá áºáá¯á០ááá¯á·ááá¯áẠá¡áá»ááºážááŸá®ážáá±á¬áá¯á¶á·ááŒááºááŸá¯áá áºáá¯á០áááŸááá»áŸááºá POST áá±á¬ááºážááá¯ááŸá¯)á áá¯ááºááá¯ááááºáááºá "disable-l7-retry" á¡áá¶ááᯠ"http-request" ááœá±ážáá»ááºááŸá¯ááá¯á· áá±á«ááºážááá·áºáá¬ážááŒá®áž áá°áááºážáá¯á¶á á¶áá»á¬ážá áá¬ážáá±á¬ááºááŒááºážááŸáá·áº áá±á¬ááºáá¶á¡ááá¯ááºážáá»á¬ážááœáẠáá»áááºááŸáááŒááºážá¡ááœáẠ"ááŒááºáááºááŒáá¯ážá á¬ážáááº" ááœá±ážáá»ááºááŸá¯ááᯠááá·áºááœááºážáá¬ážáááºá ááŒááºáááºáá±ážááá¯á·ááŒááºážá¡ááœáẠá¡á±á¬ááºáá«ááá¹ááá¬áá»á¬ážááᯠáááá¯ááºáá«áááº- á¡á¬ážáá¯á¶áž-ááŒááºáááºááŒáá¯ážá á¬ážááá¯ááºáá±á¬-á¡ááŸá¬ážáá»á¬ážá áááŸáá conn-failureá ááá¬-áá¯á¶á·ááŒááºááŸá¯á á¡ááŸáá¯ááºáá¯á¶á·ááŒááºááŸá¯á áá¯á¶á·ááŒááºááŸá¯-á¡áá»áááºááœááºááŸá¯á 0rtt-áááºáá»áá¶áááŸá¯áá»á¬ážá¡ááŒáẠááŒááºáááºá¡ááŒá±á¡áá±áá¯ááºáá»á¬áž (404á á áááº) ááá¯á·áá«áááºáááºá ;
- HAProxy á¡ááœáẠhandlers áá»á¬ážááŒáá·áº ááŒááºá executable ááá¯ááºáá»á¬ážááᯠáá±á«áºááá¯ááŒááºážá¡á¬áž á
á®áá¶ááœááºáá²ááẠááœáá·áºááŒá¯ááá·áº áá¯ááºáááºážá
ááºáááºáá±áá»á¬á¡áá
áºááᯠá¡áá±á¬ááºá¡ááẠáá±á¬áºáá¬ážáá«áááºá
á¥ááá¬á¡á¬ážááŒáá·áºá Data Plan API (/usr/sbin/dataplaneapi) ááŸáá·áº Offload stream processing engines á¡áá»áá¯ážáá»áá¯ážááá¯á·ááᯠááá¯áá²á·ááá¯á·áá±á¬ ááŒááºáááá¯ááºááœááºáááááá¬áá¯á¶á á¶ááŒáá·áº á¡áá±á¬ááºá¡áááºáá±á«áºáá±á¬ááºááœááºáá«áááºá - SPOE (Stream Processing Offload Engine) ááŸáá·áº SPOP (Stream Processing Offload Protocol) ááá¯ážáá»á²á·ááŸá¯áá»á¬áž ááŒá¯áá¯ááºáááºá¡ááœáẠ.NET Coreá Goá Lua ááŸáá·áº Python á¡ááœáẠBindings áá»á¬ážááᯠáá±á«ááºážááá·áºáá¬ážáá«áááºá ááááºá Extension Development ááᯠC ááœááºáᬠáá¶á·ááá¯ážáá²á·áááºá
- áá®ážááŒá¬ážáá¬áá¬áá áºáá¯ááá¯á· áá±á¬ááºážááá¯ááŸá¯áá»á¬ážááᯠáááºáááºááŒáááºá¡ááœáẠááŒááºá spoa-mirror ááá¯ááºááœááºáááááᬠ(/usr/sbin/spoa-mirror) ááᯠáá±á«ááºážááá·áºáá²á·ááẠ(á¥ááá¬á áá¯ááºáá¯ááºááŸá¯áááºážááŒá±á¬ááºážá á¡á áááºá¡ááá¯ááºážááᯠáá°ážáá°ááŒááºážá¡ááœááºá
- ááááºáááºáá±ážáááºá
HAProxy Kubernetes Ingress Controller Kubernetes ááááºáá±á¬ááºážááŸáá·áº áá±á«ááºážá ááºáá±áá»á¬á á±áááºá - á
á±á¬áá·áºááŒáá·áºáá±ážá
áá
áºááá¯á· á
á¬áááºážááá¬ážáá»á¬áž áááºááá¯á·ááŒááºážá¡ááœáẠbuilt-in áá¶á·ááá¯ážááŸá¯ ááá·áºááœááºážáá¬ážáááºá
Prometheus ; - HAProxy á¡áá¯á¶ážááŒá¯ááá·áº á¡ááŒá¬áž node áá»á¬ážááŸáá·áº ááááºážá¡áá»ááºá¡áááºáááŸááºááẠá¡áá¯á¶ážááŒá¯ááá·áº Peers Protocol ááᯠáááºáááºážááá¯ážáá¬ážáááºá Heartbeat ááŸáá·áº encrypted data transmission á¡ááœáẠáááºáá±á¬ááºážáá¶á·ááá¯ážááŸá¯ á¡áá«á¡áááºá
- ááœá²ááŒááºážá áááºááŒá¬ááŸá¯ááá°áá¬ááᯠáááºáá®ážáááºá¡ááœáẠ"ááá°áá¬" ááá·áºáááºáá»ááºá¡á¬áž ááŸááºáááºážáá²ááá¯á· áá±á¬ááºážááá¯áá»ááºáá»á¬ážá áá áºá áááºáá áºááá¯ááºážááá¯áᬠá áœáá·áºáá áºááœáá·áºááŒá¯ááá·áº "ááŸááºáááºáž" ááœáŸááºááŒá¬ážáá»ááºááœáẠááá·áºááœááºážáá¬ážáá«áááºá
- ááá·áºááœááºážáá¬ážáá±á¬ á¡ááá¯á¡áá»á±á¬áẠáááá¯ááá¯ááºážáá¯áẠ(profiling.tasks áááºážááœáŸááºáá»ááºá áááºááá¯ážáá»á¬ážááᯠá¡ááá¯á¡áá»á±á¬ááºá á¡ááœáá·áºá¡ááááºáá¯ááºááá¯ááºáá±á¬)á áá»ááºážáá»áŸ latency 1000 ms áá»á±á¬áºááœááºáá«á á¡ááá¯á¡áá»á±á¬áẠáááá¯ááá¯ááºááŒá¯áá¯ááºááŒááºážááᯠááœáá·áºáá¬ážáááºá áááá¯ááá¯ááºážáá±áá¬ááá¯ááŒáá·áºááŸá¯áááºá "show profileing" command ááᯠRuntime API ááœáẠáá±á«ááºážááá·áºáá¬ážááẠááá¯á·ááá¯áẠá á¬áááºážá¡ááºážá á¬áááºážááá¯á· ááááºážááááºážáá»á¬ážááᯠááŒááºáááºáááºááŸááºááẠááŒá áºááá¯ááºáááºá
- SOCKS4 áááá¯ááá¯áá±á¬ááᯠá¡áá¯á¶ážááŒá¯á áá±á¬ááºáá¶áá¬áá¬áá»á¬ážááᯠáááºáá±á¬ááºááŒáá·áºááŸá¯ááŒááºážá¡ááœáẠáá¶á·ááá¯ážááŸá¯ áááºáá±á¬ááºážááá·áºááœááºážáá¬ážáááºá
- ááááá áºáá¯á០áá±á¬ááºážááá¯áá»ááºáá áºáá¯ááŸáá·áº áá¯áááá¡ááá·áºááᯠáá±á«ááºážá ááºááŒááºážááŒáá·áº áá»áááºáááºááŸá¯á áá áºááá·áºááœááºážááŸá¯á¡ááá·áºáá»á¬ážááᯠáá»áŸá±á¬á·áá»ááá¯ááºá á±ááá·áº TFO - TCP Fast Opená RFC 7413 (TFO - TCP Fast Opená RFC 3)á ááá¹áááẠá¡ááá·áº á ááá·áº áá»áááºáááºááŸá¯ ááŸáááŸáá¯ááºážááŸá¯ áá¯ááºáááºážá ááºááẠáá»áááºáááºááŸá¯áá áºáᯠáá°áá±á¬ááºááŒááºážá áááŠážá¡ááá·áºááœáẠáá±áá¬áá±ážááá¯á·ááẠááŒá áºááá¯ááºááŒá±ááŸáá á±áááº;
- áá¯ááºáá±á¬ááºáá»ááºá¡áá
áºáá»á¬áž ááá·áºááœááºážáá¬ážáááº-
- áá¯á¶ááŸááºá¡áá¯á¶ážá¡ááŸá¯ááºážááá¯áá¯á¶ážááŒá®áž URL ááá¯á¡á á¬ážááá¯ážááẠ"http-request replace-uri"
- hostname ááá¯ááŒá±ááŸááºážáááºá¡ááœáẠ"tcp-request content do-resolve" ááŸáá·áº "http-request do-resolve"
- áá áºááŸáẠIP ááááºá á¬ááŸáá·áº ááááºáááºážááᯠá¡á á¬ážááá¯ážáááºá¡ááœáẠâtcp-request content set-dstâ ááŸáá·áº âtcp-request content set-dst-portâá
- á¡áá
áºááŒá±á¬ááºážáá²ááŒááºáž áá±á¬áºáá»á°ážáá»á¬ážááᯠáá±á«ááºážááá·áºáááº-
- aes_gcm_dev ááẠAES128-GCMá AES192-GCM ááŸáá·áº AES256-GCM á¡ááºáááá¯áá®áááºáá»á¬ážááᯠá¡áá¯á¶ážááŒá¯á áá¯ááºááœáŸáá·áºááŸá¯áá»á¬ážááᯠáá¯ááºááŸááºááŒááºážá¡ááœááºá
- Protocol Buffers áááºáá±á·ááºá»áá»á¬ážá០áááºáááºáá»á¬ážááᯠáá¯ááºáá°ááẠprotobuf
- gRPC áááºáá±á·áá»áºáá»á¬ážá០á¡ááœááºáá»á¬ážááᯠáá¯ááºáá°ááẠungrpc
source: opennet.ru