เบเบฒเบ™เบ›เปˆเบญเบเบ•เบปเบงเบ”เบธเปˆเบ™เบ”เปˆเบฝเบ‡ HTTP/TCP HAProxy 2.0

เบˆเบฑเบ”เบžเบตเบกเบกเบฒ เบเบฒเบ™เบ›เปˆเบญเบเบ•เบปเบงเบ”เบธเปˆเบ™เบ”เปˆเบฝเบ‡เบเบฒเบ™เป‚เบซเบผเบ” HA Proxy 2.0, เป€เบŠเบดเปˆเบ‡เบŠเปˆเบงเบเปƒเบซเป‰เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เปเบˆเบเบขเบฒเบเบเบฒเบ™เบˆเบฒเบฅเบฐเบˆเบญเบ™ HTTP เปเบฅเบฐเบเบฒเบ™เบฎเป‰เบญเบ‡เบ‚เป TCP arbitrary เบฅเบฐเบซเบงเปˆเบฒเบ‡เบเบธเปˆเบกเบ‚เบญเบ‡เป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบ, เป‚เบ”เบเบ„เปเบฒเบ™เบถเบ‡เป€เบ–เบดเบ‡เบ›เบฑเบ”เปƒเบˆเบˆเปเบฒเบ™เบงเบ™เบซเบผเบฒเบ (เบ•เบปเบงเบขเปˆเบฒเบ‡เป€เบŠเบฑเปˆเบ™, เบกเบฑเบ™เบเบงเบ”เบชเบญเบšเบเบฒเบ™เบกเบตเป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบ, เบ›เบฐเป€เบกเบตเบ™เบฅเบฐเบ”เบฑเบšเบเบฒเบ™เป‚เบซเบผเบ”, เบกเบตเบกเบฒเบ”เบ•เบฐเบเบฒเบ™เบ•เป‰เบฒเบ™ DDoS) เปเบฅเบฐเบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เบเบฑเปˆเบ™เบ•เบญเบ‡เบ‚เปเป‰เบกเบนเบ™เบ•เบปเป‰เบ™เบ•เป (. เบ•เบปเบงเบขเปˆเบฒเบ‡เป€เบŠเบฑเปˆเบ™, เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เปเบเบเบชเปˆเบงเบ™เบซเบปเบง HTTP, เบเบฒเบ™เบเบฑเปˆเบ™เบ•เบญเบ‡เบเบฒเบ™เบชเบปเปˆเบ‡เบ•เปเปˆเบ•เบปเบงเบเปเบฒเบ™เบปเบ”เบเบฒเบ™เบชเบญเบšเบ–เบฒเบกเบ—เบตเปˆเบšเปเปˆเบ–เบทเบเบ•เป‰เบญเบ‡, เบ•เบฑเบ™ SQL เปเบฅเบฐ XSS เปเบ—เบ™, เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเบ•เบปเบงเปเบ—เบ™เบเบฒเบ™เบ›เบธเบ‡เปเบ•เปˆเบ‡เป€เบ™เบทเป‰เบญเบซเบฒ). HAProxy เบเบฑเบ‡เบชเบฒเบกเบฒเบ” เบ™เปเบฒเปƒเบŠเป‰ เป€เบžเบทเปˆเบญเบ›เบฐเบชเบฒเบ™เบ‡เบฒเบ™เบเบฒเบ™เป‚เบ•เป‰เบ•เบญเบšเบ‚เบญเบ‡เบญเบปเบ‡เบ›เบฐเบเบญเบšเปƒเบ™เบฅเบฐเบšเบปเบšเป‚เบ”เบเบญเบตเบ‡เปƒเบชเปˆเบชเบฐเบ–เบฒเบ›เบฑเบ”เบ•เบฐเบเบฐเบเปเบฒเบˆเบธเบฅเบฐเบžเบฒเบ. เบฅเบฐเบซเบฑเบ”เป‚เบ„เบ‡เบเบฒเบ™เปเบกเปˆเบ™เบ‚เบฝเบ™เป€เบ›เบฑเบ™ C เปเบฅเบฐ เบชเบฐเบซเบ™เบญเบ‡เปƒเบซเป‰ เบญเบฐเบ™เบธเบเบฒเบ”เบžเบฒเบเปƒเบ•เป‰ GPLv2. เป‚เบ„เบ‡เบเบฒเบ™เบ”เบฑเปˆเบ‡เบเปˆเบฒเบงเป„เบ”เป‰เบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เบขเบนเปˆเปƒเบ™เป€เบงเบฑเบšเป„เบŠเบ—เปŒเบ‚เบฐเบซเบ™เบฒเบ”เปƒเบซเบเปˆเบˆเปเบฒเบ™เบงเบ™เบซเบผเบฒเบ, เบฅเบงเบกเบ—เบฑเบ‡ Airbnb, Alibaba, GitHub, Imgur, Instagram, Reddit, StackOverflow, Tumblr, Twitter เปเบฅเบฐ Vimeo.

เบ„เบธเบ™โ€‹เบ™เบฐโ€‹เบชเบปเบกโ€‹เบšเบฑเบ”โ€‹เบเบฒเบ™โ€‹เบ›เปˆเบญเบโ€‹เบ—เบตเปˆโ€‹เบชเปเบฒโ€‹เบ„เบฑเบ™โ€‹:

  • API เปƒเปเปˆเป„เบ”เป‰เบ™เบณเบชเบฐเป€เปœเบต เปเบœเบ™เบเบฒเบ™เบ‚เปเป‰เบกเบนเบ™, เป€เบŠเบดเปˆเบ‡เบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบˆเบฑเบ”เบเบฒเบ™เบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒ HAProxy เปƒเบ™เป€เบงเบฅเบฒเบšเบดเบ™เบœเปˆเบฒเบ™ REST Web API. เบฅเบงเบกเบ—เบฑเบ‡, เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เป€เบžเบตเปˆเบกเปเบฅเบฐเบฅเบถเบš backends เปเบฅเบฐเป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบเปเบšเบšเป€เบ„เบทเปˆเบญเบ™เป„เบซเบง, เบชเป‰เบฒเบ‡ ACLs, เบ›เปˆเบฝเบ™เป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡เบเบฒเบ™เบฎเป‰เบญเบ‡เบ‚เป, เบ›เปˆเบฝเบ™เบเบฒเบ™เบœเบนเบเบกเบฑเบ”เบ•เบปเบงเบˆเบฑเบ”เบเบฒเบ™เบเบฑเบš IP;
  • เป€เบžเบตเปˆเบกเบ„เปเบฒเบชเบฑเปˆเบ‡ nbthread, เป€เบŠเบดเปˆเบ‡เบŠเปˆเบงเบเปƒเบซเป‰เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบเปเบฒเบ™เบปเบ”เบˆเปเบฒเบ™เบงเบ™เบ‚เบญเบ‡ threads เบ—เบตเปˆเปƒเบŠเป‰เปƒเบ™ HAProxy เป€เบžเบทเปˆเบญเป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเปƒเบ™ CPU เบซเบผเบฒเบเปเบเบ™. เป‚เบ”เบเบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™, เบˆเบณเบ™เบงเบ™เบ‚เบญเบ‡เบเบฐเบ—เบนเป‰เบžเบฐเบ™เบฑเบเบ‡เบฒเบ™เบ–เบทเบเป€เบฅเบทเบญเบเป‚เบ”เบเบ‚เบถเป‰เบ™เบเบฑเบš CPU cores เบ—เบตเปˆเบกเบตเบขเบนเปˆเปƒเบ™เบชเบฐเบžเบฒเบšเปเบงเบ”เบฅเป‰เบญเบกเบ›เบฑเบ”เบˆเบธเบšเบฑเบ™, เปเบฅเบฐเปƒเบ™เบชเบฐเบžเบฒเบšเปเบงเบ”เบฅเป‰เบญเบกเบ„เบฅเบฒเบงเบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เปเบกเปˆเบ™เปœเบถเปˆเบ‡เบเบฐเบ—เบนเป‰. เป€เบžเบทเปˆเบญเบเปเบฒเบ™เบปเบ”เบ‚เปเป‰เบˆเปเบฒเบเบฑเบ”เบเบฒเบ, เบ—เบฒเบ‡เป€เบฅเบทเบญเบเบเบฒเบ™เบ›เบฐเบเบญเบš MAX_THREADS เปเบฅเบฐ MAX_PROCS เป„เบ”เป‰เบ–เบทเบเป€เบžเบตเปˆเบก, เบˆเปเบฒเบเบฑเบ”เบ‚เบญเบšเป€เบ‚เบ”เบˆเปเบฒเบเบฑเบ”เป€เบ—เบดเบ‡เบเปˆเบฝเบงเบเบฑเบšเบˆเปเบฒเบ™เบงเบ™เบ‚เบญเบ‡ threads เปเบฅเบฐเบ‚เบฐเบšเบงเบ™เบเบฒเบ™;
  • เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบ„เปเบฒเบชเบฑเปˆเบ‡เบœเบนเบเบกเบฑเบ”เบชเปเบฒเบฅเบฑเบšเบ•เบปเบงเบˆเบฑเบ”เบเบฒเบ™เบเบฒเบ™เบœเบนเบเบกเบฑเบ”เบเบฑเบšเบ—เบตเปˆเบขเบนเปˆเป€เบ„เบทเบญเบ‚เปˆเบฒเบเป„เบ”เป‰เบ–เบทเบเป€เบฎเบฑเบ”เปƒเบซเป‰เบ‡เปˆเบฒเบเบ”เบฒเบ. เป€เบกเบทเปˆเบญเบ•เบฑเป‰เบ‡เบ„เปˆเบฒ, เบกเบฑเบ™เบšเปเปˆเบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เบเปเบฒเบ™เบปเบ”เบ•เบปเบงเบเปเบฒเบ™เบปเบ”เบเบฒเบ™เบ‚เบญเบ‡เบ‚เบฐเบšเบงเบ™เบเบฒเบ™ - เป‚เบ”เบเบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™, เบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเบˆเบฐเบ–เบทเบเปเบˆเบเบขเบฒเบเบฅเบฐเบซเบงเปˆเบฒเบ‡เบเบฐเบ—เบนเป‰เบ‚เบถเป‰เบ™เบเบฑเบšเบˆเปเบฒเบ™เบงเบ™เบ‚เบญเบ‡เบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเบ—เบตเปˆเปƒเบŠเป‰เบงเบฝเบ.
  • เบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเบšเบฑเบ™เบ—เบถเบเปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเปเบฅเปˆเบ™เบขเบนเปˆเปƒเบ™เบ–เบฑเบ‡เบ—เบตเปˆเป‚เบ”เบ”เบ”เปˆเบฝเบงเป„เบ”เป‰เบ–เบทเบเป€เบฎเบฑเบ”เปƒเบซเป‰เบ‡เปˆเบฒเบเบ”เบฒเบ - เบšเบฑเบ™เบ—เบถเบเบชเบฒเบกเบฒเบ”เบ–เบทเบเบชเบปเปˆเบ‡เป„เบ›เบซเบฒ stdout เปเบฅเบฐ stderr, เป€เบŠเบฑเปˆเบ™เบ”เบฝเบงเบเบฑเบ™เบเบฑเบšเบ•เบปเบงเบญเบฐเบ—เบดเบšเบฒเบเป„เบŸเบฅเปŒเบ—เบตเปˆเบกเบตเบขเบนเปˆ (เบ•เบปเบงเบขเปˆเบฒเบ‡, "log fd@1 local0");
  • เบเบฒเบ™เบฎเบญเบ‡เบฎเบฑเบš HTX (Native HTTP Representation) เบ–เบทเบเป€เบ›เบตเบ”เปƒเบŠเป‰เป‚เบ”เบเบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™, เบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เบกเบตเบเบฒเบ™เบ”เบธเปˆเบ™เบ”เปˆเบฝเบ‡เปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเปƒเบŠเป‰เบ„เบธเบ™เบชเบปเบกเบšเบฑเบ”เบ‚เบฑเป‰เบ™เบชเบนเบ‡เป€เบŠเบฑเปˆเบ™ HTTP/2 end-to-end, Layer 7 Retries เปเบฅเบฐ gRPC. HTX เบšเปเปˆเป„เบ”เป‰เบ—เบปเบ”เปเบ—เบ™ headers เปƒเบ™เบชเบฐเบ–เบฒเบ™เบ—เบตเปˆ, เปเบ•เปˆเบซเบผเบธเบ”เบœเปˆเบญเบ™เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เบ”เบฑเบ”เปเบเป‰เป€เบžเบทเปˆเบญเป€เบญเบปเบฒเบญเบญเบเปเบฅเบฐเป€เบžเบตเปˆเบก header เปƒเบซเบกเปˆเปƒเบ™เบ•เบญเบ™เบ—เป‰เบฒเบเบ‚เบญเบ‡เบšเบฑเบ™เบŠเบตเบฅเบฒเบเบŠเบทเปˆ, เป€เบŠเบดเปˆเบ‡เบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ” manipulate เปƒเบ”เป†เบ—เบตเปˆเบ‚เบฐเบซเบเบฒเบเบ‚เบญเบ‡เป‚เบ›เป‚เบ•เบ„เบญเบ™ HTTP, เบฎเบฑเบเบชเบฒ semantics เบ•เบปเป‰เบ™เบชเบฐเบšเบฑเบšเบ‚เบญเบ‡ headers เปเบฅเบฐเบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เบ—เปˆเบฒเบ™. เป€เบžเบทเปˆเบญเบšเบฑเบ™เบฅเบธเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบ—เบตเปˆเบชเบนเบ‡เบ‚เบถเป‰เบ™เป€เบกเบทเปˆเบญเปเบ› HTTP/2 เป€เบ›เบฑเบ™ HTTP/1.1 เปเบฅเบฐเปƒเบ™เบ—เบฒเบ‡เบเบฑเบšเบเบฑเบ™;
  • เป€เบžเบตเปˆเบกเบเบฒเบ™เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบขเปˆเบฒเบ‡เป€เบ›เบฑเบ™เบ—เบฒเบ‡เบเบฒเบ™เบชเปเบฒเบฅเบฑเบšเป‚เบซเบกเบ” End-to-End HTTP/2 (เบเบฒเบ™เบ›เบธเบ‡เปเบ•เปˆเบ‡เบ—เบธเบเบ‚เบฑเป‰เบ™เบ•เบญเบ™เปƒเบ™ HTTP/2, เบฅเบงเบกเบ—เบฑเบ‡เบเบฒเบ™เป‚เบ—เป„เบ›เบซเบฒ backend, เปเบฅเบฐเบšเปเปˆเบžเบฝเบ‡เปเบ•เปˆเบเบฒเบ™เป‚เบ•เป‰เบ•เบญเบšเบฅเบฐเบซเบงเปˆเบฒเบ‡เบ•เบปเบงเปเบ—เบ™เปเบฅเบฐเบฅเบนเบเบ„เป‰เบฒ);
  • เบเบฒเบ™เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบขเปˆเบฒเบ‡เป€เบ•เบฑเบกเบ—เบตเปˆเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เป€เบ›เบฑเบ™เบ•เบปเบงเปเบ—เบ™ bidirectional เบ‚เบญเบ‡เบญเบฐเบ™เบธเบชเบฑเบ™เบเบฒ gRPC เป„เบ”เป‰เบ–เบทเบเบ›เบฐเบ•เบดเบšเบฑเบ”เบ”เป‰เบงเบเบ„เบงเบฒเบกเบชเบฒเบกเบฒเบ”เปƒเบ™เบเบฒเบ™เปเบเบ gRPC streams, เป€เบ™เบฑเป‰เบ™เบ‚เปเป‰เบ„เบงเบฒเบกเบชเปˆเบงเบ™เบšเบธเบเบ„เบปเบ™, เบชเบฐเบ—เป‰เบญเบ™เปƒเบซเป‰เป€เบซเบฑเบ™เบเบฒเบ™เบˆเบฐเบฅเบฒเบˆเบญเบ™ gRPC เปƒเบ™เบšเบฑเบ™เบ—เบถเบเปเบฅเบฐเบเบฒเบ™เบเบฑเปˆเบ™เบ•เบญเบ‡เบ‚เปเป‰เบ„เบงเบฒเบกเป‚เบ”เบเปƒเบŠเป‰ ACLs. gRPC เบŠเปˆเบงเบเปƒเบซเป‰เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบˆเบฑเบ”เบ•เบฑเป‰เบ‡เบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบเบ‚เบญเบ‡ microservices เปƒเบ™เบžเบฒเบชเบฒเบเบฒเบ™เบ‚เบฝเบ™เป‚เบ›เบฅเปเบเบฅเบกเบ•เปˆเบฒเบ‡เป†เป€เบŠเบดเปˆเบ‡เบžเบปเบงเบžเบฑเบ™เบเบฑเบšเบเบฑเบ™เปเบฅเบฐเบเบฑเบ™เป‚เบ”เบเปƒเบŠเป‰ API เบ—เบปเปˆเบงเป„เบ›. เบเบฒเบ™เบชเบทเปˆเบชเบฒเบ™เป€เบ„เบทเบญเบ‚เปˆเบฒเบเปƒเบ™ gRPC เปเบกเปˆเบ™เบ–เบทเบเบ›เบฐเบ•เบดเบšเบฑเบ”เบขเบนเปˆเป€เบ—เบดเบ‡เบชเบธเบ”เบ‚เบญเบ‡ HTTP/2 protocol เปเบฅเบฐเปเบกเปˆเบ™เบญเบตเบ‡เปƒเบชเปˆเบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰ Protocol Buffers เบชเปเบฒเบฅเบฑเบš serialization เบ‚เปเป‰เบกเบนเบ™.
  • เป€เบžเบตเปˆเบกเบเบฒเบ™เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบชเปเบฒเบฅเบฑเบšเป‚เบซเบกเบ” "Layer 7 Retries", เป€เบŠเบดเปˆเบ‡เบŠเปˆเบงเบเปƒเบซเป‰เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบชเบปเปˆเบ‡เบ„เปเบฒเบฎเป‰เบญเบ‡เบ‚เป HTTP เบŠเปเป‰เบฒเบ„เบทเบ™เปƒเบ™เบเปเบฅเบฐเบ™เบตเบ‚เบญเบ‡เบ„เบงเบฒเบกเบฅเบปเป‰เบกเป€เบซเบผเบงเบ‚เบญเบ‡เบŠเบญเบšเปเบงเบ—เบตเปˆเบšเปเปˆเบเปˆเบฝเบงเบ‚เป‰เบญเบ‡เบเบฑเบšเบšเบฑเบ™เบซเบฒเบเบฒเบ™เบชเป‰เบฒเบ‡เบ•เบฑเป‰เบ‡เบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเป€เบ„เบทเบญเบ‚เปˆเบฒเบ (เบ•เบปเบงเบขเปˆเบฒเบ‡, เบ–เป‰เบฒเบšเปเปˆเบกเบตเบเบฒเบ™เบ•เบญเบšเบชเบฐเบซเบ™เบญเบ‡เบซเบผเบทเบเบฒเบ™เบ•เบญเบšเบชเบฐเบซเบ™เบญเบ‡เป€เบ›เบปเปˆเบฒเบเบฑเบš a. เบ„เปเบฒเบฎเป‰เบญเบ‡เบ‚เป POST). เป€เบžเบทเปˆเบญเบ›เบดเบ”เปƒเบŠเป‰เบ‡เบฒเบ™เป‚เปเบ”, เบ—เบธเบ‡ โ€œdisable-l7-retryโ€ เป„เบ”เป‰เบ–เบทเบเป€เบžเบตเปˆเบกเปƒเบชเปˆเบ•เบปเบงเป€เบฅเบทเบญเบ โ€œhttp-requestโ€, เปเบฅเบฐเบ•เบปเบงเป€เบฅเบทเบญเบ โ€œเบฅเบญเบ‡เป€เบ›เบตเบ”เปƒเปเปˆโ€ เป„เบ”เป‰เบ–เบทเบเป€เบžเบตเปˆเบกเป€เบ‚เบปเป‰เบฒเปƒเบ™เบเบฒเบ™เบ›เบฑเบšเบฅเบฐเบญเบฝเบ”เปƒเบ™เบžเบฒเบเบชเปˆเบงเบ™เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™, เบŸเบฑเบ‡ เปเบฅเบฐ backend. เบชเบฑเบ™เบเบฒเบ™เบ•เปเปˆเป„เบ›เบ™เบตเป‰เบชเบฒเบกเบฒเบ”เปƒเบŠเป‰เป„เบ”เป‰เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบชเบปเปˆเบ‡เบ„เบทเบ™เปƒเบซเบกเปˆ: all-retryable-errors, none, conn-failure, empty-response, junk-response, response-timeout, 0rtt-rejected, as well as binding to return status codes (404, etc.) ;
  • เบœเบนเป‰เบˆเบฑเบ”เบเบฒเบ™เบ‚เบฐเบšเบงเบ™เบเบฒเบ™เปƒเบซเบกเปˆเป„เบ”เป‰เบ–เบทเบเบ›เบฐเบ•เบดเบšเบฑเบ”, เป€เบŠเบดเปˆเบ‡เบŠเปˆเบงเบเปƒเบซเป‰เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบเปเบฒเบ™เบปเบ”เบเบฒเบ™เป‚เบ—เบซเบฒเป„เบŸเบฅเปŒเบ—เบตเปˆเบชเบฒเบกเบฒเบ”เบ›เบฐเบ•เบดเบšเบฑเบ”เป„เบ”เป‰เบžเบฒเบเบ™เบญเบเบ”เป‰เบงเบเบ•เบปเบงเบˆเบฑเบ”เบเบฒเบ™เบชเปเบฒเบฅเบฑเบš HAProxy.
    เบ•เบปเบงเบขเปˆเบฒเบ‡, Data Plan API (/usr/sbin/dataplaneapi), เป€เบŠเบฑเปˆเบ™เบ”เบฝเบงเบเบฑเบ™เบเบฑเบšเป€เบ„เบทเปˆเบญเบ‡เบˆเบฑเบเบ›เบฐเบกเบงเบ™เบœเบปเบ™ Offload stream เบ•เปˆเบฒเบ‡เป†, เบ–เบทเบเบ›เบฐเบ•เบดเบšเบฑเบ”เปƒเบ™เบฎเบนเบšเปเบšเบšเบ‚เบญเบ‡เบ•เบปเบงเบˆเบฑเบ”เบเบฒเบ™เบžเบฒเบเบ™เบญเบเบ”เบฑเปˆเบ‡เบเปˆเบฒเบง;

  • เบเบฒเบ™เบœเบนเบเบกเบฑเบ”เป„เบ”เป‰เบ–เบทเบเป€เบžเบตเปˆเบกเบชเปเบฒเบฅเบฑเบš .NET Core, Go, Lua เปเบฅเบฐ Python เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒ SPOE (Stream Processing Offload Engine) เปเบฅเบฐ SPOP (Stream Processing Offload Protocol). เบเปˆเบญเบ™เบซเบ™เป‰เบฒเบ™เบตเป‰, เบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒเบเบฒเบ™เบ‚เบฐเบซเบเบฒเบเป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบžเบฝเบ‡เปเบ•เปˆเบขเบนเปˆเปƒเบ™ C;
  • เป€เบžเบตเปˆเบกเบ•เบปเบงเบˆเบฑเบ”เบเบฒเบ™ spoa-mirror เบžเบฒเบเบ™เบญเบ (/usr/sbin/spoa-mirror) เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบชเบฐเบ—เป‰เบญเบ™เบเบฑเบšเป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบเบ—เบตเปˆเปเบเบเบ•เปˆเบฒเบ‡เบซเบฒเบ (เบ•เบปเบงเบขเปˆเบฒเบ‡, เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ„เบฑเบ”เบฅเบญเบเบšเบฒเบ‡เบชเปˆเบงเบ™เบ‚เบญเบ‡เบเบฒเบ™เบˆเบฐเบฅเบฒเบˆเบญเบ™เบเบฒเบ™เบœเบฐเบฅเบดเบ”เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเบชเบฐเบžเบฒเบšเปเบงเบ”เบฅเป‰เบญเบกเบ—เบปเบ”เบฅเบญเบ‡เบžเบฒเบเปƒเบ•เป‰เบเบฒเบ™เป‚เบซเบผเบ”เบ—เบตเปˆเปเบ—เป‰เบˆเบดเบ‡);
  • เปเบ™เบฐเบ™เบณ HAProxy Kubernetes Ingress Controller เป€เบžเบทเปˆเบญเบฎเบฑเบšเบ›เบฐเบเบฑเบ™เบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเป‚เบเบ‡เบเบฑเบšเปเบžเบฅเบฐเบ•เบฐเบŸเบญเบก Kubernetes;
  • เป€เบžเบตเปˆเบกเบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡เปƒเบ™เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบชเบปเปˆเบ‡เบญเบญเบเบชเบฐเบ–เบดเบ•เบดเบเบฑเบšเบฅเบฐเบšเบปเบšเบเบฒเบ™เบ•เบดเบ”เบ•เบฒเบก Prometheus;
  • เบญเบฐเบ™เบธเบชเบฑเบ™เบเบฒ Peers, เปƒเบŠเป‰เป€เบžเบทเปˆเบญเปเบฅเบเบ›เปˆเบฝเบ™เบ‚เปเป‰เบกเบนเบ™เบเบฑเบšเป‚เบ™เบ”เบญเบทเปˆเบ™เบ—เบตเปˆเปƒเบŠเป‰ HAProxy, เป„เบ”เป‰เบ–เบทเบเบ‚เบฐเบซเบเบฒเบเบญเบญเบเป„เบ›. เบฅเบงเบกเบ—เบฑเบ‡เบเบฒเบ™เป€เบžเบตเปˆเบกเบเบฒเบ™เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบชเปเบฒเบฅเบฑเบš Heartbeat เปเบฅเบฐเบเบฒเบ™เบชเบปเปˆเบ‡เบ‚เปเป‰เบกเบนเบ™เบ—เบตเปˆเบ–เบทเบเป€เบ‚เบปเป‰เบฒเบฅเบฐเบซเบฑเบ”;
  • เบ•เบปเบงเบเปเบฒเบ™เบปเบ”เบเบฒเบ™ "เบ•เบปเบงเบขเปˆเบฒเบ‡" เป„เบ”เป‰เบ–เบทเบเป€เบžเบตเปˆเบกเป€เบ‚เบปเป‰เบฒเปƒเบ™เบ„เปเบฒเบชเบฑเปˆเบ‡ "เบšเบฑเบ™เบ—เบถเบ", เป€เบŠเบดเปˆเบ‡เบŠเปˆเบงเบเปƒเบซเป‰เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบ–เบดเป‰เบกเบžเบฝเบ‡เปเบ•เปˆเบชเปˆเบงเบ™เบซเบ™เบถเปˆเบ‡เบ‚เบญเบ‡เบ„เปเบฒเบฎเป‰เบญเบ‡เบ‚เปเป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™เบšเบฑเบ™เบ—เบถเบ, เบ•เบปเบงเบขเปˆเบฒเบ‡ 1 เปƒเบ™ 10, เป€เบžเบทเปˆเบญเบชเป‰เบฒเบ‡เบ•เบปเบงเบขเปˆเบฒเบ‡เบเบฒเบ™เบงเบดเป€เบ„เบฒเบฐ;
  • เป€เบžเบตเปˆเบกเป‚เบซเบกเบ”เป‚เบ›เบฃเป„เบŸเบฅเปŒเบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ” (เบ„เปเบฒเบชเบฑเปˆเบ‡ profiling.tasks, เป€เบŠเบดเปˆเบ‡เบชเบฒเบกเบฒเบ”เป€เบญเบปเบฒเบ„เปˆเบฒเบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ”, เป€เบ›เบตเบ”เปเบฅเบฐเบ›เบดเบ”). เบเบฒเบ™เบชเป‰เบฒเบ‡เป‚เบ›เบฃเป„เบŸเบฅเปŒเบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ”เบ–เบทเบเป€เบ›เบตเบ”เปƒเบŠเป‰เบ‡เบฒเบ™เบ–เป‰เบฒเป€เบงเบฅเบฒเบ•เบญเบšเบชเบฐเปœเบญเบ‡เบชเบฐเป€เบฅเปˆเบเป€เบเบตเบ™ 1000 ms. เป€เบžเบทเปˆเบญเป€เบšเบดเปˆเบ‡เบ‚เปเป‰เบกเบนเบ™ profileing, เบ„เปเบฒเบชเบฑเปˆเบ‡ "show profileing" เป„เบ”เป‰เบ–เบทเบเป€เบžเบตเปˆเบกเป€เบ‚เบปเป‰เบฒเปƒเบ™ Runtime API เบซเบผเบทเบกเบฑเบ™เป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰เบ—เบตเปˆเบˆเบฐเบ›เบฑเบšเบชเบฐเบ–เบดเบ•เบดเบเบฑเบšเบšเบฑเบ™เบ—เบถเบ;
  • เป€เบžเบตเปˆเบกเบเบฒเบ™เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡เป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบเบ‚เบญเบ‡ backend เป‚เบ”เบเปƒเบŠเป‰เป‚เบ›เป‚เบ•เบ„เบญเบ™ SOCKS4;
  • เป€เบžเบตเปˆเบกเบเบฒเบ™เบฎเบญเบ‡เบฎเบฑเบšเปเบšเบš end-to-end เบชเปเบฒเบฅเบฑเบšเบเบปเบ™เป„เบเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เป€เบ›เบตเบ”เบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆ TCP เบขเปˆเบฒเบ‡เป„เบงเบงเบฒ (TFO - TCP Fast Open, RFC 7413), เป€เบŠเบดเปˆเบ‡เบŠเปˆเบงเบเปƒเบซเป‰เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบซเบผเบธเบ”เบœเปˆเบญเบ™เบˆเปเบฒเบ™เบงเบ™เบ‚เบฑเป‰เบ™เบ•เบญเบ™เบเบฒเบ™เบ•เบดเบ”เบ•เบฑเป‰เบ‡เบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเป‚เบ”เบเบเบฒเบ™เบฅเบงเบกเป€เบญเบปเบฒเบ„เปเบฒเบ—เปเบฒเบญเบดเบ”เป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™เบซเบ™เบถเปˆเบ‡เบ„เปเบฒเบฎเป‰เบญเบ‡เบ‚เปเปเบฅเบฐเบ‚เบฑเป‰เบ™เบ•เบญเบ™เบ—เบตเบชเบญเบ‡เบ‚เบญเบ‡ เบ‚เบฐเบšเบงเบ™เบเบฒเบ™เป€เบˆเบฅเบฐเบˆเบฒเบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเปเบšเบšเบ„เบฅเบฒเบชเบชเบดเบ 3 เบ‚เบฑเป‰เบ™เบ•เบญเบ™เปเบฅเบฐเป€เบฎเบฑเบ”เปƒเบซเป‰เบกเบฑเบ™เป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰เบ—เบตเปˆเบˆเบฐเบชเบปเปˆเบ‡เบ‚เปเป‰เบกเบนเบ™เปƒเบ™เบ‚เบฑเป‰เบ™เบ•เบญเบ™เป€เบšเบทเป‰เบญเบ‡เบ•เบปเป‰เบ™เบ‚เบญเบ‡เบเบฒเบ™เบชเป‰เบฒเบ‡เบ•เบฑเป‰เบ‡เบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆ;
  • เป€เบžเบตเปˆเบกเบเบฒเบ™เบเบฐเบ—เบณเปƒเปเปˆ:
    • "http-request replace-uri" เป€เบžเบทเปˆเบญเบ—เบปเบ”เปเบ—เบ™ URL เป‚เบ”เบเปƒเบŠเป‰เบเบฒเบ™เบชเบฐเปเบ”เบ‡เบญเบญเบเบ›เบปเบเบเบฐเบ•เบด;
    • "tcp-request content do-resolve" เปเบฅเบฐ "http-request do-resolve" เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เปเบเป‰เป„เบ‚ hostname;
    • "tcp-request content set-dst" เปเบฅเบฐ "tcp-request content set-dst-port" เป€เบžเบทเปˆเบญเบ—เบปเบ”เปเบ—เบ™เบ—เบตเปˆเบขเบนเปˆ IP เป€เบ›เบปเป‰เบฒเบซเบกเบฒเบเปเบฅเบฐเบžเบญเบ”.
  • เป€เบžเบตเปˆเบกเป‚เบกเบ”เบนเบ™เบเบฒเบ™เปเบ›เบ‡เปƒเบซเบกเปˆ:
    • aes_gcm_dev เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ–เบญเบ”เบฅเบฐเบซเบฑเบ”เบเบฒเบ™เบ–เปˆเบฒเบเบ—เบญเบ”เป‚เบ”เบเปƒเบŠเป‰ AES128-GCM, AES192-GCM เปเบฅเบฐ AES256-GCM algorithms;
    • protobuf เป€เบžเบทเปˆเบญเบชเบฐเบเบฑเบ”เบŠเปˆเบญเบ‡เบ‚เปเป‰เบกเบนเบ™เบˆเบฒเบเบ‚เปเป‰เบ„เบงเบฒเบก Protocol Buffers;
    • ungrpc เป€เบžเบทเปˆเบญเบชเบฐเบเบฑเบ”เบŠเปˆเบญเบ‡เบ‚เปเป‰เบกเบนเบ™เบˆเบฒเบเบ‚เปเป‰เบ„เบงเบฒเบก gRPC.

    เปเบซเบผเปˆเบ‡เบ‚เปเป‰เบกเบนเบ™: opennet.ru

เป€เบžเบตเปˆเบกเบ„เบงเบฒเบกเบ„เบดเบ”เป€เบซเบฑเบ™