HAProxy popularny moduł równoważenia obciążenia oprogramowania typu open source, niedawno ogłosiła uruchomienie nowa wersja „HAProxy 3.0”, który zawiera szereg aktualizacji mających na celu poprawę prostoty, wydajności, niezawodności i bezpieczeństwa.
Ci, którzy nie wiedzą o HAProxy, powinni wiedzieć, że to to moduł równoważenia obciążenia, który umożliwia dystrybucję ruchu HTTP i żądań TCP pomiędzy grupą serwerów. HAProxy bierze pod uwagę wiele czynników, takich jak dostępność serwera, ocena poziomu obciążenia i wdrożenie środków zaradczych DDoS.
Główne nowe funkcje HAProxy 3.0
Ta nowa wersja prezentowana przez HAProxy 3.0, jest pozycjonowana jako wersja z długoterminowym wsparciem (LTS) i będzie wspierany do 2029 r. i Ma nową sekcję crt-store który zapewnia elastyczny sposób przechowywania i używania certyfikatów SSL, oddzielając pamięć masową od użytkowania na froncie. Umożliwia to indywidualne określenie lokalizacji każdego komponentu certyfikatu, takiego jak pliki certyfikatów, pliki kluczy i pliki odpowiedzi OCSP.
Kolejną wyróżniającą się zmianą jest Rozszerzone możliwości równoważenia komunikatów Syslog. Wspomniano, że poczyniono postępy i obecnie można ustawiać wagi linii serwera w logbackendach trybu. Tymczasem lepki algorytm, który ograniczał się do rejestrowania backendów, teraz ma zastosowanie również do backendów http w trybie tcp.mode.
Ponadto w HAProxy możliwe jest teraz ustawienie ograniczeń dla niektórych żądań dozwolone przez protokół HTTP/2, które mogą powodować problemy, umożliwiając identyfikację wadliwych aplikacji lub klientów o niewłaściwym zachowaniu
W HAProxy 3.0, przedstawiono nową dyrektywę „przewodnikową”, tej dyrektywy można używać w sekcjach „frontend”, „backend” i „słuchaj” powiązać z tymi sekcjami unikalny identyfikator, umożliwiając zapisanie powiązanych statystyk nawet po ponownym uruchomieniu. Dodatkowo dodano polecenie „zrzut pliku statystycznego” umożliwiające zapisanie statystyk do pliku oraz dyrektywę „plik statystyczny” umożliwiającą odczyt statystyk z pliku po ponownym uruchomieniu.
Również, Zwiększono ilość danych, które można uzyskać, umożliwiając zażądanie informacji o liczbie otwartych sesji HTTP, wielkości kolejki żądań oraz dozwolonej liczbie jednoczesnych sesji.
Z drugiej strony il Wydajność obszarów pamięci utworzonych za pomocą stick-table znacznie wzrosła poprzez wdrożenie bardziej wydajnego mechanizmu blokującego, co znacznie poprawia wydajność w systemach wielowątkowych. Na przykład w systemie z 80 wątkami wydajność wzrosła 6-krotnie.
W konfiguracjach obejmujących wiele lokalizacji, w których certyfikat TLS jest wybierany na podstawie identyfikatora hosta dostarczonego przez rozszerzenie TLS SNI, dodano argument „default-crt”, aby wybrać domyślny certyfikat, jeśli istniejące certyfikaty nie pasują do witryny.
Se dodano akcje „set-fc-tos” i „set-bc-tos”, aby zastąpić pole DS (Usługi zróżnicowane) na pakietach IP na zapleczu lub interfejsie użytkownika oraz akcje „set-fc-mark” i „set-bc-mark” służące do oznaczania pakietów IP w celu późniejszego powiązania z określoną tabelą routingu.
Zabronione jest obecnie wysyłanie wielu poleceń do Runtime API w jednym żądaniu, oddzielonych znakiem nowej linii; ustawienie słowa kluczowego „enabled” dla serwerów dynamicznych jest zabronione; oraz wzmocniono weryfikację niestandardowych identyfikatorów URI.
z inne zmiany, które się wyróżniają tej nowej wersji:
- Przedrostka „@virt” można używać do tworzenia map wirtualnych i plików ACL, które nie są zapisywane na dysku, a zawartością zarządza się za pomocą interfejsu Runtime API.
- Dostępny jest prefiks „@opt”, który wykorzystuje pliki wirtualne tylko wtedy, gdy na dysku nie ma żadnych plików rzeczywistych.
- Analizowanie jest teraz bardziej rygorystyczne podczas przetwarzania protokołu HTTP/1 w celu sprawdzenia poprawności celu żądania.
- Wprowadzono globalne dyrektywy (http-err-codes i http-fail-codes), które umożliwiają ustawienie śledzonych kodów stanu HTTP.
- Metoda uuid Fetch przyjmuje teraz opcjonalny argument, który ustawia wersję UUID na 4 lub 7
- Znacząco poprawiono wydajność jednowątkowych skryptów Lua ładowanych przy użyciu dyrektywy „lua-load”.
- Obsługiwane jest teraz formatowanie wierszy dziennika w formatach JSON i CBOR.
- Możliwe jest teraz tworzenie identyfikatorów w formacie UUIDv7.
w końcu jeśli jesteś chcesz dowiedzieć się więcej na ten temat, możesz sprawdzić szczegóły w następujący link.