Έκδοση του εξισορροπητή HTTP/TCP HAProxy 2.0

Που δημοσιεύθηκε απελευθέρωση εξισορροπητή φορτίου HA Proxy 2.0, το οποίο σας επιτρέπει να διανείμετε κίνηση HTTP και αυθαίρετα αιτήματα TCP μεταξύ μιας ομάδας διακομιστών, λαμβάνοντας υπόψη πολλούς παράγοντες (για παράδειγμα, ελέγχει τη διαθεσιμότητα διακομιστών, αξιολογεί το επίπεδο φόρτωσης, έχει αντίμετρα DDoS) και πραγματοποιεί πρωτεύον φιλτράρισμα δεδομένων ( για παράδειγμα, μπορείτε να αναλύσετε κεφαλίδες HTTP, να φιλτράρετε λανθασμένες παραμέτρους ερωτημάτων μετάδοσης, να αποκλείσετε την αντικατάσταση SQL και XSS, να συνδέσετε πράκτορες επεξεργασίας περιεχομένου). Το HAProxy μπορεί επίσης ισχύουν να συντονίζει την αλληλεπίδραση των στοιχείων σε συστήματα που βασίζονται στην αρχιτεκτονική μικροϋπηρεσιών. Ο κώδικας του έργου είναι γραμμένος σε C και παρέχονται άδεια σύμφωνα με το GPLv2. Το έργο χρησιμοποιείται σε πολλούς μεγάλους ιστότοπους, συμπεριλαμβανομένων των Airbnb, Alibaba, GitHub, Imgur, Instagram, Reddit, StackOverflow, Tumblr, Twitter και Vimeo.

Βασικά χαρακτηριστικά έκδοσης:

  • Παρουσιάστηκε νέο API Πρόγραμμα δεδομένων, το οποίο σας επιτρέπει να διαχειρίζεστε τις ρυθμίσεις HAProxy εν κινήσει μέσω του REST Web API. Συμπεριλαμβανομένου, μπορείτε να προσθέσετε και να αφαιρέσετε δυναμικά backend και διακομιστές, να δημιουργήσετε ACL, να αλλάξετε τη δρομολόγηση αιτημάτων, να αλλάξετε τις συνδέσεις χειριστή σε IP.
  • Προστέθηκε η οδηγία nbthread, η οποία σας επιτρέπει να διαμορφώσετε τον αριθμό των νημάτων που χρησιμοποιούνται στο HAProxy για βελτιστοποίηση της απόδοσης σε επεξεργαστές πολλαπλών πυρήνων. Από προεπιλογή, ο αριθμός των νημάτων εργασίας επιλέγεται ανάλογα με τους πυρήνες της CPU που είναι διαθέσιμοι στο τρέχον περιβάλλον και σε περιβάλλοντα cloud η προεπιλογή είναι ένα νήμα. Για να ορίσετε σκληρά όρια, έχουν προστεθεί οι επιλογές συναρμολόγησης MAX_THREADS και MAX_PROCS, περιορίζοντας το ανώτερο όριο στον αριθμό των νημάτων και των διεργασιών.
  • Η χρήση της οδηγίας δέσμευσης για τη σύνδεση χειριστών σε διευθύνσεις δικτύου έχει απλοποιηθεί. Κατά τη ρύθμιση, δεν είναι πλέον απαραίτητος ο καθορισμός παραμέτρων διεργασίας - από προεπιλογή, οι συνδέσεις θα κατανέμονται μεταξύ των νημάτων ανάλογα με τον αριθμό των ενεργών συνδέσεων.
  • Η ρύθμιση αρχείων καταγραφής κατά την εκτέλεση σε μεμονωμένα κοντέινερ έχει απλοποιηθεί - το αρχείο καταγραφής μπορεί πλέον να σταλεί στο stdout και στο stderr, καθώς και σε οποιονδήποτε υπάρχοντα περιγραφέα αρχείου (για παράδειγμα, "log fd@1 local0").
  • Η υποστήριξη για HTX (Εγγενής αναπαράσταση HTTP) είναι ενεργοποιημένη από προεπιλογή, επιτρέποντας την εξισορρόπηση κατά τη χρήση προηγμένων λειτουργιών όπως το HTTP/2 από άκρο σε άκρο, Επαναλήψεις επιπέδου 7 και gRPC. Το HTX δεν αντικαθιστά τις κεφαλίδες στη θέση τους, αλλά μειώνει τη λειτουργία τροποποίησης στην αφαίρεση και την προσθήκη μιας νέας κεφαλίδας στο τέλος της λίστας, η οποία σας επιτρέπει να χειριστείτε τυχόν εκτεταμένες παραλλαγές του πρωτοκόλλου HTTP, διατηρώντας την αρχική σημασιολογία των κεφαλίδων και επιτρέποντάς σας για την επίτευξη υψηλότερης απόδοσης κατά τη μετάφραση HTTP/2 σε HTTP/1.1 και αντίστροφα.
  • Προστέθηκε επίσημη υποστήριξη για τη λειτουργία HTTP/2 από άκρο σε άκρο (επεξεργασία όλων των σταδίων στο HTTP/2, συμπεριλαμβανομένων των κλήσεων προς το backend, και όχι μόνο της αλληλεπίδρασης μεταξύ του διακομιστή μεσολάβησης και του πελάτη).
  • Έχει υλοποιηθεί πλήρης υποστήριξη για αμφίδρομο διακομιστή μεσολάβησης του πρωτοκόλλου gRPC με τη δυνατότητα ανάλυσης ροών gRPC, επισήμανσης μεμονωμένων μηνυμάτων, αντικατοπτρισμού της κυκλοφορίας gRPC στο αρχείο καταγραφής και φιλτραρίσματος μηνυμάτων χρησιμοποιώντας ACL. Το gRPC σάς επιτρέπει να οργανώσετε το έργο των μικροϋπηρεσιών σε διάφορες γλώσσες προγραμματισμού που αλληλεπιδρούν μεταξύ τους χρησιμοποιώντας ένα καθολικό API. Η επικοινωνία δικτύου στο gRPC υλοποιείται πάνω από το πρωτόκολλο HTTP/2 και βασίζεται στη χρήση Protocol Buffer για σειριοποίηση δεδομένων.
  • Προστέθηκε υποστήριξη για τη λειτουργία "Επανάληψη επιπέδου 7", η οποία σας επιτρέπει να στέλνετε επαναλαμβανόμενα αιτήματα HTTP σε περίπτωση αστοχιών λογισμικού που δεν σχετίζονται με προβλήματα κατά τη δημιουργία σύνδεσης δικτύου (για παράδειγμα, εάν δεν υπάρχει απόκριση ή κενή απάντηση σε αίτημα POST). Για να απενεργοποιήσετε τη λειτουργία, η σημαία "disable-l7-retry" έχει προστεθεί στην επιλογή "http-request" και η επιλογή "retry-on" έχει προστεθεί για τελειοποίηση στις ενότητες προεπιλογών, ακρόασης και υποστήριξης. Οι ακόλουθες ενδείξεις είναι διαθέσιμες για εκ νέου αποστολή: όλα-επαναδοκιμάσιμα-λάθη, κανένα, σύνδεση-αποτυχία, άδεια-απόκριση, ανεπιθύμητη απόκριση, χρονικό όριο απόκρισης, 0rtt-απορρίφθηκε, καθώς και δέσμευση για επιστροφή κωδικών κατάστασης (404, κ.λπ.) ;
  • Έχει εφαρμοστεί ένας νέος διαχειριστής διεργασιών, ο οποίος σας επιτρέπει να ρυθμίσετε τις παραμέτρους κλήσης εξωτερικών εκτελέσιμων αρχείων με χειριστές για HAProxy.
    Για παράδειγμα, το Data Plan API (/usr/sbin/dataplaneapi), καθώς και διάφορες μηχανές επεξεργασίας ροής Offload, υλοποιούνται με τη μορφή ενός τέτοιου εξωτερικού χειριστή.

  • Προστέθηκαν δεσμεύσεις για .NET Core, Go, Lua και Python για την ανάπτυξη επεκτάσεων SPOE (Stream Processing Offload Engine) και SPOP (Stream Processing Offload Protocol). Προηγουμένως, η ανάπτυξη επέκτασης υποστηριζόταν μόνο σε C.
  • Προστέθηκε ένας εξωτερικός χειριστής spoa-mirror (/usr/sbin/spoa-mirror) για αιτήματα κατοπτρισμού σε ξεχωριστό διακομιστή (για παράδειγμα, για αντιγραφή μέρους της κυκλοφορίας παραγωγής για δοκιμή πειραματικού περιβάλλοντος υπό πραγματικό φορτίο).
  • Εισήχθη Ελεγκτής εισόδου HAProxy Kubernetes για να διασφαλιστεί η ενοποίηση με την πλατφόρμα Kubernetes·
  • Προστέθηκε ενσωματωμένη υποστήριξη για εξαγωγή στατιστικών στο σύστημα παρακολούθησης Προμηθέας;
  • Το Πρωτόκολλο Peers, που χρησιμοποιείται για την ανταλλαγή πληροφοριών με άλλους κόμβους που εκτελούν το HAProxy, έχει επεκταθεί. Συμπεριλαμβανομένης της πρόσθετης υποστήριξης για Heartbeat και κρυπτογραφημένη μετάδοση δεδομένων.
  • Η παράμετρος "δείγμα" προστέθηκε στην οδηγία "καταγραφής", η οποία σας επιτρέπει να απορρίπτετε μόνο ένα μέρος των αιτημάτων στο αρχείο καταγραφής, για παράδειγμα 1 στα 10, για να σχηματίσετε ένα αναλυτικό δείγμα.
  • Προστέθηκε η λειτουργία αυτόματης δημιουργίας προφίλ (οδηγία profiling.tasks, η οποία μπορεί να ενεργοποιήσει και να απενεργοποιήσει αυτόματα τις τιμές). Η αυτόματη δημιουργία προφίλ είναι ενεργοποιημένη εάν η μέση καθυστέρηση υπερβαίνει τα 1000 ms. Για την προβολή δεδομένων δημιουργίας προφίλ, η εντολή "εμφάνιση προφίλ" έχει προστεθεί στο Runtime API ή είναι δυνατή η επαναφορά των στατιστικών στοιχείων στο αρχείο καταγραφής.
  • Προστέθηκε υποστήριξη για πρόσβαση σε διακομιστές υποστήριξης χρησιμοποιώντας το πρωτόκολλο SOCKS4.
  • Προστέθηκε υποστήριξη από άκρο σε άκρο για τον μηχανισμό γρήγορου ανοίγματος συνδέσεων TCP (TFO - TCP Fast Open, RFC 7413), ο οποίος σας επιτρέπει να μειώσετε τον αριθμό των βημάτων ρύθμισης σύνδεσης συνδυάζοντας το πρώτο σε ένα αίτημα και το δεύτερο βήμα η κλασική διαδικασία διαπραγμάτευσης σύνδεσης 3 βημάτων και καθιστά δυνατή την αποστολή δεδομένων στο αρχικό στάδιο της δημιουργίας μιας σύνδεσης.
  • Προστέθηκαν νέες ενέργειες:
    • "http-αίτημα αντικατάστασης-uri" για αντικατάσταση της διεύθυνσης URL χρησιμοποιώντας μια τυπική έκφραση.
    • "tcp-request content do-resolve" και "http-request do-resolve" για την επίλυση του ονόματος κεντρικού υπολογιστή.
    • Τα "tcp-request content set-dst" και "tcp- request content set-dst-port" για να αντικαταστήσουν τη διεύθυνση IP και τη θύρα προορισμού.
  • Προστέθηκαν νέες ενότητες μετατροπής:
    • aes_gcm_dev για αποκρυπτογράφηση ροών χρησιμοποιώντας αλγόριθμους AES128-GCM, AES192-GCM και AES256-GCM.
    • protobuf για εξαγωγή πεδίων από μηνύματα Protocol Buffers.
    • ungrpc για εξαγωγή πεδίων από μηνύματα gRPC.

    Πηγή: opennet.ru

Προσθέστε ένα σχόλιο