Fa'asa'olotoina o le paleni HTTP/TCP HAProxy 2.0

lomia faasalalau fa'amalologa paleni uta HA Proxy 2.0, lea e mafai ai ona e tufatufaina atu fefaʻatauaʻiga HTTP ma talosaga TCP faʻapitoa i le va o se vaega o 'auʻaunaga, ma amanaʻia le tele o mea (mo se faʻataʻitaʻiga, e siaki le avanoa o 'auʻaunaga, iloilo le maualuga o le uta, e iai DDoS countermeasures) ma faʻatautaia le faʻauluina o faʻamaumauga muamua ( mo se faʻataʻitaʻiga, e mafai ona e faʻavasegaina ulutala HTTP, faʻamama faʻasalalau faʻasologa o fesili le saʻo, poloka SQL ma XSS suitulaga, faʻafesoʻotaʻi sui o mea e gaosia). E mafai foi e HAProxy talosaga e fa'amaopoopo le feso'ota'iga o vaega i faiga fa'avae ile fa'ata'ita'iga a microservices. O le tulafono ole poloketi o loʻo tusia ile C ma sapalai laiseneina ile GPLv2. O loʻo faʻaaogaina le poloketi i luga o le tele o nofoaga tetele, e aofia ai Airbnb, Alibaba, GitHub, Imgur, Instagram, Reddit, StackOverflow, Tumblr, Twitter ma Vimeo.

Fa'aaliga fa'alauiloa autu:

  • API fou fa'alauiloa Fuafuaga Faʻamatalaga, lea e mafai ai e oe ona pulea le HAProxy i luga o le lele e ala ile REST Web API. E aofia ai, e mafai ona e faʻaopoopoina faʻamalosi ma aveese faʻauluuluga ma 'auʻaunaga, fatuina ACLs, suia le faʻaogaina o talosaga, suia faʻamau faʻamau i IP;
  • Faʻaopoopo le faʻatonuga o le nbthread, lea e mafai ai e oe ona faʻatulagaina le numera o filo o loʻo faʻaaogaina i le HAProxy e faʻamalieina ai le faʻatinoga i luga o le tele-core CPUs. Ona o le faaletonu, o le numera o filo a tagata faigaluega e filifilia e faalagolago i le CPU cores o loʻo maua i le siosiomaga o loʻo i ai nei, ma i totonu o siosiomaga o le ao o le faaletonu o le tasi filo. Ina ia setiina tapulaʻa faigata, faʻapipiʻi filifiliga MAX_THREADS ma MAX_PROCS, faʻatapulaʻaina le tapulaʻa pito i luga i le numera o filo ma faiga;
  • Ua fa'afaigofie le fa'aogaina o le fa'atonuga mo le fa'apipi'iina o tagata e fa'asoa i tuatusi feso'ota'iga. Pe a faʻatulagaina, e le o toe manaʻomia le faʻamalamalamaina o faʻasologa o gaioiga - e ala i le le mafai, o fesoʻotaʻiga o le a tufatufaina i filo e faʻatatau i le numera o fesoʻotaʻiga malosi.
  • O le setiina o ogalaau pe a taʻavale i totonu o pusa tuʻufua ua faʻafaigofie - o le ogalaau e mafai nei ona lafo i stdout ma stderr, faʻapea foʻi ma soʻo se faila faila (mo se faʻataʻitaʻiga, "log fd@1 local0");
  • Lagolago mo le HTX (Native HTTP Representation) e mafai ona o le faaletonu, e mafai ai ona faapaleni pe a faʻaogaina foliga faʻapitoa e pei ole pito i luga ole HTTP/2, Layer 7 Retries ma le gRPC. E le suitulaga e le HTX ia ulutala i le nofoaga, ae faʻaitiitia le faʻaogaina o le gaioiga e aveese ma faʻaopoopo se ulutala fou i le pito o le lisi, lea e mafai ai ona e faʻaogaina soʻo se faʻalautelega o le HTTP protocol, faʻasaoina le uluai semantics o ulutala ma faʻatagaina oe. ia ausia le maualuga o le faatinoga pe a faaliliu HTTP/2 i le HTTP/1.1 ma le isi itu;
  • Faʻaopoopoina le lagolago aloaʻia mo le End-to-End HTTP/2 mode (faʻagasologa o laʻasaga uma ile HTTP/2, e aofia ai valaʻau ile pito i tua, ae le naʻo fegalegaleaiga i le va o le sui ma le kalani);
  • O le lagolago atoa mo le suitulaga e lua o le gRPC protocol ua faʻatinoina ma le mafai ona faʻasalalau vaitafe gRPC, faʻamaonia feʻau taʻitasi, faʻaalia le gRPC feʻaveaʻi i totonu o le ogalaau ma le faʻamamaina o feʻau e faʻaaoga ai ACLs. gRPC faʻatagaina oe e faʻatulagaina le galuega a microservices i gagana eseese polokalame e fegalegaleai le tasi ma le isi e faʻaaoga ai se API lautele. Feso'ota'iga feso'ota'iga i le gRPC o lo'o fa'atinoina ile pito i luga ole HTTP/2 protocol ma fa'avae ile fa'aogaina ole Protocol Buffers mo fa'amaumauga fa'amaumauga.
  • Faʻaopoopoina le lagolago mo le "Layer 7 Retries" mode, lea e mafai ai e oe ona tuʻuina atu talosaga HTTP toe fai pe a faʻaletonu le polokalama e le fesoʻotaʻi ma faʻafitauli e faʻavaeina ai se fesoʻotaʻiga fesoʻotaʻiga (mo se faʻataʻitaʻiga, pe a leai se tali poʻo se tali gaogao i se POST talosaga). Ina ia faʻamalo le faiga, o le "disable-l7-retry" fuʻa ua faʻaopoopoina i le "http-request" filifiliga, ma le "toe taumafai-i" ua faʻaopoopoina mo le faʻaleleia lelei i le faaletonu, faʻalogo ma le pito i tua vaega. O faʻailoga nei o loʻo avanoa mo le toe lafo atu: mea uma e toe faʻataʻitaʻia-mea sese, leai, conn-failure, gaogao-tali, junk-tali, tali-taimi, 0rtt-teena, faʻapea foʻi ma le fusia e toe faʻafoʻi tulaga code (404, ma isi) ;
  • Ua faʻatinoina se pule faʻagasologa fou, lea e mafai ai e oe ona faʻatulagaina le valaʻau i fafo faila faila faʻatasi ma tagata e faʻaaogaina mo HAProxy.
    Mo se faʻataʻitaʻiga, o le Data Plan API (/usr/sbin/dataplaneapi), faʻapea foʻi ma le tele o masini faʻaogaina o le Offload stream, o loʻo faʻatinoina i le tulaga o sea faʻatau fafo;

  • Ua fa'aopoopoina fusi mo le .NET Core, Go, Lua ma le Python mo le atina'eina o SPOE (Stream Processing Offload Engine) ma SPOP (Stream Processing Offload Protocol). I le taimi muamua, sa lagolagoina na'o le C;
  • Faʻaopoopoina se faʻataʻitaʻiga fafo spoa-mirror handler (/ usr / sbin / spoa-mirror) mo talosaga faʻata i se isi server (mo se faʻataʻitaʻiga, mo le kopiina o se vaega o le gaosiga o fefaʻatauaiga mo le suʻeina o se siosiomaga faʻataʻitaʻi i lalo o se uta moni);
  • Fa'ailoa HAProxy Kubernetes Ingress Pule ia faʻamautinoa le tuʻufaʻatasia ma le Kubernetes platform;
  • Fa'aopoopoina le lagolago fa'apipi'i mo le fa'atauina atu o fuainumera i le faiga mata'ituina Prometheus;
  • O le Peers Protocol, na fa'aaogaina e fesuia'i fa'amatalaga ma isi nodes o lo'o fa'aogaina HAProxy, ua fa'alautele. E aofia ai le lagolago faʻaopoopo mo le Heartbeat ma faʻailoga faʻamatalaga faʻamatalaga;
  • O le "faʻataʻitaʻiga" parakalafa ua faʻaopoopoina i le "log" faʻatonuga, lea e mafai ai ona e lafoina naʻo se vaega o talosaga i totonu o le ogalaau, mo se faʻataʻitaʻiga 1 mai le 10, e fai ai se faʻataʻitaʻiga suʻesuʻe;
  • Faʻaopoopo le faʻaogaina faʻapitoa (profiling.tasks faʻatonuga, lea e mafai ona ave le tau faʻatau, luga ma tape). E mafai ona fa'asalalau fa'aautometi pe a sili atu le umi ole 1000 ms. Ina ia va'ai fa'amatalaga fa'amatalaga, ua fa'aopoopoina le fa'atonuga o le "fa'aali fa'amatalaga" i le Runtime API pe mafai fo'i ona toe fa'atulaga fuainumera i le ogalaau;
  • Faʻaopoopoina le lagolago mo le faʻaogaina o 'auʻaunaga pito i tua e faʻaaoga ai le SOCKS4 protocol;
  • Faʻaopoopoina le lagolago pito i luga mo le masini mo le vave tatalaina o fesoʻotaʻiga TCP (TFO - TCP Fast Open, RFC 7413), lea e mafai ai e oe ona faʻaitiitia le numera o laasaga o fesoʻotaʻiga e ala i le tuʻufaʻatasia o le muamua i le tasi talosaga ma le laasaga lona lua o le faʻagasologa masani 3-laasaga fesoʻotaʻiga faʻatalanoaga ma mafai ai ona tuʻuina atu faʻamatalaga i le amataga o le faʻavaeina o se fesoʻotaʻiga;
  • Fa'aopoopo gaioiga fou:
    • "http-request replace-uri" e sui ai le URL e fa'aaoga ai se fa'amatalaga masani;
    • "tcp-request content do-resolve" ma le "http-request do-resolve" mo le foia o le igoa talimalo;
    • "tcp-request content set-dst" ma le "tcp-request content set-dst-port" e suitulaga i le tuatusi IP ma le taulaga.
  • Fa'aopoopo suiga fou modules:
    • aes_gcm_dev mo le tapeina o vaitafe e faʻaaoga ai AES128-GCM, AES192-GCM ma AES256-GCM algorithms;
    • protobuf e aveese mai ai fanua mai fe'au Fa'apolokalame
    • ungrpc e aveese mai fanua mai feau gRPC.

    puna: opennet.ru

Faaopoopo i ai se faamatalaga