HTTP/TCP balanslaşdırıcısı HAProxy 2.0 buraxılışı

nəşr edilmişdir yük balanslaşdırıcısının buraxılması HA Proxy 2.0, bir çox amilləri nəzərə alaraq bir qrup server arasında HTTP trafikini və ixtiyari TCP sorğularını paylamağa imkan verir (məsələn, serverlərin mövcudluğunu yoxlayır, yük səviyyəsini qiymətləndirir, DDoS əks tədbirlərinə malikdir) və ilkin məlumatların filtrasiyasını həyata keçirir ( məsələn, HTTP başlıqlarını təhlil edə, yanlış sorğu parametrlərini ötürə, SQL və XSS əvəzetmələrini bloklaya, məzmun emal agentlərini birləşdirə bilərsiniz). HAProxy də edə bilər müraciət edin mikroservis arxitekturasına əsaslanan sistemlərdə komponentlərin qarşılıqlı əlaqəsini koordinasiya etmək. Layihə kodu C və dilində yazılmışdır təchiz olunmuşdur GPLv2 altında lisenziyalıdır. Layihə Airbnb, Alibaba, GitHub, Imgur, Instagram, Reddit, StackOverflow, Tumblr, Twitter və Vimeo da daxil olmaqla bir çox böyük saytlarda istifadə olunur.

Əsas buraxılış xüsusiyyətləri:

  • Yeni API təqdim edildi Məlumat Planı, REST Web API vasitəsilə HAProxy parametrlərini tez idarə etməyə imkan verir. O cümlədən, dinamik olaraq arxa və serverləri əlavə edə və silə, ACL yarada, sorğunun marşrutunu dəyişdirə, işləyici bağlamalarını IP-yə dəyişə bilərsiniz;
  • Çox nüvəli CPU-larda performansı optimallaşdırmaq üçün HAProxy-də istifadə olunan iplərin sayını konfiqurasiya etməyə imkan verən nbthread direktivi əlavə edildi. Varsayılan olaraq, işçi tellərinin sayı cari mühitdə mövcud olan CPU nüvələrindən asılı olaraq seçilir və bulud mühitlərində defolt bir ipdir. Sərt limitləri təyin etmək üçün MAX_THREADS və MAX_PROCS montaj seçimləri əlavə edilib, iplərin və proseslərin sayının yuxarı həddi məhdudlaşdırılıb;
  • İşləyiciləri şəbəkə ünvanlarına bağlamaq üçün bağlama direktivindən istifadə sadələşdirilmişdir. Quraşdırma zamanı artıq proses parametrlərini müəyyən etmək lazım deyil - standart olaraq, aktiv bağlantıların sayından asılı olaraq bağlantılar mövzular arasında paylanacaq.
  • İzolyasiya edilmiş konteynerlərdə işləyərkən jurnalların qurulması sadələşdirilmişdir - jurnal indi stdout və stderr-ə, eləcə də istənilən mövcud fayl deskriptoruna göndərilə bilər (məsələn, “log fd@1 local0”);
  • HTX (Doğma HTTP Nümayəndəliyi) üçün dəstək defolt olaraq aktivləşdirilib, bu, başdan sona HTTP/2, Layer 7 Yenidən Sınaqlar və gRPC kimi qabaqcıl funksiyalardan istifadə edərkən balanslaşdırmaya imkan verir. HTX başlıqları yerində əvəz etmir, lakin siyahının sonuna yeni başlığın çıxarılması və əlavə edilməsi üçün modifikasiya əməliyyatını azaldır ki, bu da HTTP protokolunun istənilən genişləndirilmiş variantlarını manipulyasiya etməyə, başlıqların orijinal semantikasını qoruyub saxlamağa imkan verir. HTTP/2-ni HTTP/1.1-ə və əksinə tərcümə edərkən daha yüksək performansa nail olmaq;
  • End-to-End HTTP/2 rejimi üçün rəsmi dəstək əlavə edildi (HTTP/2-də bütün mərhələlərin işlənməsi, o cümlədən backend-ə zənglər və yalnız proksi ilə müştəri arasında qarşılıqlı əlaqə deyil);
  • gRPC protokolunun ikiistiqamətli proksiinqinə tam dəstək gRPC axınlarını təhlil etmək, fərdi mesajları vurğulamaq, jurnalda gRPC trafikini əks etdirmək və ACL-lərdən istifadə edərək mesajları süzmək imkanı ilə həyata keçirilib. gRPC universal API istifadə edərək bir-biri ilə qarşılıqlı əlaqədə olan müxtəlif proqramlaşdırma dillərində mikroservislərin işini təşkil etməyə imkan verir. gRPC-də şəbəkə rabitəsi HTTP/2 protokolunun üstündə həyata keçirilir və məlumatların seriallaşdırılması üçün Protokol Buferlərinin istifadəsinə əsaslanır.
  • Şəbəkə bağlantısının qurulması ilə bağlı problemlərlə əlaqəli olmayan proqram xətaları halında (məsələn, heç bir cavab olmadıqda və ya boş cavab olmadıqda) təkrar HTTP sorğuları göndərməyə imkan verən “Layer 7 Retries” rejimi üçün əlavə dəstək. POST sorğusu). Rejimi söndürmək üçün “http-request” seçiminə “disable-l7-retry” bayrağı əlavə edilib və defolt, dinləmə və backend bölmələrində dəqiq tənzimləmə üçün “yenidən cəhd edin” seçimi əlavə edilib. Yenidən göndərmək üçün aşağıdakı işarələr mövcuddur: hamısı təkrar cəhd edilə bilən xətalar, heç biri, əlaqə uğursuzluğu, boş cavab, lazımsız cavab, cavab vaxtı aşımı, 0rtt-reddedildi, həmçinin status kodlarının qaytarılması üçün məcburi (404 və s.) ;
  • HAProxy üçün işləyicilərlə xarici icra olunan faylların çağırılmasını konfiqurasiya etməyə imkan verən yeni proses meneceri tətbiq edilmişdir.
    Məsələn, Data Plan API (/usr/sbin/dataplaneapi), eləcə də müxtəlif Boşaltma axını emal mühərrikləri belə xarici işləyici formasında həyata keçirilir;

  • SPOE (Stream Processing Boşaltma Mühərriki) və SPOP (Stream Processing Boşaltma Protokolu) genişləndirmələrini inkişaf etdirmək üçün .NET Core, Go, Lua və Python üçün bağlamalar əlavə edilmişdir. Əvvəllər genişləndirmə inkişafı yalnız C-də dəstəklənirdi;
  • Sorğuların ayrı bir serverə əks olunması üçün (məsələn, real yük altında eksperimental mühitin sınaqdan keçirilməsi üçün istehsal trafikinin bir hissəsinin surətinin çıxarılması üçün) xarici spoa-güzgü işləyicisi (/usr/sbin/spoa-mirror) əlavə edildi;
  • Tərəfindən təqdim edildi HAProxy Kubernetes Giriş Nəzarətçisi Kubernetes platforması ilə inteqrasiyanı təmin etmək;
  • Monitorinq sisteminə statistikanın ixracı üçün daxili dəstək əlavə edildi Prometey;
  • HAProxy ilə işləyən digər qovşaqlarla məlumat mübadiləsi üçün istifadə edilən Peers Protokolu uzadıldı. Heartbeat və şifrələnmiş məlumat ötürülməsi üçün əlavə dəstək;
  • “Nümunə” parametri “log” direktivinə əlavə edilmişdir ki, bu da analitik nümunə yaratmaq üçün sorğuların yalnız bir hissəsini, məsələn, 1-dan 10-ni jurnala köçürməyə imkan verir;
  • Avtomatik profilləmə rejimi əlavə edildi (dəyərləri avtomatik olaraq aktivləşdirə və söndürə bilən profilləşdirmə.tasks direktivi). Orta gecikmə 1000 ms-dən çox olarsa, avtomatik profilləşdirmə işə salınır. Profil məlumatlarına baxmaq üçün Runtime API-ə “profilləşdirməni göstər” əmri əlavə edilib və ya statistik məlumatları jurnala sıfırlamaq mümkündür;
  • SOCKS4 protokolundan istifadə edərək backend serverlərinə daxil olmaq üçün əlavə dəstək;
  • TCP bağlantılarını tez açmaq üçün mexanizmə (TFO - TCP Fast Open, RFC 7413) başdan sona dəstək əlavə edildi, bu, birincini bir sorğuda və ikinci addımı birləşdirərək əlaqə quraşdırma addımlarının sayını azaltmağa imkan verir. klassik 3-addımlı əlaqə danışıqlar prosesi və əlaqənin qurulmasının ilkin mərhələsində məlumatların göndərilməsini mümkün edir;
  • Yeni hərəkətlər əlavə edildi:
    • Normal ifadədən istifadə edərək URL-i əvəz etmək üçün "http-request replace-uri";
    • Host adının həlli üçün “tcp-request content do-resolve” və “http-request do-resolve”;
    • Hədəf IP ünvanını və portu əvəz etmək üçün “tcp-request content set-dst” və “tcp-request content set-dst-port”.
  • Yeni çevrilmə modulları əlavə edildi:
    • AES128-GCM, AES192-GCM və AES256-GCM alqoritmlərindən istifadə edərək axınların şifrəsini açmaq üçün aes_gcm_dev;
    • Protokol Buferləri mesajlarından sahələri çıxarmaq üçün protobuf;
    • gRPC mesajlarından sahələri çıxarmaq üçün ungrpc.

    Mənbə: opennet.ru

Добавить комментарий