Phát hành bộ cân bằng HTTP/TCP HAProxy 2.0

được phát hành phát hành cân bằng tải HA Proxy 2.0, cho phép bạn phân phối lưu lượng HTTP và các yêu cầu TCP tùy ý giữa một nhóm máy chủ, có tính đến nhiều yếu tố (ví dụ: nó kiểm tra tính khả dụng của máy chủ, đánh giá mức tải, có các biện pháp đối phó DDoS) và tiến hành lọc dữ liệu chính ( ví dụ: bạn có thể phân tích cú pháp các tiêu đề HTTP, lọc các tham số truy vấn truyền không chính xác, chặn thay thế SQL và XSS, kết nối các tác nhân xử lý nội dung). HAProxy cũng có thể ứng dụng để điều phối sự tương tác của các thành phần trong hệ thống dựa trên kiến ​​trúc microservice. Mã dự án được viết bằng C và cung cấp được cấp phép theo GPLv2. Dự án được sử dụng trên nhiều trang web lớn, bao gồm Airbnb, Alibaba, GitHub, Imgur, Instagram, Reddit, StackOverflow, Tumblr, Twitter và Vimeo.

Các tính năng phát hành chính:

  • API mới được giới thiệu Gói dữ liệu, cho phép bạn quản lý cài đặt HAProxy một cách nhanh chóng thông qua API Web REST. Bao gồm, bạn có thể tự động thêm và xóa phần phụ trợ và máy chủ, tạo ACL, thay đổi định tuyến yêu cầu, thay đổi liên kết trình xử lý thành IP;
  • Đã thêm lệnh nbthread, cho phép bạn định cấu hình số lượng luồng được sử dụng trong HAProxy để tối ưu hóa hiệu suất trên CPU đa lõi. Theo mặc định, số lượng luồng công việc được chọn tùy thuộc vào lõi CPU có sẵn trong môi trường hiện tại và trong môi trường đám mây, mặc định là một luồng. Để đặt giới hạn cứng, các tùy chọn lắp ráp MAX_THREADS và MAX_PROCS đã được thêm vào, giới hạn giới hạn trên về số lượng luồng và quy trình;
  • Việc sử dụng lệnh liên kết để liên kết các trình xử lý với các địa chỉ mạng đã được đơn giản hóa. Khi thiết lập, không cần xác định tham số quy trình nữa - theo mặc định, các kết nối sẽ được phân bổ giữa các luồng tùy thuộc vào số lượng kết nối đang hoạt động.
  • Việc thiết lập nhật ký khi chạy trong các vùng chứa riêng biệt đã được đơn giản hóa - giờ đây, nhật ký có thể được gửi tới thiết bị xuất chuẩn và thiết bị xuất chuẩn, cũng như tới bất kỳ bộ mô tả tệp hiện có nào (ví dụ: “log fd@1 local0”);
  • Hỗ trợ cho HTX (Trình bày HTTP gốc) được bật theo mặc định, cho phép cân bằng khi sử dụng các tính năng nâng cao như HTTP/2 hai đầu, Thử lại lớp 7 và gRPC. Hợp tác không thay thế các tiêu đề tại chỗ nhưng giảm thao tác sửa đổi để loại bỏ và thêm tiêu đề mới vào cuối danh sách, cho phép bạn thao tác bất kỳ biến thể mở rộng nào của giao thức HTTP, duy trì ngữ nghĩa ban đầu của các tiêu đề và cho phép bạn đạt hiệu suất cao hơn khi dịch HTTP/2 sang HTTP/1.1 và ngược lại;
  • Đã thêm hỗ trợ chính thức cho chế độ End-to-End HTTP/2 (xử lý tất cả các giai đoạn trong HTTP/2, bao gồm các cuộc gọi đến chương trình phụ trợ chứ không chỉ tương tác giữa proxy và máy khách);
  • Hỗ trợ đầy đủ cho ủy quyền hai chiều của giao thức gRPC đã được triển khai với khả năng phân tích các luồng gRPC, làm nổi bật các thông báo riêng lẻ, phản ánh lưu lượng gRPC trong nhật ký và lọc thông báo bằng ACL. gRPC cho phép bạn tổ chức công việc của các vi dịch vụ bằng nhiều ngôn ngữ lập trình khác nhau tương tác với nhau bằng API phổ quát. Giao tiếp mạng trong gRPC được triển khai dựa trên giao thức HTTP/2 và dựa trên việc sử dụng Bộ đệm giao thức để tuần tự hóa dữ liệu.
  • Đã thêm hỗ trợ cho chế độ "Thử lại lớp 7", cho phép bạn gửi các yêu cầu HTTP lặp lại trong trường hợp lỗi phần mềm không liên quan đến sự cố khi thiết lập kết nối mạng (ví dụ: nếu không có phản hồi hoặc phản hồi trống cho một yêu cầu ĐĂNG). Để tắt chế độ này, cờ “disable-l7-retry” đã được thêm vào tùy chọn “http-request” và tùy chọn “retry-on” đã được thêm để tinh chỉnh trong các phần mặc định, nghe và phụ trợ. Các dấu hiệu sau đây có sẵn để gửi lại: tất cả các lỗi có thể thử lại, không có, lỗi kết nối, phản hồi trống, phản hồi rác, hết thời gian phản hồi, bị từ chối 0rtt, cũng như ràng buộc để trả lại mã trạng thái (404, v.v.) ;
  • Trình quản lý quy trình mới đã được triển khai, cho phép bạn định cấu hình việc gọi các tệp thực thi bên ngoài bằng trình xử lý cho HAProxy.
    Ví dụ: API Gói dữ liệu (/usr/sbin/dataplaneapi), cũng như các công cụ xử lý luồng Giảm tải khác nhau, được triển khai dưới dạng trình xử lý bên ngoài như vậy;

  • Các ràng buộc đã được thêm vào cho .NET Core, Go, Lua và Python để phát triển các tiện ích mở rộng SPOE (Công cụ giảm tải xử lý luồng) và SPOP (Giao thức giảm tải xử lý luồng). Trước đây, việc phát triển tiện ích mở rộng chỉ được hỗ trợ trong C;
  • Đã thêm trình xử lý spoa-mirror bên ngoài (/usr/sbin/spoa-mirror) để phản chiếu các yêu cầu đến một máy chủ riêng biệt (ví dụ: để sao chép một phần lưu lượng sản xuất nhằm thử nghiệm môi trường thử nghiệm dưới tải thực);
  • giới thiệu Bộ điều khiển xâm nhập HAProxy Kubernetes để đảm bảo tích hợp với nền tảng Kubernetes;
  • Đã thêm hỗ trợ tích hợp để xuất số liệu thống kê sang hệ thống giám sát Prometheus;
  • Giao thức ngang hàng, được sử dụng để trao đổi thông tin với các nút khác đang chạy HAProxy, đã được mở rộng. Bao gồm hỗ trợ bổ sung cho Heartbeat và truyền dữ liệu được mã hóa;
  • Tham số “mẫu” đã được thêm vào lệnh “log”, cho phép bạn chỉ chuyển một phần yêu cầu vào nhật ký, ví dụ: 1 trên 10, để tạo thành mẫu phân tích;
  • Đã thêm chế độ lập hồ sơ tự động (chỉ thị profiling.tasks, có thể tự động bật và tắt các giá trị). Cấu hình tự động được bật nếu độ trễ trung bình vượt quá 1000 mili giây. Để xem dữ liệu lược tả, lệnh “hiển thị lược tả” đã được thêm vào API thời gian chạy hoặc có thể đặt lại số liệu thống kê vào nhật ký;
  • Đã thêm hỗ trợ truy cập máy chủ phụ trợ bằng giao thức SOCKS4;
  • Đã thêm hỗ trợ end-to-end cho cơ chế mở nhanh các kết nối TCP (TFO - TCP Fast Open, RFC 7413), cho phép bạn giảm số bước thiết lập kết nối bằng cách kết hợp bước đầu tiên thành một yêu cầu và bước thứ hai quy trình đàm phán kết nối 3 bước cổ điển và cho phép gửi dữ liệu ở giai đoạn đầu thiết lập kết nối;
  • Các hành động mới được thêm vào:
    • "http-request thay thế-uri" để thay thế URL bằng biểu thức chính quy;
    • “nội dung tcp-request do-resolve” và “http-request do-resolve” để phân giải tên máy chủ;
    • “tcp-request content set-dst” và “tcp-request content set-dst-port” để thay thế địa chỉ IP và cổng mục tiêu.
  • Đã thêm các mô-đun chuyển đổi mới:
    • aes_gcm_dev để giải mã các luồng bằng thuật toán AES128-GCM, AES192-GCM và AES256-GCM;
    • protobuf để trích xuất các trường từ các thông báo Bộ đệm giao thức;
    • ungrpc để trích xuất các trường từ tin nhắn gRPC.

    Nguồn: opennet.ru

Thêm một lời nhận xét