{"id":35486,"date":"2019-10-31T22:04:36","date_gmt":"2019-10-31T19:04:36","guid":{"rendered":"https:\/\/prohoster.info\/blog\/vypusk-http-tcp-balansirovshhika-haproxy-2-0\/"},"modified":"2019-10-31T22:04:36","modified_gmt":"2019-10-31T19:04:36","slug":"vypusk-http-tcp-balansirovshhika-haproxy-2-0","status":"publish","type":"post","link":"https:\/\/prohoster.info\/en\/blog\/news\/vypusk-http-tcp-balansirovshhika-haproxy-2-0","title":{"rendered":"Release of the HAProxy 2.0 HTTP\/TCP load balancer","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><noindex><a rel=\"nofollow\" href=\"https:\/\/www.haproxy.com\/blog\/haproxy-2-0-and-beyond\/\">Published<\/a><\/noindex> load balancer release <noindex><a rel=\"nofollow\" href=\"http:\/\/www.haproxy.org\">HAProxy 2.0<\/a><\/noindex>, enabling the distribution of HTTP traffic and arbitrary TCP requests among a group of servers, considering multiple factors (for example, it checks server availability, evaluates load levels, has DDoS mitigation tools) and performs initial data filtering (for instance, it can parse HTTP headers, filter out incorrect query parameters, block SQL injections and XSS, connect content processing agents). HAProxy can also <noindex><a rel=\"nofollow\" href=\"https:\/\/www.haproxy.com\/solutions\/microservices\/\">starting February 17, initially for a small percentage of users and then gradually expanding the coverage.<\/a><\/noindex> coordinate the interaction of components in microservices architecture-based systems. The project code is written in C and <noindex><a rel=\"nofollow\" href=\"http:\/\/git.haproxy.org\/\">is provided<\/a><\/noindex> is licensed under GPLv2. The project is used by many large websites, including Airbnb, Alibaba, GitHub, Imgur, Instagram, Reddit, StackOverflow, Tumblr, Twitter, and Vimeo.<\/p>\n<p>Key features of the release:<\/p>\n<ul>\n<li class=\"l\"> A new API has been introduced <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/haproxytech\/dataplaneapi\">Data Plan<\/a><\/noindex>, allowing real-time management of HAProxy settings through REST Web API. This includes the dynamic addition and deletion of backends and servers, creating ACLs, changing request routing, and modifying handler bindings to IP;\n<li class=\"l\"> The nbthread directive has been added, allowing the configuration of the number of threads used in HAProxy for optimizing performance on multi-core CPUs. By default, the number of worker threads is chosen based on the available CPU cores in the current environment, while in cloud environments, one thread is set by default. Strict limits have been added through the MAX_THREADS and MAX_PROCS build options, which restrict the upper limit on the number of threads and processes;\n<li class=\"l\"> The use of the bind directive for binding handlers to network addresses has been simplified. When configuring, it is no longer necessary to define process parameters \u2014 by default, connections will be distributed across threads based on the number of active connections.\n<li class=\"l\"> The logging setup has been simplified when running in isolated containers \u2014 logs can now be directed to stdout and stderr, as well as to any existing file descriptor (for example, \u2018log fd@1 local0\u2019);\n<li class=\"l\"> HTX (Native HTTP Representation) support is enabled by default, providing load balancing when utilizing advanced features such as end-to-end HTTP\/2, Layer 7 Retries, and gRPC. HTX does not replace headers in place, but rather limits the operation to removing and adding a new header to the end of the list, allowing manipulation of any advanced variants of the HTTP protocol while preserving the original semantics of the headers, leading to improved performance when translating HTTP\/2 to HTTP\/1.1 and vice versa;\n<li class=\"l\"> Official support for End-to-End HTTP\/2 mode has been added (processing all stages in HTTP\/2, including backend calls, not just the proxy's interaction with the client);\n<li class=\"l\"> Full support for bidirectional gRPC protocol proxying has been implemented, enabling gRPC stream parsing, highlighting individual messages, logging gRPC traffic, and filtering messages using ACL. gRPC allows for the operation of microservices in various programming languages, interacting through a universal API. Networking in gRPC is implemented over the HTTP\/2 protocol and is based on the use of Protocol Buffers for data serialization.\n<li class=\"l\"> Support for the \u2018Layer 7 Retries\u2019 mode has been added, allowing for retransmission of HTTP requests in case of software failures unrelated to network connection issues (for instance, when there is no response or an empty response to a POST request). To disable this mode, a flag \u2018disable-l7-retry\u2019 has been added to the \u2018http-request\u2019 option, and to fine-tune it, an option \u2018retry-on\u2019 has been added in the defaults, listen, and backend sections. The following indicators are available for retransmission: all-retryable-errors, none, conn-failure, empty-response, junk-response, response-timeout, 0rtt-rejected, as well as binding to returned status codes (404, etc.);\n<li class=\"l\"> A new Process Manager has been implemented, allowing configuration of the invocation of external executable files with handlers for HAProxy.<br \/>\nFor example, the API Data Plan has been implemented as such an external handler (\/usr\/sbin\/dataplaneapi), along with various Offload stream processing engines;<\/p>\n<li class=\"l\"> Bindings for developing SPOE (Stream Processing Offload Engine) and SPOP (Stream Processing Offload Protocol) extensions have been added for .NET Core, Go, Lua, and Python. Previously, extension development was supported only in C;\n<li class=\"l\"> A new external handler spoa-mirror (\/usr\/sbin\/spoa-mirror) has been added for mirroring requests to a separate server (for instance, to copy part of the working traffic for testing an experimental environment under real load);\n<li class=\"l\"> Introduced  <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/haproxytech\/kubernetes-ingress\/\">HAProxy Kubernetes Ingress Controller<\/a><\/noindex> to ensure integration with the Kubernetes platform;\n<li class=\"l\"> Built-in support for exporting statistics to the monitoring system has been added; <noindex><a rel=\"nofollow\" href=\"https:\/\/prometheus.io\/\">Prometheus<\/a><\/noindex>;\n<li class=\"l\"> The Peers Protocol has been expanded, which is used for exchanging information with other nodes using HAProxy. It now includes support for Heartbeat and encrypted data transmission;\n<li class=\"l\"> A \u2018sample\u2019 parameter has been added to the \u2018log\u2019 directive, allowing only a portion of requests to be logged, for example 1 out of 10, to form an analytical sample;\n<li class=\"l\"> An automatic profiling mode has been added (profiling.tasks directive, which can take values auto, on, and off). Automatic profiling is enabled when the average latency exceeds 1000 ms. To view profiling data, the command \u2018show profiling\u2019 has been added to the Runtime API, or there is an option to reset statistics to the log;\n<li class=\"l\"> Support for accessing backend servers using the SOCKS4 protocol has been added;\n<li class=\"l\"> End-to-end support for the TCP Fast Open (TFO \u2014 TCP Fast Open, RFC 7413) mechanism has been added, which allows for a reduction in the number of connection establishment steps by combining the first and second steps of the classic three-step connection establishment process into a single request, thus enabling data to be sent at the initial stage of connection setup;\n<li class=\"l\"> New actions have been added:\n<ul>\n<li class=\"l\"> \u2018http-request replace-uri\u2019 for replacing URLs using regular expressions;\n<li class=\"l\"> \u2018tcp-request content do-resolve\u2019 and \u2018http-request do-resolve\u2019 for resolving host names;\n<li class=\"l\">  \u2018tcp-request content set-dst\u2019 and \u2018tcp-request content set-dst-port\u2019 for substituting the target IP address and port.\n<\/ul>\n<li class=\"l\"> New conversion modules have been added:\n<ul>\n<li class=\"l\"> aes_gcm_dev for decrypting streams using AES128-GCM, AES192-GCM, and AES256-GCM algorithms;\n<li class=\"l\"> protobuf for extracting fields from Protocol Buffers messages;\n<li class=\"l\"> ungrpc for extracting fields from gRPC messages.\n<\/ul>\n<p><noindex><a rel=\"nofollow\" name=\"link\"><\/a><\/noindex><\/p>\n<p>Source: <a \ncontent=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/www.opennet.ru\/opennews\/art.shtml?num=50904\">opennet.ru<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u041e\u043f\u0443\u0431\u043b\u0438\u043a\u043e\u0432\u0430\u043d \u0440\u0435\u043b\u0438\u0437 \u0431\u0430\u043b\u0430\u043d\u0441\u0438\u0440\u043e\u0432\u0449\u0438\u043a\u0430 \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u0438 HAProxy 2.0, \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0449\u0435\u0433\u043e \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0442\u044c HTTP-\u0442\u0440\u0430\u0444\u0438\u043a \u0438 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u043b\u044c\u043d\u044b\u0435 TCP-\u0437\u0430\u043f\u0440\u043e\u0441\u044b \u043c\u0435\u0436\u0434\u0443 \u0433\u0440\u0443\u043f\u043f\u043e\u0439 \u0441\u0435\u0440\u0432\u0435\u0440\u043e\u0432, \u0443\u0447\u0438\u0442\u044b\u0432\u0430\u044f \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u0444\u0430\u043a\u0442\u043e\u0440\u043e\u0432 (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e\u0441\u0442\u044c \u0441\u0435\u0440\u0432\u0435\u0440\u043e\u0432, \u043e\u0446\u0435\u043d\u0438\u0432\u0430\u0435\u0442 \u0443\u0440\u043e\u0432\u0435\u043d\u044c \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u0438, \u0438\u043c\u0435\u0435\u0442 \u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0430 \u043f\u0440\u043e\u0442\u0438\u0432\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f DDoS) \u0438 \u043f\u0440\u043e\u0432\u043e\u0434\u0438\u0442 \u043f\u0435\u0440\u0432\u0438\u0447\u043d\u0443\u044e \u0444\u0438\u043b\u044c\u0442\u0440\u0430\u0446\u0438\u044e \u0434\u0430\u043d\u043d\u044b\u0445 (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043c\u043e\u0436\u043d\u043e \u0440\u0430\u0437\u0431\u0438\u0440\u0430\u0442\u044c HTTP-\u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0438, \u043e\u0442\u0444\u0438\u043b\u044c\u0442\u0440\u043e\u0432\u044b\u0432\u0430\u0442\u044c \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0443 \u043d\u0435\u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u044b\u0445 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 \u0437\u0430\u043f\u0440\u043e\u0441\u0430, \u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043f\u043e\u0434\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0443 SQL \u0438 XSS, \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0442\u044c \u0430\u0433\u0435\u043d\u0442\u044b \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u043a\u043e\u043d\u0442\u0435\u043d\u0442\u0430). HAProxy \u0442\u0430\u043a\u0436\u0435 \u043c\u043e\u0436\u0435\u0442 [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[702],"tags":[],"class_list":["post-35486","post","type-post","status-publish","format-standard","hentry","category-news"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.2 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u041e\u043f\u0443\u0431\u043b\u0438\u043a\u043e\u0432\u0430\u043d \u0440\u0435\u043b\u0438\u0437 \u0431\u0430\u043b\u0430\u043d\u0441\u0438\u0440\u043e\u0432\u0449\u0438\u043a\u0430 \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u0438 HAProxy.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/en\/blog\/news\/vypusk-http-tcp-balansirovshhika-haproxy-2-0\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.2\" \/>\n\t\t<meta property=\"og:locale\" content=\"en_US\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47\u0412\u044b\u043f\u0443\u0441\u043a HTTP\/TCP-\u0431\u0430\u043b\u0430\u043d\u0441\u0438\u0440\u043e\u0432\u0449\u0438\u043a\u0430 HAProxy 2.0 | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u041e\u043f\u0443\u0431\u043b\u0438\u043a\u043e\u0432\u0430\u043d \u0440\u0435\u043b\u0438\u0437 \u0431\u0430\u043b\u0430\u043d\u0441\u0438\u0440\u043e\u0432\u0449\u0438\u043a\u0430 \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u0438 HAProxy.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/en\/blog\/news\/vypusk-http-tcp-balansirovshhika-haproxy-2-0\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2019-10-31T19:04:36+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2019-10-31T19:04:36+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47Release of HAProxy 2.0 HTTP\/TCP load balancer | ProHoster","description":"The release of the HAProxy load balancer has been published.","canonical_url":"https:\/\/prohoster.info\/en\/blog\/news\/vypusk-http-tcp-balansirovshhika-haproxy-2-0","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"en_US","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47\u0412\u044b\u043f\u0443\u0441\u043a HTTP\/TCP-\u0431\u0430\u043b\u0430\u043d\u0441\u0438\u0440\u043e\u0432\u0449\u0438\u043a\u0430 HAProxy 2.0 | ProHoster","og:description":"\u041e\u043f\u0443\u0431\u043b\u0438\u043a\u043e\u0432\u0430\u043d \u0440\u0435\u043b\u0438\u0437 \u0431\u0430\u043b\u0430\u043d\u0441\u0438\u0440\u043e\u0432\u0449\u0438\u043a\u0430 \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u0438 HAProxy.","og:url":"https:\/\/prohoster.info\/en\/blog\/news\/vypusk-http-tcp-balansirovshhika-haproxy-2-0","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2019-10-31T19:04:36+00:00","article:modified_time":"2019-10-31T19:04:36+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"35486","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":"2026-01-21 23:28:19","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-03-01 02:01:26","updated":"2026-01-21 23:28:19","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/posts\/35486","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/comments?post=35486"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/posts\/35486\/revisions"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/media?parent=35486"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/categories?post=35486"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/tags?post=35486"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}