Famoahana ny HTTP/TCP balancer HAProxy 2.0

MIVOAKA famotsorana load balancer HA Proxy 2.0, izay ahafahanao mizara ny fifamoivoizana HTTP sy ny fangatahana TCP tsy ara-drariny eo amin'ny vondrona mpizara iray, amin'ny fiheverana ny anton-javatra maro (ohatra, manamarina ny fisian'ny mpizara, manombana ny haavon'ny entana, manana fanoherana DDoS) ary manao sivana data fototra ( ohatra, azonao atao ny manara-maso ny lohatenin'ny HTTP, manivana ny masontsivana fanontaniana diso, manakana ny fanoloana SQL sy XSS, mampifandray ireo mpiasan'ny fanodinana votoaty). Afaka ihany koa ny HAProxy AMPIHARO handrindrana ny fifandraisan'ireo singa ao anaty rafitra mifototra amin'ny maritrano microservices. Ny kaody tetikasa dia voasoratra amin'ny C sy nanome nahazoan-dalana GPLv2. Ny tetikasa dia ampiasaina amin'ny tranokala lehibe maro, anisan'izany ny Airbnb, Alibaba, GitHub, Imgur, Instagram, Reddit, StackOverflow, Tumblr, Twitter ary Vimeo.

Lafin-javatra lehibe famoahana:

  • Nampidirina ny API vaovao Drafitra data, izay ahafahanao mitantana ny fandrindrana HAProxy amin'ny sidina amin'ny alΓ lan'ny REST Web API. Ao anatin'izany, azonao atao ny manampy sy manaisotra ny backends sy ny servers, mamorona ACL, manova ny lΓ lan'ny fangatahana, manova ny fatoran'ny mpitantana amin'ny IP;
  • Nampiana ny torolalana nbthread, izay ahafahanao manitsy ny isan'ny kofehy ampiasaina amin'ny HAProxy mba hanamafisana ny fampisehoana amin'ny CPU marobe. Amin'ny alΓ lan'ny default, ny isan'ny kofehy mpiasa dia voafantina miankina amin'ny cores CPU misy amin'ny tontolo ankehitriny, ary amin'ny tontolo rahona dia kofehy iray ny default. Mba hametrahana fetra henjana dia nampiana safidin'ny fivoriambe MAX_THREADS sy MAX_PROCS, mametra ny fetra ambony amin'ny isan'ny kofehy sy ny dingana;
  • Nohamafisina ny fampiasana ny toromarika mamatotra ho an'ny mpandrindra famatorana amin'ny adiresin'ny tambajotra. Rehefa manangana dia tsy ilaina intsony ny mamaritra ny masontsivana dingana - amin'ny alΓ lan'ny default, ny fifandraisana dia hozaraina amin'ny kofehy arakaraka ny isan'ny fifandraisana mavitrika.
  • Nohamafisina ny fametrahana logs rehefa mandeha amin'ny kaontenera mitoka-monina - ny log dia azo alefa any amin'ny stdout sy stderr, ary koa amin'ny mpamoritra rakitra efa misy (ohatra, "log fd@1 local0");
  • Ny fanohanana ny HTX (Native HTTP Representation) dia alefa amin'ny alΓ lan'ny default, mamela ny fifandanjana rehefa mampiasa endri-javatra mandroso toy ny HTTP/2 farany mankany amin'ny farany, Layer 7 Retries ary gRPC. Ny HTX dia tsy manolo ny lohapejy amin'ny toerany, fa mampihena ny hetsika fanovana amin'ny fanesorana sy fampidirana lohapejy vaovao amin'ny faran'ny lisitra, izay ahafahanao manodinkodina ireo variana miitatra amin'ny protocol HTTP, mitahiry ny semantika voalohany amin'ny lohapejy ary mamela anao mba hahazoana fahombiazana ambony kokoa rehefa mandika ny HTTP/2 amin'ny HTTP/1.1 ary ny mifamadika amin'izany;
  • Nampiana fanohanana ofisialy ho an'ny End-to-End HTTP/2 mode (fikarakarana ny dingana rehetra ao amin'ny HTTP/2, ao anatin'izany ny antso any amin'ny backend, fa tsy ny fifandraisana eo amin'ny proxy sy ny mpanjifa fotsiny);
  • Ny fanohanana feno ho an'ny proxy bidirectional amin'ny protocol gRPC dia nampiharina miaraka amin'ny fahafahana manara-maso ny stream gRPC, manasongadina ny hafatra tsirairay, maneho ny fifamoivoizana gRPC ao amin'ny log ary manivana hafatra mampiasa ACL. Ny gRPC dia ahafahanao mandamina ny asan'ny microservices amin'ny fiteny fandaharana isan-karazany izay mifandray amin'ny tsirairay amin'ny alΓ lan'ny API manerantany. Ny fifandraisana amin'ny tambajotra ao amin'ny gRPC dia ampiharina eo an-tampon'ny protocol HTTP/2 ary mifototra amin'ny fampiasana Protocol Buffers ho an'ny serialization data.
  • Fanohanana fanampiny ho an'ny maody "Layer 7 Retries", izay ahafahanao mandefa fangatahana HTTP miverimberina raha sendra ny tsy fahombiazan'ny rindrambaiko izay tsy misy ifandraisany amin'ny olana amin'ny fametrahana fifandraisana amin'ny tambajotra (ohatra, raha tsy misy valiny na valiny foana amin'ny a POST fangatahana). Mba hanesorana ny maody, ny saina "disable-l7-retry" dia nampiana tamin'ny safidy "http-request", ary ny safidy "retry-on" dia nampiana ho an'ny fanitsiana tsara amin'ny fizarana default, mihaino ary backend. Ireto famantarana manaraka ireto dia azo alefa indray: fahadisoana rehetra azo averina, tsy misy, tsy fahombiazana, valim-bavaka, valim-panontaniana tsy misy dikany, fe-potoana famaliana, 0rtt-nolavina, ary koa famehezana ny kaody momba ny sata (404, sns.) ;
  • Napetraka ny mpitantana ny dingana vaovao, izay ahafahanao manitsy ny fiantsoana ny rakitra azo tanterahana ivelany miaraka amin'ireo mpitantana ny HAProxy.
    Ohatra, ny Data Plan API (/usr/sbin/dataplaneapi), ary koa ny maotera fanodinana stream Offload isan-karazany, dia ampiharina amin'ny endrika mpitantana ivelany toy izany;

  • Nampiana fatorana ho an'ny .NET Core, Go, Lua ary Python amin'ny famolavolana ny fanitarana SPOE (Stream Processing Offload Engine) sy SPOP (Stream Processing Offload Protocol). Teo aloha, ny fampandrosoana ny fanitarana dia notohanana afa-tsy ao amin'ny C;
  • Nampiana mpitantana spoa-mirror ivelany (/usr/sbin/spoa-mirror) ho an'ny fitaratry ny fangatahana amin'ny mpizara mitokana (ohatra, amin'ny fanaovana kopia ny ampahany amin'ny fifamoivoizana famokarana hanaovana fitiliana tontolo iainana andrana amin'ny entana tena izy);
  • nampidirina HAProxy Kubernetes Ingress Controller mba hiantohana ny fidirana amin'ny sehatra Kubernetes;
  • Nampiana fanohanana naorina ho an'ny fanondranana antontan'isa amin'ny rafitra fanaraha-maso Prometheus;
  • Ny Protocol Peers, ampiasaina amin'ny fifanakalozana vaovao amin'ny node hafa mihazakazaka HAProxy, dia nitarina. Ao anatin'izany ny fanohanana fanampiny ho an'ny Heartbeat sy ny fampitana angon-drakitra voatahiry;
  • Ny mari-pamantarana "sample" dia nampiana tao amin'ny torolΓ lana "log", izay ahafahanao manary ampahany amin'ny fangatahana ao anaty log, ohatra 1 amin'ny 10, mba hamoronana santionany analytique;
  • Nampiana fomba fanaovana profiling mandeha ho azy (profiling.tasks directive, izay afaka mitondra ny soatoavina mandeha ho azy, mandeha sy miala). Mihoatra ny 1000 ms ny fametahana automatique raha mihoatra ny XNUMX m Raha hijery ny angon-drakitra momba ny profiling, dia nampiana ny baiko "show profiling" ao amin'ny Runtime API na azo atao ny mamerina ny antontan'isa amin'ny log;
  • Fanampiana fanampiny amin'ny fidirana amin'ireo mpizara backend amin'ny alΓ lan'ny protocol SOCKS4;
  • Nampiana fanohanana farany ho an'ny mekanika fanokafana haingana ny fifandraisana TCP (TFO - TCP Fast Open, RFC 7413), izay ahafahanao mampihena ny isan'ny dingana fananganana fifandraisana amin'ny fampifangaroana ny voalohany ho fangatahana iray sy ny dingana faharoa amin'ny ny fomba fifampiraharahana 3-dingana mahazatra ary ahafahana mandefa data amin'ny dingana voalohany amin'ny fananganana fifandraisana;
  • Hetsika vaovao nampiana:
    • "http-request replace-uri" hanoloana ny URL mampiasa fomba fiteny mahazatra;
    • "tcp-request content do-resolve" sy "http-request do-resolve" amin'ny famahana ny anaran'ny mpampiantrano;
    • "tcp-request content set-dst" sy "tcp-request content set-dst-port" hanoloana ny adiresy IP sy seranan-tsambo.
  • Nampiana modules fiovam-po vaovao:
    • aes_gcm_dev amin'ny famongorana ny riaka mampiasa algorithm AES128-GCM, AES192-GCM ary AES256-GCM;
    • protobuf hanesorana saha avy amin'ny hafatra Protocol Buffers;
    • ungrpc hanesorana saha avy amin'ny hafatra gRPC.

    Source: opennet.ru

Add a comment