HTTP/TCP dengeleyici HAProxy 2.0'ın piyasaya sürülmesi

yayınlanan yük dengeleyici sürümü HA Proxy 2.0, birçok faktörü hesaba katarak (örneğin, sunucuların kullanılabilirliğini kontrol eder, yük düzeyini değerlendirir, DDoS karşı önlemlerine sahiptir) HTTP trafiğini ve rastgele TCP isteklerini bir grup sunucu arasında dağıtmanıza olanak tanır ve birincil veri filtrelemeyi gerçekleştirir ( örneğin, HTTP başlıklarını ayrıştırabilir, hatalı sorgu parametrelerinin aktarımını filtreleyebilir, SQL ve XSS değişimini engelleyebilir, içerik işleme aracılarını bağlayabilirsiniz). HAProxy ayrıca uygulamak Mikro hizmet mimarisine dayalı sistemlerdeki bileşenlerin etkileşimini koordine etmek. Proje kodu C dilinde yazılmıştır ve sağlanan GPLv2 kapsamında lisanslanmıştır. Proje Airbnb, Alibaba, GitHub, Imgur, Instagram, Reddit, StackOverflow, Tumblr, Twitter ve Vimeo gibi birçok büyük sitede kullanılıyor.

Anahtar sürüm özellikleri:

  • Yeni API tanıtıldı Veri planıHAProxy ayarlarını anında REST Web API aracılığıyla yönetmenize olanak tanır. Bunlar arasında, arka uçları ve sunucuları dinamik olarak ekleyip kaldırabilir, ACL'ler oluşturabilir, istek yönlendirmesini değiştirebilir, işleyici bağlamalarını IP'ye değiştirebilirsiniz;
  • Çok çekirdekli CPU'larda performansı optimize etmek için HAProxy'de kullanılan iş parçacığı sayısını yapılandırmanıza olanak tanıyan nbthread yönergesi eklendi. Varsayılan olarak, çalışan iş parçacığı sayısı mevcut ortamda mevcut olan CPU çekirdeklerine bağlı olarak seçilir ve bulut ortamlarında varsayılan değer bir iş parçacığıdır. Kesin sınırlar belirlemek için, iş parçacığı ve işlem sayısındaki üst sınırı sınırlayan MAX_THREADS ve MAX_PROCS montaj seçenekleri eklendi;
  • İşleyicileri ağ adreslerine bağlamak için bağlama yönergesinin kullanımı basitleştirilmiştir. Kurulum sırasında artık işlem parametrelerini tanımlamanıza gerek yoktur; varsayılan olarak bağlantılar, etkin bağlantı sayısına bağlı olarak iş parçacıkları arasında dağıtılacaktır.
  • Yalıtılmış kaplarda çalışırken günlüklerin ayarlanması basitleştirildi - günlük artık stdout ve stderr'in yanı sıra mevcut herhangi bir dosya tanımlayıcıya da gönderilebilir (örneğin, “log fd@1 local0”);
  • HTX (Yerel HTTP Gösterimi) desteği varsayılan olarak etkindir ve uçtan uca HTTP/2, Katman 7 Yeniden Denemeleri ve gRPC gibi gelişmiş özellikler kullanılırken dengeleme yapılmasına olanak tanır. HTX, başlıkları yerinde değiştirmez, ancak değiştirme işlemini, listenin sonuna yeni bir başlık eklemek ve kaldırmak suretiyle azaltır; bu, HTTP protokolünün genişletilmiş değişkenlerini değiştirmenize olanak tanır, başlıkların orijinal anlamlarını korur ve size izin verir. HTTP/2'yi HTTP/1.1'e (veya tam tersi) dönüştürürken daha yüksek performans elde etmek için;
  • Uçtan Uca HTTP/2 modu için resmi destek eklendi (yalnızca proxy ile istemci arasındaki etkileşim değil, arka uç çağrıları da dahil olmak üzere HTTP/2'deki tüm aşamaların işlenmesi);
  • GRPC akışlarını ayrıştırma, bireysel mesajları vurgulama, günlükteki gRPC trafiğini yansıtma ve ACL'leri kullanarak mesajları filtreleme yeteneği ile gRPC protokolünün çift yönlü proxy'si için tam destek uygulanmıştır. gRPC, evrensel bir API kullanarak birbirleriyle etkileşime giren çeşitli programlama dillerindeki mikro hizmetlerin çalışmalarını düzenlemenize olanak tanır. GRPC'deki ağ iletişimi, HTTP/2 protokolünün üzerinde uygulanır ve veri serileştirmesi için Protokol Arabelleklerinin kullanımına dayanır.
  • Ağ bağlantısı kurma sorunlarıyla ilgili olmayan yazılım arızaları durumunda (örneğin, herhangi bir yanıt olmaması veya POST isteği). Modu devre dışı bırakmak için “http-request” seçeneğine “disable-l7-retry” bayrağı eklenmiş olup, varsayılanlar, dinleme ve arka uç bölümlerinde ince ayar yapmak için “retry-on” seçeneği eklenmiştir. Yeniden göndermek için aşağıdaki işaretler mevcuttur: tümü yeniden denenebilir hatalar, hiçbiri, bağlantı hatası, boş yanıt, istenmeyen yanıt, yanıt zaman aşımı, 7rtt-reddedildi ve ayrıca dönüş durum kodlarına bağlanma (0, vb.) ;
  • HAProxy için işleyicilerle harici yürütülebilir dosyaların çağrılmasını yapılandırmanıza olanak tanıyan yeni bir süreç yöneticisi uygulandı.
    Örneğin, Veri Planı API'si (/usr/sbin/dataplaneapi) ve çeşitli Aktarım akışı işleme motorları, böyle bir harici işleyici biçiminde uygulanır;

  • SPOE (Akış İşleme Boşaltma Motoru) ve SPOP (Akış İşleme Boşaltma Protokolü) uzantılarını geliştirmek için .NET Core, Go, Lua ve Python için bağlamalar eklendi. Daha önce uzantı geliştirme yalnızca C'de destekleniyordu;
  • İstekleri ayrı bir sunucuya yansıtmak için harici bir spoa-mirror işleyicisi (/usr/sbin/spoa-mirror) eklendi (örneğin, deneysel bir ortamı gerçek yük altında test etmek amacıyla üretim trafiğinin bir kısmını kopyalamak için);
  • tanıtıldı HAProxy Kubernetes Giriş Denetleyicisi Kubernetes platformuyla entegrasyonu sağlamak için;
  • İstatistikleri izleme sistemine aktarmak için yerleşik destek eklendi Prometheus;
  • HAProxy çalıştıran diğer düğümlerle bilgi alışverişinde bulunmak için kullanılan Eşler Protokolü genişletildi. Heartbeat ve şifreli veri iletimi için ek destek dahil;
  • Analitik bir örnek oluşturmak için isteklerin yalnızca bir kısmını (örneğin 1 üzerinden 10'ini) günlüğe aktarmanıza olanak tanıyan "log" yönergesine "sample" parametresi eklenmiştir;
  • Otomatik profil oluşturma modu eklendi (değerleri otomatik olarak açıp kapatabilen profiling.tasks yönergesi). Ortalama gecikme 1000 ms'yi aşarsa otomatik profil oluşturma etkinleştirilir. Profil oluşturma verilerini görüntülemek için Çalışma Zamanı API'sine "profil oluşturmayı göster" komutu eklenmiştir veya istatistikleri günlüğe sıfırlamak mümkündür;
  • SOCKS4 protokolünü kullanarak arka uç sunuculara erişim desteği eklendi;
  • TCP bağlantılarını hızlı bir şekilde açma mekanizması (TFO - TCP Hızlı Açma, RFC 7413) için uçtan uca destek eklendi; bu, birincisini tek bir istekte ve ikinci adımı bir istekte birleştirerek bağlantı kurulum adımlarının sayısını azaltmanıza olanak tanır. klasik 3 adımlı bağlantı anlaşması süreci ve bağlantı kurmanın ilk aşamasında veri gönderilmesini mümkün kılar;
  • Yeni eylemler eklendi:
    • URL'yi normal bir ifade kullanarak değiştirmek için "http-request replacement-uri";
    • Ana bilgisayar adını çözümlemek için “tcp-request content do-resolve” ve “http-request do-resolve”;
    • Hedef IP adresini ve bağlantı noktasını değiştirmek için "tcp-request content set-dst" ve "tcp-request content set-dst-port".
  • Yeni dönüşüm modülleri eklendi:
    • AES128-GCM, AES192-GCM ve AES256-GCM algoritmalarını kullanarak akışların şifresini çözmek için aes_gcm_dev;
    • Protokol Tamponları mesajlarından alanları çıkarmak için protobuf;
    • gRPC mesajlarından alanları çıkarmak için ungrpc'yi kullanın.

    Kaynak: opennet.ru

Yorum ekle