Αυτό το άρθρο είναι ένα άρθρο καθρέφτη της αυτόματης μετάφρασης, κάντε κλικ εδώ για να μεταβείτε στο αρχικό άρθρο.

Άποψη: 2945|Απάντηση: 0

Η εξισορρόπηση φορτίου Nginx αντιμετωπίζει το πρόβλημα ενός σημείου υποστήριξης SESSION

[Αντιγραφή συνδέσμου]
Δημοσιεύτηκε στις 10/1/2023 8:38:39 μ.μ. | | | |
απαιτήσεις: Χρησιμοποιήστε το Nginx για να δημιουργήσετε έναν αντίστροφο διακομιστή μεσολάβησης, υπεύθυνο για τον προγραμματισμό όλων των αιτημάτων, το backend αναπτύσσεται από την ASP.NET MVC και αναπτύσσεται σε πολλούς διαφορετικούς διακομιστές, σχηματίζοντας ένα σύμπλεγμα υποστήριξηςΔεν είναι δυνατή η κοινή χρήση πληροφοριών συνεδρίας, με αποτέλεσμα ορισμένα αιτήματα να μην υποβάλλονται σε σωστή επεξεργασία。 Θα προκύψουν τα ακόλουθα προβλήματα:





ASP.NET Ο ιστότοπος μπορεί να αναφέρεται ως εξής:

asp.net κοινή χρήση συνεδρίας (μέσω StateServer)
https://www.itsvse.com/thread-6613-1-1.html

. Καθαρή κατανεμημένη αρχιτεκτονική: Κοινή χρήση συνεδρίας με βάση το Redis
https://www.itsvse.com/thread-5189-1-1.html

Οι λύσεις που χρησιμοποιούνται συνήθως είναι οι εξής:

Χρησιμοποιήστε τη βάση δεδομένων για να αποθηκεύσετε τη συνάρτηση SESSION

Δεδομένου ότι κάθε διακομιστής πρέπει να χρησιμοποιεί την ίδια περίοδο λειτουργίας, μπορούμε να αποθηκεύσουμε τη συνεδρία στην ίδια βάση δεδομένων, κάθε φορά που έχουμε πρόσβαση, πηγαίνουμε στη βάση δεδομένων για να ελέγξουμε αν υπάρχει αυτή η συνεδρία ή αν αυτή η περίοδος λειτουργίας έχει λήξει και, στη συνέχεια, μπορούμε να συγχρονίσουμε τη συνεδρία πολλών διακομιστών.

Αξία:Η χρήση αυτής της μεθόδου είναι απλή, βολική και εύκολη για να ξεκινήσετε.

Έλλειψη:Η χρήση της βάσης δεδομένων για συγχρονισμό περιόδων σύνδεσης θα αυξήσει το IO της βάσης δεδομένων και θα αυξήσει τον φόρτο στη βάση δεδομένων. Ταυτόχρονα, κάθε πρόσβαση πρέπει να υποκλέψει αιτήματα και να υποβάλει ερωτήματα στη βάση δεδομένων, με αποτέλεσμα ένα επιπλέον επίπεδο πρόσβασης και χαμένο χρόνο συνεδρίας βάσης δεδομένων.


Χρησιμοποιήστε έναν μηχανισμό προσωρινής αποθήκευσης, όπως το Memcache ή το Redis, για να αποθηκεύσετε το αρχείο SESSION

Η χρήση κατανεμημένων μηχανισμών προσωρινής αποθήκευσης, όπως το memcache ή το redis, για την αποθήκευση δεδομένων περιόδου λειτουργίας είναι μια δημοφιλής λύση για εξισορρόπηση φορτίου και σύγχρονες συνεδρίες σε πολλά έργα μεγάλης κλίμακας. Η αρχή του είναι ότι το έργο χρησιμοποιεί την προσωρινή μνήμη memcache ή redis στο ίδιο μέρος, όταν ο χρήστης συνδεθεί, η περίοδος λειτουργίας θα αποθηκευτεί στην κρυφή μνήμη και, στη συνέχεια, ανεξάρτητα από τον διακομιστή του έργου στον οποίο έχει πρόσβαση, η προσωρινή μνήμη συνεδρίας θα ληφθεί από το ίδιο μέρος, έτσι ώστε ο συγχρονισμός της συνεδρίας να πραγματοποιείται εύκολα.

Αξία:Η χρήση της προσωρινής μνήμης για το συγχρονισμό των περιόδων σύνδεσης δεν θα αυξήσει την επιβάρυνση της βάσης δεδομένων, ούτε χρειάζεται να κρίνετε χειροκίνητα εάν η περίοδος λειτουργίας υπάρχει ή λήγει, εξαλείφοντας κάποια επιχειρηματική λογική.

Έλλειψη:Το Memcache ή το Redis διαιρεί τη μνήμη σε πολλές προδιαγραφές μπλοκ αποθήκευσης και υπάρχουν μπλοκ με μεγέθη, γεγονός που καθορίζει επίσης ότι το Memcache ή το Redis δεν μπορούν να χρησιμοποιήσουν πλήρως τη μνήμη, γεγονός που θα προκαλέσει κατακερματισμό της μνήμης και εάν τα μπλοκ αποθήκευσης είναι ανεπαρκή, θα συμβεί επίσης υπερχείλιση μνήμης.

Αξιοποιήστε το μοτίβο ip_hash στο Nginx

Αυτή η τεχνική, γνωστή και ως διατήρηση συνεδρίας, είναι η ip_hash τεχνολογία στο nginx που σας επιτρέπειΤα αιτήματα από μια συγκεκριμένη διεύθυνση IP καρφιτσώνονται στον ίδιο διακομιστή εφαρμογών υποστήριξης, έτσι ώστε ένας πελάτης και ένα backend κάτω από αυτήν την IP να μπορούν να δημιουργήσουν μια σταθερή περίοδο λειτουργίας.

(Υπάρχει όμως και ένα μειονέκτημα, εάν το δίκτυο του φορέα εκμετάλλευσης είναι πιο ασταθές και ασταθές,Η IP εξόδου είναι δυναμικήΝαι, θα υπάρξουν προβλήματα με αυτή τη μέθοδο. )

Η μέθοδος δοκιμής είναι να ανοίξετε δύο τοποθεσίες με βάση το docker,Πρέπει να δημιουργήσετε ένα νέο αρχείο index.html στους καταλόγους /data/testsite/a και /data/testsite/b, αντίστοιχα, η εντολή είναι η εξής:

Πρόσβαση μέσω προγράμματος περιήγησης όπως φαίνεται παρακάτω:



Εάν δημιουργήσετε ένα νέο κοντέινερ nginx με βάση το Docker, χωρίς να χρησιμοποιήσετε ip_hash τεχνολογία, το αίτημα μπορεί να σταλεί σε διαφορετικούς διακομιστές υποστήριξης, όπως φαίνεται στο παρακάτω σχήμα:



Χρησιμοποιώντας ip_hash τεχνολογία, δημιουργήστε ένα νέο αρχείο /data/testsite/nginx.conf με την ακόλουθη διαμόρφωση:

Η εντολή εκκίνησης Docker έχει ως εξής:




Η διατήρηση συνεδρίας βάσει cookie, την οποία μπορείτε να συμβουλευτείτε στη σταθερή ενότητα, παραλείπεται

Διαμόρφωση Nginx:Η σύνδεση με υπερσύνδεσμο είναι ορατή.

(Τέλος)




Προηγούμενος:【Πρακτική δράση】Χρησιμοποιήστε το Docker για να δημιουργήσετε ένα ιδιωτικό αποθετήριο Gitlab
Επόμενος:Εκκαθάριση κανόνων λειτουργικής μονάδας επανεγγραφής διεύθυνσης URL IIS
Αποκήρυξη:
Όλο το λογισμικό, το υλικό προγραμματισμού ή τα άρθρα που δημοσιεύονται από το Code Farmer Network προορίζονται μόνο για μαθησιακούς και ερευνητικούς σκοπούς. Το παραπάνω περιεχόμενο δεν θα χρησιμοποιηθεί για εμπορικούς ή παράνομους σκοπούς, άλλως οι χρήστες θα υποστούν όλες τις συνέπειες. Οι πληροφορίες σε αυτόν τον ιστότοπο προέρχονται από το Διαδίκτυο και οι διαφορές πνευματικών δικαιωμάτων δεν έχουν καμία σχέση με αυτόν τον ιστότοπο. Πρέπει να διαγράψετε εντελώς το παραπάνω περιεχόμενο από τον υπολογιστή σας εντός 24 ωρών από τη λήψη. Εάν σας αρέσει το πρόγραμμα, υποστηρίξτε γνήσιο λογισμικό, αγοράστε εγγραφή και λάβετε καλύτερες γνήσιες υπηρεσίες. Εάν υπάρχει οποιαδήποτε παραβίαση, επικοινωνήστε μαζί μας μέσω email.

Mail To:help@itsvse.com