Ngaleupaskeun pangimbang HTTP/TCP HAProxy 2.0

diterbitkeun beban balancer release HA Proxy 2.0, nu ngidinan Anjeun pikeun ngadistribusikaeun lalulintas HTTP na requests TCP sawenang antara grup server, nyokot kana akun sababaraha faktor (contona, éta mariksa kasadiaan server, assesses tingkat beban, boga countermeasures DDoS) jeung ngalaksanakeun nyaring data primér ( contona, anjeun tiasa parse headers HTTP, transmisi filter parameter query lepat, block SQL jeung substitusi XSS, nyambungkeun agén processing eusi). HAProxy ogé tiasa ngalamar pikeun koordinat interaksi komponén dina sistem dumasar kana arsitéktur microservices. Kode proyék ditulis dina C jeung dibekelan dilisensikeun dina GPLv2. Proyék ieu dianggo dina seueur situs ageung, kalebet Airbnb, Alibaba, GitHub, Imgur, Instagram, Reddit, StackOverflow, Tumblr, Twitter sareng Vimeo.

Fitur release konci:

  • API anyar diwanohkeun Rencana Data, nu ngidinan Anjeun pikeun ngatur setelan HAProxy on laleur via REST Web API. Kaasup, anjeun dinamis bisa nambahkeun jeung cabut backends na server, nyieun ACLs, ngarobah pamundut routing, ngarobah bindings Handler ka IP;
  • Ditambahkeun diréktif nbthread, nu ngidinan Anjeun pikeun ngonpigurasikeun jumlah threads dipaké dina HAProxy pikeun ngaoptimalkeun kinerja on CPUs multi-core. Sacara standar, jumlah benang pagawe dipilih gumantung kana inti CPU anu aya di lingkungan ayeuna, sareng di lingkungan awan standarna nyaéta hiji benang. Pikeun nyetel wates teuas, pilihan assembly MAX_THREADS na MAX_PROCS geus ditambahkeun, ngawatesan wates luhur dina jumlah threads jeung prosés;
  • Pamakéan diréktif mengikat pikeun pawang mengikat ka alamat jaringan geus disederhanakeun. Nalika netepkeun, henteu deui kedah netepkeun parameter prosés - sacara standar, sambungan bakal disebarkeun diantara benang gumantung kana jumlah sambungan aktip.
  • Nyetél log nalika ngajalankeun dina peti terasing parantos disederhanakeun - log ayeuna tiasa dikirim ka stdout sareng stderr, ogé ka deskriptor file anu tos aya (contona, "log fd@1 local0");
  • Rojongan pikeun HTX (Perwakilan HTTP Asli) diaktipkeun sacara standar, ngamungkinkeun pikeun ngimbangan nalika nganggo fitur canggih sapertos HTTP tungtung-to-tungtung / 2, Lapisan 7 Retries sareng gRPC. HTX henteu ngagentos header dina tempatna, tapi ngirangan operasi modifikasi pikeun ngahapus sareng nambihan header énggal ka tungtung daptar, anu ngamungkinkeun anjeun pikeun ngamanipulasi varian anu diperpanjang tina protokol HTTP, ngajaga semantik asli tina lulugu sareng ngamungkinkeun anjeun pikeun ngahontal prestasi anu langkung luhur nalika narjamahkeun HTTP / 2 ka HTTP / 1.1 sareng sabalikna;
  • Ditambahkeun dukungan resmi pikeun modeu End-to-End HTTP / 2 (ngolah sadaya tahapan dina HTTP / 2, kalebet telepon ka tukang, sanés ngan ukur interaksi antara proxy sareng klien);
  • Pangrojong pinuh pikeun proksi dua arah tina protokol gRPC parantos dilaksanakeun kalayan kamampuan pikeun nga-parse aliran gRPC, nyorot pesen individu, ngagambarkeun lalu lintas gRPC dina log sareng nyaring pesen nganggo ACL. gRPC ngamungkinkeun anjeun pikeun ngatur karya microservices dina sababaraha basa program anu saling berinteraksi nganggo API universal. Komunikasi jaringan di gRPC dilaksanakeun dina luhureun protokol HTTP / 2 sarta dumasar kana pamakéan Protocol Buffers pikeun serialization data.
  • Ditambahkeun dukungan pikeun mode "Lapisan 7 Retries", anu ngamungkinkeun anjeun ngirim pamundut HTTP anu diulang upami aya kagagalan parangkat lunak anu henteu aya hubunganana sareng masalah dina nyieun sambungan jaringan (contona, upami teu aya réspon atanapi réspon kosong ka a pamundut POST). Pikeun nganonaktipkeun mode, bendera "nonaktipkeun-l7-coba deui" geus ditambahkeun kana pilihan "http-request", sarta pilihan "coba deui-on" geus ditambahkeun pikeun fine-tuning dina standar, ngadangukeun na backend bagian. Tanda-tanda di handap ieu sayogi pikeun ngirimkeun deui: kasalahan sadayana tiasa dicoba deui, teu aya, gagal-gagal, réspon kosong, réspon sampah, réspon-waktos, 0rtt-ditampik, ogé ngariung pikeun ngabalikeun kode status (404, jsb.) ;
  • A manajer prosés anyar geus dilaksanakeun, nu ngidinan Anjeun pikeun ngonpigurasikeun nelepon file laksana éksternal kalawan pawang pikeun HAProxy.
    Contona, Data Plan API (/ usr / sbin / dataplaneapi), kitu ogé rupa-rupa mesin ngolah aliran Offload, dilaksanakeun dina bentuk Handler éksternal sapertos;

  • Bindings geus ditambahkeun pikeun .NET Core, Go, Lua jeung Python pikeun ngembangkeun SPOE (Stream Processing Offload Engine) jeung SPOP (Protocol Processing Offload Stream) ekstensi. Saméméhna, ngembangkeun extension ngan dirojong dina C;
  • Ditambahkeun hiji Handler spoa-mirror éksternal (/ usr / sbin / spoa-mirror) pikeun requests mirroring ka server misah (Contona, pikeun nyalin bagian tina lalulintas produksi pikeun nguji hiji lingkungan eksperimen dina beban nyata);
  • Diwanohkeun HAProxy Kubernetes Ingress Controller pikeun mastikeun integrasi sareng platform Kubernetes;
  • Ditambahkeun dukungan anu diwangun pikeun ngékspor statistik kana sistem ngawaskeun Prometheus;
  • Protokol Peers, anu dianggo pikeun tukeur inpormasi sareng titik-titik sanés anu ngajalankeun HAProxy, parantos diperpanjang. Kaasup dukungan tambihan pikeun Detak Jantung sareng pangiriman data énkripsi;
  • Parameter "sampel" geus ditambahkeun kana diréktif "log", nu ngidinan Anjeun pikeun dump ukur bagian tina requests kana log, contona 1 kaluar 10, pikeun ngabentuk sampel analitik;
  • Ditambahkeun mode profil otomatis (profiling.tasks direktif, anu tiasa nyandak nilai otomatis, sareng mareuman). Profil otomatis diaktipkeun upami latensi rata-rata ngaleuwihan 1000 mdet. Pikeun nempo data profil, paréntah "acara profil" geus ditambahkeun kana Runtime API atawa kasebut nyaéta dimungkinkeun pikeun ngareset statistik kana log;
  • Ditambahkeun dukungan pikeun ngakses server backend nganggo protokol SOCKS4;
  • Ditambahkeun dukungan tungtung-ka-tungtung pikeun mékanisme pikeun muka gancang sambungan TCP (TFO - TCP Fast Open, RFC 7413), anu ngamungkinkeun anjeun ngirangan jumlah léngkah-léngkah pangaturan sambungan ku ngagabungkeun anu kahiji kana hiji pamundut sareng léngkah kadua prosés negosiasi sambungan 3-hambalan Palasik jeung ngamungkinkeun pikeun ngirim data dina tahap awal ngadegkeun sambungan;
  • Aksi anyar ditambahkeun:
    • "http-request replace-uri" pikeun ngaganti URL maké ekspresi biasa;
    • "tcp-request eusi do-resolve" jeung "http-request do-resolve" pikeun ngabéréskeun hostname;
    • "tcp-request content set-dst" sareng "tcp-request content set-dst-port" pikeun ngagentos alamat IP sareng port target.
  • Ditambahkeun modul konvérsi énggal:
    • aes_gcm_dev pikeun ngadekrip aliran ngagunakeun algoritma AES128-GCM, AES192-GCM sareng AES256-GCM;
    • protobuf pikeun nimba widang tina seratan Protocol Buffers;
    • ungrpc pikeun nimba widang tina pesen gRPC.

    sumber: opennet.ru

Tambahkeun komentar