HAProxy 2.0 HTTP/TCP рдмреЕрд▓рдиреНрд╕рд░ рд░рд┐рд▓реАрдЬ

рдкреНрд░рдХрд╛рд╢рд┐рдд рд▓реЛрдб рдмреЕрд▓рдиреНрд╕рд░ рд░рд┐рд▓реАрдЭ рд╣реЕрдкреНрд░реЛрдХреНрд╕реА реи.реж, рдЬреЗ рддреБрдореНрд╣рд╛рд▓рд╛ HTTP рдЯреНрд░реЕрдлрд┐рдХ рдЖрдгрд┐ рд╕рд░реНрд╡реНрд╣рд░рдЪреНрдпрд╛ рдЧрдЯрд╛рдордзреНрдпреЗ рдЕрдирд┐рдпрдВрддреНрд░рд┐рдд TCP рд╡рд┐рдирдВрддреНрдпрд╛ рд╡рд┐рддрд░рд┐рдд рдХрд░рдгреНрдпрд╛рд╕ рдЕрдиреБрдорддреА рджреЗрддреЗ, рдЕрдиреЗрдХ рдШрдЯрдХ рд╡рд┐рдЪрд╛рд░рд╛рдд рдШреЗрдКрди (рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, рддреЗ рд╕рд░реНрд╡реНрд╣рд░рдЪреА рдЙрдкрд▓рдмреНрдзрддрд╛ рддрдкрд╛рд╕рддреЗ, рд▓реЛрдб рдкрд╛рддрд│реАрдЪреЗ рдореВрд▓реНрдпрд╛рдВрдХрди рдХрд░рддреЗ, DDoS рдХрд╛рдЙрдВрдЯрд░рдореЗрдЭрд░реНрд╕ рдЖрд╣реЗрдд) рдЖрдгрд┐ рдкреНрд░рд╛рдердорд┐рдХ рдбреЗрдЯрд╛ рдлрд┐рд▓реНрдЯрд░рд┐рдВрдЧ рдХрд░рддреЗ ( рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, рддреБрдореНрд╣реА HTTP рд╢реАрд░реНрд╖рд▓реЗрдЦ рдкрд╛рд░реНрд╕ рдХрд░реВ рд╢рдХрддрд╛, рдлрд┐рд▓реНрдЯрд░ рдЯреНрд░рд╛рдиреНрд╕рдорд┐рд╢рди рдЪреБрдХреАрдЪреЗ рдХреНрд╡реЗрд░реА рдкреЕрд░рд╛рдореАрдЯрд░реНрд╕, рдмреНрд▓реЙрдХ SQL рдЖрдгрд┐ XSS рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди, рд╕рд╛рдордЧреНрд░реА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдПрдЬрдВрдЯ рдХрдиреЗрдХреНрдЯ рдХрд░реВ рд╢рдХрддрд╛). HAProxy рджреЗрдЦреАрд▓ рдХрд░реВ рд╢рдХрддрд╛ рд▓рд╛рдЧреВ рдХрд░рд╛ рдорд╛рдпрдХреНрд░реЛрд╕рд░реНрд╡реНрд╣рд┐рд╕реЗрд╕ рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░рд╡рд░ рдЖрдзрд╛рд░рд┐рдд рд╕рд┐рд╕реНрдЯрдордордзреАрд▓ рдШрдЯрдХрд╛рдВрдЪреНрдпрд╛ рдкрд░рд╕реНрдкрд░рд╕рдВрд╡рд╛рджрд╛рдЪреЗ рд╕рдордиреНрд╡рдп рд╕рд╛рдзрдгреНрдпрд╛рд╕рд╛рдареА. рдкреНрд░рдХрд▓реНрдк рдХреЛрдб C рдЖрдгрд┐ рдордзреНрдпреЗ рд▓рд┐рд╣рд┐рд▓реЗрд▓рд╛ рдЖрд╣реЗ рдкреБрд░рд╡рдард╛ GPLv2 рдЕрдВрддрд░реНрдЧрдд рдкрд░рд╡рд╛рдирд╛рдХреГрдд. рд╣рд╛ рдкреНрд░рдХрд▓реНрдк Airbnb, Alibaba, GitHub, Imgur, Instagram, Reddit, StackOverflow, Tumblr, Twitter рдЖрдгрд┐ Vimeo рдпрд╛рд╕рд╣ рдЕрдиреЗрдХ рдореЛрдареНрдпрд╛ рд╕рд╛рдЗрдЯрд╡рд░ рд╡рд╛рдкрд░рд▓рд╛ рдЬрд╛рддреЛ.

рдореБрдЦреНрдп рдкреНрд░рдХрд╛рд╢рди рд╡реИрд╢рд┐рд╖реНрдЯреНрдпреЗ:

  • рдирд╡реАрди API рд╕рд╛рджрд░ рдХреЗрд▓реЗ рдбреЗрдЯрд╛ рдпреЛрдЬрдирд╛, рдЬреЗ рддреБрдореНрд╣рд╛рд▓рд╛ REST Web API рджреНрд╡рд╛рд░реЗ рдлреНрд▓рд╛рдпрд╡рд░ HAProxy рд╕реЗрдЯрд┐рдВрдЧреНрдЬ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдгреНрдпрд╛рд╕ рдЕрдиреБрдорддреА рджреЗрддреЗ. рдпрд╛рд╕рд╣, рддреБрдореНрд╣реА рдЧрддрд┐рдХрд░рд┐рддреНрдпрд╛ рдмреЕрдХрдПрдВрдб рдЖрдгрд┐ рд╕рд░реНрд╡реНрд╣рд░ рдЬреЛрдбреВ рдЖрдгрд┐ рдХрд╛рдвреВ рд╢рдХрддрд╛, ACL рддрдпрд╛рд░ рдХрд░реВ рд╢рдХрддрд╛, рд╡рд┐рдирдВрддреА рд░рд╛рдЙрдЯрд┐рдВрдЧ рдмрджрд▓реВ рд╢рдХрддрд╛, рд╣рдБрдбрд▓рд░ рдмрд╛рдЗрдВрдбрд┐рдВрдЧреНрд╕ IP рд╡рд░ рдмрджрд▓реВ рд╢рдХрддрд╛;
  • nbthread рдирд┐рд░реНрджреЗрд╢ рдЬреЛрдбрд▓реЗ, рдЬреЗ рддреБрдореНрд╣рд╛рд▓рд╛ рдорд▓реНрдЯреА-рдХреЛрд░ CPUs рд╡рд░ рдХрд╛рд░реНрдпрдкреНрд░рджрд░реНрд╢рди рдСрдкреНрдЯрд┐рдорд╛рдЗрдЭ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА HAProxy рдордзреНрдпреЗ рд╡рд╛рдкрд░рд▓реЗрд▓реНрдпрд╛ рдереНрд░реЗрдбреНрд╕рдЪреА рд╕рдВрдЦреНрдпрд╛ рдХреЙрдиреНрдлрд┐рдЧрд░ рдХрд░рдгреНрдпрд╛рдЪреА рдкрд░рд╡рд╛рдирдЧреА рджреЗрддреЗ. рдбреАрдлреЙрд▓реНрдЯрдиреБрд╕рд╛рд░, рд╕рдзреНрдпрд╛рдЪреНрдпрд╛ рд╡рд╛рддрд╛рд╡рд░рдгрд╛рдд рдЙрдкрд▓рдмреНрдз рдЕрд╕рд▓реЗрд▓реНрдпрд╛ CPU рдХреЛрд░рдЪреНрдпрд╛ рдЖрдзрд╛рд░рд╛рд╡рд░ рд╡рд░реНрдХрд░ рдереНрд░реЗрдбрдЪреА рд╕рдВрдЦреНрдпрд╛ рдирд┐рд╡рдбрд▓реА рдЬрд╛рддреЗ рдЖрдгрд┐ рдХреНрд▓рд╛рдЙрдб рд╡рд╛рддрд╛рд╡рд░рдгрд╛рдд рдбреАрдлреЙрд▓реНрдЯ рдПрдХ рдереНрд░реЗрдб рдЕрд╕рддреЛ. рдХрдареЛрд░ рдорд░реНрдпрд╛рджрд╛ рд╕реЗрдЯ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА, рдЕрд╕реЗрдВрдмрд▓реА рдкрд░реНрдпрд╛рдп MAX_THREADS рдЖрдгрд┐ MAX_PROCS рдЬреЛрдбрд▓реЗ рдЧреЗрд▓реЗ рдЖрд╣реЗрдд, рдереНрд░реЗрдбреНрд╕ рдЖрдгрд┐ рдкреНрд░рдХреНрд░рд┐рдпрд╛рдВрдЪреНрдпрд╛ рд╕рдВрдЦреНрдпреЗрд╡рд░ рд╡рд░рдЪреА рдорд░реНрдпрд╛рджрд╛ рдорд░реНрдпрд╛рджрд┐рдд рдХрд░рддреЗ;
  • рд╣рдБрдбрд▓рд░реНрд╕рдирд╛ рдиреЗрдЯрд╡рд░реНрдХ рдкрддреНрддреНрдпрд╛рдВрд╡рд░ рдмрдВрдзрдирдХрд╛рд░рдХ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдмрд╛рдЗрдВрдб рдирд┐рд░реНрджреЗрд╢рд╛рдЪрд╛ рд╡рд╛рдкрд░ рд╕реБрд▓рдн рдХреЗрд▓рд╛ рдЧреЗрд▓рд╛ рдЖрд╣реЗ. рд╕реЗрдЯ рдЕрдк рдХрд░рддрд╛рдирд╛, рдпрд╛рдкреБрдвреЗ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдкреЕрд░рд╛рдореАрдЯрд░реНрд╕ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдирд╛рд╣реА - рдбреАрдлреЙрд▓реНрдЯрдиреБрд╕рд╛рд░, рд╕рдХреНрд░рд┐рдп рдХрдиреЗрдХреНрд╢рдирдЪреНрдпрд╛ рд╕рдВрдЦреНрдпреЗрдиреБрд╕рд╛рд░ рдереНрд░реЗрдбреНрд╕рдордзреНрдпреЗ рдХрдиреЗрдХреНрд╢рди рд╡рд┐рддрд░рд┐рдд рдХреЗрд▓реЗ рдЬрд╛рддреАрд▓.
  • рд╡реЗрдЧрд│реНрдпрд╛ рдХрдВрдЯреЗрдирд░рдордзреНрдпреЗ рдЪрд╛рд▓рдд рдЕрд╕рддрд╛рдирд╛ рд▓реЙрдЧ рд╕реЗрдЯ рдХрд░рдгреЗ рд╕реЛрдкреЗ рдХреЗрд▓реЗ рдЧреЗрд▓реЗ рдЖрд╣реЗ - рд▓реЙрдЧ рдЖрддрд╛ stdout рдЖрдгрд┐ stderr, рддрд╕реЗрдЪ рдЕрд╕реНрддрд┐рддреНрд╡рд╛рдд рдЕрд╕рд▓реЗрд▓реНрдпрд╛ рдХреЛрдгрддреНрдпрд╛рд╣реА рдлрд╛рдЗрд▓ рд╡рд░реНрдгрдирдХрд░реНрддреНрдпрд╛рд▓рд╛ (рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, тАЬlog fd@1 local0тАЭ) рдкрд╛рдард╡рд▓реЗ рдЬрд╛рдК рд╢рдХрддрд╛рдд;
  • рдПрдЪрдЯреАрдПрдХреНрд╕ (рдиреЗрдЯрд┐рд╡реНрд╣ рдПрдЪрдЯреАрдЯреАрдкреА рд░рд┐рдкреНрд░реЗрдЭреЗрдВрдЯреЗрд╢рди) рд╕рд╛рдареА рд╕рдорд░реНрдерди рдбреАрдлреЙрд▓реНрдЯрдиреБрд╕рд╛рд░ рд╕рдХреНрд╖рдо рдХреЗрд▓реЗ рдЖрд╣реЗ, рдПрдВрдб-рдЯреВ-рдПрдВрдб HTTP/2, рд▓реЗрдпрд░ 7 рдкреБрдиреНрд╣рд╛ рдкреНрд░рдпрддреНрди рдЖрдгрд┐ рдЬреАрдЖрд░рдкреАрд╕реА рдпрд╛рд╕рд╛рд░рдЦреНрдпрд╛ рдкреНрд░рдЧрдд рд╡реИрд╢рд┐рд╖реНрдЯреНрдпрд╛рдВрдЪрд╛ рд╡рд╛рдкрд░ рдХрд░рддрд╛рдирд╛ рд╕рдВрддреБрд▓рдирд╛рд╕ рдЕрдиреБрдорддреА рджреЗрддреЗ. HTX рд╣реЗрдбрд░ рдЬрд╛рдЧреА рдмрджрд▓рдд рдирд╛рд╣реА, рдкрд░рдВрддреБ рд╕реВрдЪреАрдЪреНрдпрд╛ рд╢реЗрд╡рдЯреА рдПрдХ рдирд╡реАрди рд╣реЗрдбрд░ рдХрд╛рдвреВрди рдЯрд╛рдХрдгреНрдпрд╛рд╕рд╛рдареА рдЖрдгрд┐ рдЬреЛрдбрдгреНрдпрд╛рд╕рд╛рдареА рд╕реБрдзрд╛рд░рдгрд╛ рдСрдкрд░реЗрд╢рди рдХрдореА рдХрд░рддреЗ, рдЬреЗ рддреБрдореНрд╣рд╛рд▓рд╛ HTTP рдкреНрд░реЛрдЯреЛрдХреЙрд▓рдЪреНрдпрд╛ рдХреЛрдгрддреНрдпрд╛рд╣реА рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рдкреНрд░рдХрд╛рд░рд╛рдВрдордзреНрдпреЗ рдлреЗрд░рдлрд╛рд░ рдХрд░рдгреНрдпрд╛рд╕ рдЕрдиреБрдорддреА рджреЗрддреЗ, рд╣реЗрдбрд░рдЪреЗ рдореВрд│ рд╢рдмреНрджрд╛рд░реНрде рдЬрддрди рдХрд░реВрди рдЖрдгрд┐ рддреБрдореНрд╣рд╛рд▓рд╛ рдкрд░рд╡рд╛рдирдЧреА рджреЗрддреЗ. HTTP/2 рддреЗ HTTP/1.1 рдЖрдгрд┐ рддреНрдпрд╛рдЙрд▓рдЯ рднрд╛рд╖рд╛рдВрддрд░ рдХрд░рддрд╛рдирд╛ рдЙрдЪреНрдЪ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА;
  • рдПрдВрдб-рдЯреВ-рдПрдВрдб HTTP/2 рдореЛрдбрд╕рд╛рдареА рдЕрдзрд┐рдХреГрдд рд╕рдорд░реНрдерди рдЬреЛрдбрд▓реЗ (HTTP/2 рдордзреАрд▓ рд╕рд░реНрд╡ рдЯрдкреНрдкреНрдпрд╛рдВрд╡рд░ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд░рдгреЗ, рдмреЕрдХрдПрдВрдбрд╡рд░ рдХреЙрд▓рд╕рд╣, рдЖрдгрд┐ рдХреЗрд╡рд│ рдкреНрд░реЙрдХреНрд╕реА рдЖрдгрд┐ рдХреНрд▓рд╛рдпрдВрдЯрдордзреАрд▓ рдкрд░рд╕реНрдкрд░рд╕рдВрд╡рд╛рдж рдирд╛рд╣реА);
  • gRPC рдкреНрд░реЛрдЯреЛрдХреЙрд▓рдЪреНрдпрд╛ рджреНрд╡рд┐рджрд┐рд╢рд╛рддреНрдордХ рдкреНрд░реЙрдХреНрд╕реАрд╕рд╛рдареА рдкреВрд░реНрдг рд╕рдорд░реНрдерди gRPC рдкреНрд░рд╡рд╛рд╣ рдкрд╛рд░реНрд╕ рдХрд░рдгреНрдпрд╛рдЪреНрдпрд╛ рдХреНрд╖рдорддреЗрд╕рд╣ рд▓рд╛рдЧреВ рдХреЗрд▓реЗ рдЧреЗрд▓реЗ рдЖрд╣реЗ, рд╡реИрдпрдХреНрддрд┐рдХ рд╕рдВрджреЗрд╢ рд╣рд╛рдпрд▓рд╛рдЗрдЯ рдХрд░рдгреЗ, рд▓реЙрдЧрдордзреНрдпреЗ gRPC рд░рд╣рджрд╛рд░реА рдкреНрд░рддрд┐рдмрд┐рдВрдмрд┐рдд рдХрд░рдгреЗ рдЖрдгрд┐ ACLs рд╡рд╛рдкрд░реВрди рд╕рдВрджреЗрд╢ рдлрд┐рд▓реНрдЯрд░ рдХрд░рдгреЗ. gRPC рддреБрдореНрд╣рд╛рд▓рд╛ рдпреБрдирд┐рд╡реНрд╣рд░реНрд╕рд▓ API рд╡рд╛рдкрд░реВрди рдПрдХрдореЗрдХрд╛рдВрд╢реА рд╕рдВрд╡рд╛рдж рд╕рд╛рдзрдгрд╛рд▒реНрдпрд╛ рд╡рд┐рд╡рд┐рдз рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛рдВрдордзреНрдпреЗ рдорд╛рдпрдХреНрд░реЛрд╕рд░реНрд╡реНрд╣рд┐рд╕реЗрд╕рдЪреЗ рдХрд╛рд░реНрдп рдЖрдпреЛрдЬрд┐рдд рдХрд░рдгреНрдпрд╛рдЪреА рдкрд░рд╡рд╛рдирдЧреА рджреЗрддреЗ. gRPC рдордзреАрд▓ рдиреЗрдЯрд╡рд░реНрдХ рдХрдореНрдпреБрдирд┐рдХреЗрд╢рди HTTP/2 рдкреНрд░реЛрдЯреЛрдХреЙрд▓рдЪреНрдпрд╛ рд╡рд░ рд▓рд╛рдЧреВ рдХреЗрд▓реЗ рдЬрд╛рддреЗ рдЖрдгрд┐ рдбреЗрдЯрд╛ рдХреНрд░рдорд╡рд╛рд░реАрд╕рд╛рдареА рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдмрдлрд░реНрд╕рдЪреНрдпрд╛ рд╡рд╛рдкрд░рд╛рд╡рд░ рдЖрдзрд╛рд░рд┐рдд рдЖрд╣реЗ.
  • "рд▓реЗрдпрд░ 7 рд░рд┐рдЯреНрд░реАрдЬ" рдореЛрдбрд╕рд╛рдареА рд╕рдорд░реНрдерди рдЬреЛрдбрд▓реЗ рдЖрд╣реЗ, рдЬреЗ рддреБрдореНрд╣рд╛рд▓рд╛ рд╕реЙрдлреНрдЯрд╡реЗрдЕрд░ рдЕрдпрд╢рд╕реНрд╡реА рдЭрд╛рд▓реНрдпрд╛рд╕ рд╡рд╛рд░рдВрд╡рд╛рд░ HTTP рд╡рд┐рдирдВрддреНрдпрд╛ рдкрд╛рдард╡рд┐рдгреНрдпрд╛рд╕ рдЕрдиреБрдорддреА рджреЗрддреЗ рдЬреЗ рдиреЗрдЯрд╡рд░реНрдХ рдХрдиреЗрдХреНрд╢рди рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдгреНрдпрд╛рдд рд╕рдорд╕реНрдпрд╛рдВрд╢реА рд╕рдВрдмрдВрдзрд┐рдд рдирд╛рд╣реАрдд (рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, рдкреНрд░рддрд┐рд╕рд╛рдж рдирд╕рд▓реНрдпрд╛рд╕ рдХрд┐рдВрд╡рд╛ рд░рд┐рдХреНрдд рдкреНрд░рддрд┐рд╕рд╛рдж рдЕрд╕рд▓реНрдпрд╛рд╕. рдкреЛрд╕реНрдЯ рд╡рд┐рдирдВрддреА). рдореЛрдб рдЕрдХреНрд╖рдо рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА, "рдЕрдХреНрд╖рдо-l7-рдкреБрдиреНрд╣рд╛ рдкреНрд░рдпрддреНрди" рдзреНрд╡рдЬ "http-рд╡рд┐рдирдВрддреА" рдкрд░реНрдпрд╛рдпрд╛рдордзреНрдпреЗ рдЬреЛрдбрд▓рд╛ рдЧреЗрд▓рд╛ рдЖрд╣реЗ, рдЖрдгрд┐ "рдкреБрдиреНрд╣рд╛ рдкреНрд░рдпрддреНрди-рдСрди" рдкрд░реНрдпрд╛рдп рдбреАрдлреЙрд▓реНрдЯ, рдРрдХрд╛ рдЖрдгрд┐ рдмреЕрдХрдПрдВрдб рд╡рд┐рднрд╛рдЧрд╛рдВрдордзреНрдпреЗ рдлрд╛рдЗрди-рдЯреНрдпреВрдирд┐рдВрдЧрд╕рд╛рдареА рдЬреЛрдбрд▓рд╛ рдЧреЗрд▓рд╛ рдЖрд╣реЗ. рдЦрд╛рд▓реАрд▓ рдЪрд┐рдиреНрд╣реЗ рдкреБрдиреНрд╣рд╛ рдкрд╛рдард╡рдгреНрдпрд╛рд╕рд╛рдареА рдЙрдкрд▓рдмреНрдз рдЖрд╣реЗрдд: рд╕рд░реНрд╡-рдкреБрдиреНрд╣рд╛ рдкреНрд░рдпрддреНрди рдХрд░рдгреНрдпрд╛рдпреЛрдЧреНрдп-рддреНрд░реБрдЯреА, рдХрд╛рд╣реАрд╣реА рдирд╛рд╣реА, conn-failure, empty-response, junk-response, response-timeout, 0rtt-рдирд╛рдХрд╛рд░рд▓реЗрд▓реЗ, рддрд╕реЗрдЪ рд╕реНрдЯреЗрдЯрд╕ рдХреЛрдб рдкрд░рдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдмрдВрдзрдирдХрд╛рд░рдХ (404, рдЗ.) ;
  • рдПрдХ рдирд╡реАрди рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ рд▓рд╛рдЧреВ рдХрд░рдгреНрдпрд╛рдд рдЖрд▓рд╛ рдЖрд╣реЗ, рдЬреЛ рддреБрдореНрд╣рд╛рд▓рд╛ HAProxy рд╕рд╛рдареА рд╣рдБрдбрд▓рд░реНрд╕рд╕рд╣ рдмрд╛рд╣реНрдп рдПрдХреНрдЭрд┐рдХреНрдпреБрдЯреЗрдмрд▓ рдлрд╛рдЗрд▓реНрд╕ рдХреЙрд▓рд┐рдВрдЧ рдХреЙрдиреНрдлрд┐рдЧрд░ рдХрд░рдгреНрдпрд╛рд╕ рдЕрдиреБрдорддреА рджреЗрддреЛ.
    рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, рдбреЗрдЯрд╛ рдкреНрд▓реЕрди API (/usr/sbin/dataplaneapi), рддрд╕реЗрдЪ рд╡рд┐рд╡рд┐рдз рдСрдлрд▓реЛрдб рд╕реНрдЯреНрд░реАрдо рдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рдЗрдВрдЬрд┐рди, рдЕрд╢рд╛ рдмрд╛рд╣реНрдп рд╣рдБрдбрд▓рд░рдЪреНрдпрд╛ рд░реВрдкрд╛рдд рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХреЗрд▓реЗ рдЬрд╛рддрд╛рдд;

  • SPOE (рд╕реНрдЯреНрд░реАрдо рдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рдСрдлрд▓реЛрдб рдЗрдВрдЬрд┐рди) рдЖрдгрд┐ SPOP (рд╕реНрдЯреНрд░реАрдо рдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рдСрдлрд▓реЛрдб рдкреНрд░реЛрдЯреЛрдХреЙрд▓) рд╡рд┐рд╕реНрддрд╛рд░ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА .NET Core, Go, Lua рдЖрдгрд┐ Python рд╕рд╛рдареА рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рдЬреЛрдбрд▓реЗ рдЧреЗрд▓реЗ рдЖрд╣реЗрдд. рдкреВрд░реНрд╡реА, рд╡рд┐рд╕реНрддрд╛рд░ рд╡рд┐рдХрд╛рд╕ рдХреЗрд╡рд│ C рдордзреНрдпреЗ рд╕рдорд░реНрдерд┐рдд рд╣реЛрддрд╛;
  • рд╡реЗрдЧрд│реНрдпрд╛ рд╕рд░реНрд╡реНрд╣рд░рд╡рд░ рдорд┐рд░рд░рд┐рдВрдЧ рд╡рд┐рдирдВрддреНрдпрд╛рдВрд╕рд╛рдареА рдмрд╛рд╣реНрдп рд╕реНрдкреЛрдЖ-рдорд┐рд░рд░ рд╣рдБрдбрд▓рд░ (/usr/sbin/spoa-mirror) рдЬреЛрдбрд▓реЗ (рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд▓реЛрдб рдЕрдВрддрд░реНрдЧрдд рдкреНрд░рд╛рдпреЛрдЧрд┐рдХ рд╡рд╛рддрд╛рд╡рд░рдгрд╛рдЪреА рдЪрд╛рдЪрдгреА рдШреЗрдгреНрдпрд╛рд╕рд╛рдареА рдЙрддреНрдкрд╛рджрди рд░рд╣рджрд╛рд░реАрдЪрд╛ рднрд╛рдЧ рдХреЙрдкреА рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА);
  • рд╕рд╛рджрд░ рдХрд░рдгрд╛рд░рд╛ HAProxy Kubernetes рдкреНрд░рд╡реЗрд╢ рдирд┐рдпрдВрддреНрд░рдХ рдХреБрдмрд░реНрдиреЗрдЯреНрд╕ рдкреНрд▓реЕрдЯрдлреЙрд░реНрдорд╕рд╣ рдПрдХрддреНрд░реАрдХрд░рдг рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА;
  • рдореЙрдирд┐рдЯрд░рд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдордордзреНрдпреЗ рдЖрдХрдбреЗрд╡рд╛рд░реА рдирд┐рд░реНрдпрд╛рдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдЕрдВрдЧрднреВрдд рд╕рдорд░реНрдерди рдЬреЛрдбрд▓реЗ Prometheus;
  • рдкреАрдЕрд░ рдкреНрд░реЛрдЯреЛрдХреЙрд▓, HAProxy рдЪрд╛рд▓рд╡рдгрд╛рд▒реНрдпрд╛ рдЗрддрд░ рдиреЛрдбреНрд╕рд╕рд╣ рдорд╛рд╣рд┐рддреАрдЪреА рджреЗрд╡рд╛рдгрдШреЗрд╡рд╛рдг рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рд╡рд╛рдкрд░рд▓рд╛ рдЬрд╛рддреЛ, рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рдХрд░рдгреНрдпрд╛рдд рдЖрд▓рд╛ рдЖрд╣реЗ. рд╣рд╛рд░реНрдЯрдмреАрдЯ рдЖрдгрд┐ рдПрдирдХреНрд░рд┐рдкреНрдЯреЗрдб рдбреЗрдЯрд╛ рдЯреНрд░рд╛рдиреНрд╕рдорд┐рд╢рдирд╕рд╛рдареА рдЕрддрд┐рд░рд┐рдХреНрдд рд╕рдорд░реНрдерди рд╕рдорд╛рд╡рд┐рд╖реНрдЯ рдХрд░рдгреЗ;
  • "рд▓реЙрдЧ" рдирд┐рд░реНрджреЗрд╢рд╛рдордзреНрдпреЗ "рдирдореБрдирд╛" рдкреЕрд░рд╛рдореАрдЯрд░ рдЬреЛрдбрд▓рд╛ рдЧреЗрд▓рд╛ рдЖрд╣реЗ, рдЬреЛ рддреБрдореНрд╣рд╛рд▓рд╛ рд╡рд┐рдирдВрддреНрдпрд╛рдВрдЪрд╛ рдлрдХреНрдд рдХрд╛рд╣реА рднрд╛рдЧ рд▓реЙрдЧрдордзреНрдпреЗ рдЯрд╛рдХрдгреНрдпрд╛рдЪреА рдкрд░рд╡рд╛рдирдЧреА рджреЗрддреЛ, рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде 1 рдкреИрдХреА 10, рд╡рд┐рд╢реНрд▓реЗрд╖рдгрд╛рддреНрдордХ рдирдореБрдирд╛ рддрдпрд╛рд░ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА;
  • рд╕реНрд╡рдпрдВрдЪрд▓рд┐рдд рдкреНрд░реЛрдлрд╛рдЗрд▓рд┐рдВрдЧ рдореЛрдб рдЬреЛрдбрд▓рд╛ (profiling.tasks рдирд┐рд░реНрджреЗрд╢, рдЬреЗ рдореВрд▓реНрдпреЗ рд╕реНрд╡рдпрдВ, рдЪрд╛рд▓реВ рдЖрдгрд┐ рдмрдВрдж рдХрд░реВ рд╢рдХрддрд╛рдд). рд╕рд░рд╛рд╕рд░реА рд╡рд┐рд▓рдВрдм 1000 ms рдкреЗрдХреНрд╖рд╛ рдЬрд╛рд╕реНрдд рдЕрд╕рд▓реНрдпрд╛рд╕ рд╕реНрд╡рдпрдВрдЪрд▓рд┐рдд рдкреНрд░реЛрдлрд╛рдЗрд▓рд┐рдВрдЧ рд╕рдХреНрд╖рдо рдХреЗрд▓реЗ рдЬрд╛рддреЗ. рдкреНрд░реЛрдлрд╛рдЗрд▓рд┐рдВрдЧ рдбреЗрдЯрд╛ рдкрд╛рд╣рдгреНрдпрд╛рд╕рд╛рдареА, "рд╢реЛ рдкреНрд░реЛрдлрд╛рдЗрд▓рд┐рдВрдЧ" рдХрдорд╛рдВрдб рд░рдирдЯрд╛рдЗрдо API рдордзреНрдпреЗ рдЬреЛрдбрд▓реА рдЧреЗрд▓реА рдЖрд╣реЗ рдХрд┐рдВрд╡рд╛ рд▓реЙрдЧрдордзреНрдпреЗ рдЖрдХрдбреЗрд╡рд╛рд░реА рд░реАрд╕реЗрдЯ рдХрд░рдгреЗ рд╢рдХреНрдп рдЖрд╣реЗ;
  • SOCKS4 рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рд╡рд╛рдкрд░реВрди рдмреЕрдХрдПрдВрдб рд╕рд░реНрд╡реНрд╣рд░рдордзреНрдпреЗ рдкреНрд░рд╡реЗрд╢ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рд╕рдорд░реНрдерди рдЬреЛрдбрд▓реЗ;
  • TCP рдХрдиреЗрдХреНрд╢рдиреНрд╕ (TFO - TCP рдлрд╛рд╕реНрдЯ рдУрдкрди, RFC 7413) рддреНрд╡рд░реАрдд рдЙрдШрдбрдгреНрдпрд╛рдЪреНрдпрд╛ рдпрдВрддреНрд░рдгреЗрд╕рд╛рдареА рдПрдВрдб-рдЯреВ-рдПрдВрдб рд╕рдкреЛрд░реНрдЯ рдЬреЛрдбрд▓рд╛ рдЖрд╣реЗ, рдЬреЛ рддреБрдореНрд╣рд╛рд▓рд╛ рдкрд╣рд┐рд▓реНрдпрд╛ рд╡рд┐рдирдВрддреАрд▓рд╛ рдЖрдгрд┐ рджреБрд╕рд░реНтАНрдпрд╛ рдЪрд░рдгрд╛рдд рдПрдХрддреНрд░ рдХрд░реВрди рдХрдиреЗрдХреНрд╢рди рд╕реЗрдЯрдЕрдк рдЪрд░рдгрд╛рдВрдЪреА рд╕рдВрдЦреНрдпрд╛ рдХрдореА рдХрд░рдгреНрдпрд╛рд╕ рдЕрдиреБрдорддреА рджреЗрддреЛ. рдХреНрд▓рд╛рд╕рд┐рдХ 3-рдЪрд░рдг рдХрдиреЗрдХреНрд╢рди рд╡рд╛рдЯрд╛рдШрд╛рдЯреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдЖрдгрд┐ рдХрдиреЗрдХреНрд╢рди рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдгреНрдпрд╛рдЪреНрдпрд╛ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдЯрдкреНрдкреНрдпрд╛рд╡рд░ рдбреЗрдЯрд╛ рдкрд╛рдард╡рдгреЗ рд╢рдХреНрдп рдХрд░рддреЗ;
  • рдирд╡реАрди рдХреНрд░рд┐рдпрд╛ рдЬреЛрдбрд▓реНрдпрд╛:
    • рд░реЗрдЧреНрдпреБрд▓рд░ рдПрдХреНрд╕рдкреНрд░реЗрд╢рди рд╡рд╛рдкрд░реВрди URL рдмрджрд▓рдгреНрдпрд╛рд╕рд╛рдареА "http-request replace-uri";
    • рд╣реЛрд╕реНрдЯрдирд╛рд╡ рд╕реЛрдбрд╡рдгреНрдпрд╛рд╕рд╛рдареА тАЬtcp-request content do-resolveтАЭ рдЖрдгрд┐ тАЬhttp-request do-resolveтАЭ;
    • рд▓рдХреНрд╖реНрдп IP рдкрддреНрддрд╛ рдЖрдгрд┐ рдкреЛрд░реНрдЯ рдмрджрд▓рдгреНрдпрд╛рд╕рд╛рдареА тАЬtcp-request content set-dstтАЭ рдЖрдгрд┐ тАЬtcp-request content set-dst-portтАЭ.
  • рдирд╡реАрди рд░реВрдкрд╛рдВрддрд░рдг рдореЙрдбреНрдпреВрд▓ рдЬреЛрдбрд▓реЗ:
    • AES128-GCM, AES192-GCM рдЖрдгрд┐ AES256-GCM рдЕрд▓реНрдЧреЛрд░рд┐рджрдо рд╡рд╛рдкрд░реВрди рдкреНрд░рд╡рд╛рд╣ рдбрд┐рдХреНрд░рд┐рдкреНрдЯ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА aes_gcm_dev;
    • Protobuf Protocol Buffers рд╕рдВрджреЗрд╢рд╛рдВрдордзреВрди рдлреАрд▓реНрдб рдХрд╛рдврдгреНрдпрд╛рд╕рд╛рдареА;
    • ungrpc рдЬреАрдЖрд░рдкреАрд╕реА рд╕рдВрджреЗрд╢рд╛рдВрдордзреВрди рдлреАрд▓реНрдб рдХрд╛рдврдгреНрдпрд╛рд╕рд╛рдареА.

    рд╕реНрддреНрд░реЛрдд: opennet.ru

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдЬреЛрдбрд╛