Rilis pengimbang HTTP/TCP HAProxy 2.0

diterbitake release load balancer Proksi HA 2.0, sing ngidini sampeyan nyebarake lalu lintas HTTP lan panjaluk TCP sing sewenang-wenang ing antarane klompok server, kanthi njupuk akeh faktor (contone, mriksa kasedhiyan server, ngevaluasi tingkat beban, duwe DDoS countermeasures) lan nindakake panyaring data utami ( contone,, sampeyan bisa parse header HTTP, transmisi Filter parameter query salah, pemblokiran SQL lan XSS substitusi, nyambung agen Processing isi). HAProxy uga bisa nglamar kanggo koordinasi interaksi komponen ing sistem adhedhasar arsitektur microservices. Kode project ditulis ing C lan diwenehake dilisensi ing GPLv2. Proyek iki digunakake ing akeh situs gedhe, kalebu Airbnb, Alibaba, GitHub, Imgur, Instagram, Reddit, StackOverflow, Tumblr, Twitter lan Vimeo.

Fitur release utama:

  • API anyar ngenalaken Rencana Data, sing ngidini sampeyan ngatur setelan HAProxy kanthi cepet liwat API Web REST. Kalebu, sampeyan bisa mbosenke nambah lan mbusak backends lan server, nggawe ACLs, ngganti nuntun request, ngganti bindings handler kanggo IP;
  • Nambahake arahan nbthread, sing ngidini sampeyan ngatur jumlah benang sing digunakake ing HAProxy kanggo ngoptimalake kinerja ing CPU multi-inti. Kanthi gawan, jumlah utas buruh dipilih gumantung saka inti CPU sing kasedhiya ing lingkungan saiki, lan ing lingkungan maya, standar yaiku siji utas. Kanggo nyetel watesan hard, opsi perakitan MAX_THREADS lan MAX_PROCS wis ditambahake, matesi watesan ndhuwur ing nomer Utas lan pangolahan;
  • Panggunaan arahan ikatan kanggo pawang naleni menyang alamat jaringan wis disederhanakake. Nalika nyetel, ora perlu maneh nemtokake paramΓ¨ter proses - kanthi standar, sambungan bakal disebarake ing antarane benang gumantung saka jumlah sambungan sing aktif.
  • Nyetel log nalika mlaku ing wadhah sing diisolasi wis disederhanakake - log saiki bisa dikirim menyang stdout lan stderr, uga menyang deskriptor file sing ana (contone, "log fd@1 local0");
  • Dhukungan kanggo HTX (Native HTTP Representation) diaktifake kanthi gawan, ngidini kanggo ngimbangi nalika nggunakake fitur canggih kayata end-to-end HTTP/2, Layer 7 Retry lan gRPC. HTX ora ngganti header ing panggonan, nanging nyuda operasi modifikasi kanggo mbusak lan nambah header anyar menyang mburi dhaftar, sing ngijini sampeyan kanggo ngapusi sembarang varian lengkap saka protokol HTTP, ngreksa semantik asli saka header lan ngijini sampeyan. kanggo entuk kinerja sing luwih dhuwur nalika nerjemahake HTTP / 2 menyang HTTP / 1.1 lan kosok balene;
  • Nambahake dhukungan resmi kanggo mode HTTP / 2 End-to-End (ngolah kabeh tahapan ing HTTP / 2, kalebu telpon menyang backend, lan ora mung interaksi antarane proxy lan klien);
  • Dhukungan lengkap kanggo proksi bidirectional saka protokol gRPC wis dileksanakake kanthi kemampuan kanggo ngurai aliran gRPC, nyorot pesen individu, nggambarake lalu lintas gRPC ing log lan nyaring pesen nggunakake ACL. gRPC ngidini sampeyan ngatur karya microservices ing macem-macem basa program sing sesambungan karo siji liyane nggunakake API universal. Komunikasi jaringan ing gRPC dileksanakake ing ndhuwur protokol HTTP/2 lan adhedhasar panggunaan Protocol Buffers kanggo serialisasi data.
  • Dhukungan ditambahake kanggo mode "Lapisan 7 Coba maneh", sing ngidini sampeyan ngirim panjalukan HTTP sing bola-bali yen ana kegagalan piranti lunak sing ora ana hubungane karo masalah nggawe sambungan jaringan (contone, yen ora ana respon utawa tanggapan kosong kanggo a Panjaluk POST). Kanggo mateni mode, flag "mateni-l7-nyoba maneh" wis ditambahake menyang "http-request" pilihan, lan "nyoba maneh" pilihan wis ditambahake kanggo fine-tuning ing gawan, ngrungokake lan backend bagean. Tandha-tandha ing ngisor iki kasedhiya kanggo kirim maneh: kesalahan kabeh bisa dicoba maneh, ora ana, gagal conn, tanggapan kosong, tanggapan sampah, wektu entek respon, 0rtt-ditolak, uga ngiket kode status bali (404, lsp.) ;
  • A manager proses anyar wis dipun ginakaken, sing ngijini sampeyan kanggo ngatur telpon file eksekusi external karo handler kanggo HAProxy.
    Contone, Data Plan API (/ usr / sbin / dataplaneapi), uga macem-macem mesin pangolahan aliran Offload, dileksanakake ing wangun handler eksternal kasebut;

  • Bindings wis ditambahake kanggo .NET Core, Go, Lua lan Python kanggo ngembangaken SPOE (Stream Processing Offload Engine) lan SPOP (Stream Processing Offload Protocol) ekstensi. Sadurunge, pangembangan extension mung didhukung ing C;
  • Nambahake handler spoa-mirror eksternal (/ usr / sbin / spoa-mirror) kanggo panjalukan kaca menyang server sing kapisah (contone, kanggo nyalin bagean saka lalu lintas produksi kanggo nguji lingkungan eksperimen ing beban nyata);
  • Dipuntepangaken HAProxy Kubernetes Ingress Controller kanggo njamin integrasi karo platform Kubernetes;
  • Ditambahake dhukungan sing dibangun kanggo ngekspor statistik menyang sistem pemantauan Prometheus;
  • Protokol Peers, sing digunakake kanggo ijol-ijolan informasi karo node liyane sing mlaku HAProxy, wis ditambahi. Kalebu dhukungan tambahan kanggo Detak Jantung lan transmisi data sing dienkripsi;
  • Parameter "sampel" wis ditambahake menyang direktif "log", sing ngidini sampeyan mbucal mung bagean saka panjalukan menyang log, contone 1 saka 10, kanggo mbentuk sampel analitis;
  • Nambahake mode profil otomatis (profiling.tasks direktif, sing bisa njupuk nilai otomatis, lan mateni). Profil otomatis diaktifake yen latensi rata-rata ngluwihi 1000 ms. Kanggo ndeleng data profil, printah "show profiling" wis ditambahake menyang Runtime API utawa bisa ngreset statistik menyang log;
  • Dhukungan tambahan kanggo ngakses server backend nggunakake protokol SOCKS4;
  • Ditambahake dhukungan end-to-end kanggo mekanisme kanggo mbukak sambungan TCP kanthi cepet (TFO - TCP Fast Open, RFC 7413), sing ngidini sampeyan nyuda jumlah langkah persiyapan sambungan kanthi nggabungake sing pertama dadi siji panyuwunan lan langkah kapindho proses rembugan sambungan 3-langkah klasik lan ndadekake iku bisa kanggo ngirim data ing tataran dhisikan saka nggawe sambungan;
  • Tindakan anyar ditambahake:
    • "http-request replace-uri" kanggo ngganti URL nggunakake ekspresi biasa;
    • "konten tcp-request do-resolve" lan "http-request do-resolve" kanggo ngrampungake jeneng host;
    • "tcp-request content set-dst" lan "tcp-request content set-dst-port" kanggo ngganti alamat IP target lan port.
  • Ditambahake modul konversi anyar:
    • aes_gcm_dev kanggo decrypting stream nggunakake algoritma AES128-GCM, AES192-GCM lan AES256-GCM;
    • protobuf kanggo ngekstrak kolom saka pesen Protocol Buffers;
    • ungrpc kanggo ngekstrak kolom saka pesen gRPC.

    Source: opennet.ru

Add a comment