Ρύθμιση εξισορρόπησης φορτίου διακομιστών Ιστού με χρήση POUND σε RHEL/CentOS


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

  1. Υποστηρίζει εικονικούς κεντρικούς υπολογιστές.
  2. Δυνατότητα διαμόρφωσης.
  3. Όταν ένας διακομιστής υποστήριξης αποτύχει ή ανακτηθεί από μια αποτυχία, την εντοπίζει αυτόματα και βασίζει τις αποφάσεις εξισορρόπησης φορτίου σύμφωνα με αυτό.
  4. Απορρίπτει λανθασμένα αιτήματα.
  5. Δεν υπάρχει καθορισμένο πρόγραμμα περιήγησης ή διακομιστές ιστού.

Ας ρίξουμε μια ματιά στο πώς μπορεί να γίνει αυτό το hack.

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

Pound Gateway Server : 172.16.1.222
Web Server 01 : 172.16.1.204
Web Server 02 : 192.168.1.161

Βήμα 1: Εγκαταστήστε το Pound Load Balancer στον Gateway Server

1. Ο ευκολότερος τρόπος εγκατάστασης του Pound είναι η χρήση προ-μεταγλωττισμένων πακέτων RPM. Μπορείτε να βρείτε RPM για διανομές που βασίζονται στο RedHat στη διεύθυνση:

  1. http://www.invoca.ch/pub/packages/pound/

Εναλλακτικά, το Pound μπορεί να εγκατασταθεί εύκολα από το αποθετήριο EPEL όπως φαίνεται παρακάτω.

# yum install epel-release
# yum install Pound

Αφού εγκατασταθεί το Pound, μπορείτε να επαληθεύσετε εάν έχει εγκατασταθεί εκδίδοντας αυτήν την εντολή.

# rpm –qa |grep Pound

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

Εδώ έχω δύο διακομιστές που φέρουν διευθύνσεις IP 172.16.1.204 και 192.168.1.161.

Για ευκολία στη χρήση, δημιούργησα τον python SimpleHTTPServer για να δημιουργήσω έναν άμεσο διακομιστή ιστού και στους δύο διακομιστές. Διαβάστε για τον python SimpleHTTPServer

Στο σενάριο μου, ο webserver01 μου εκτελείται στη 172.16.1.204 μέσω της θύρας 8888 και ο webserver02 εκτελείται σε 192.168.1.161 μέσω της θύρας 5555.

Βήμα 2: Διαμορφώστε το Pound Load Balancer

3. Τώρα ήρθε η ώρα να ολοκληρώσετε τις διαμορφώσεις. Αφού εγκαταστήσετε επιτυχώς το pound, δημιουργεί το αρχείο διαμόρφωσης του pound στο /etc, δηλαδή pound.cfg.

Πρέπει να επεξεργαστούμε τις λεπτομέρειες του διακομιστή και του backend για να εξισορροπήσουμε το φορτίο μεταξύ των διακομιστών ιστού. Μεταβείτε στο /etc και ανοίξτε το αρχείο pound.cfg για επεξεργασία.

# vi /etc/pound.cfg

Κάντε τις αλλαγές όπως προτείνεται παρακάτω.

ListenHTTP
    Address 172.16.1.222
    Port 80
End

ListenHTTPS
    Address 172.16.1.222
    Port    443
    Cert    "/etc/pki/tls/certs/pound.pem"
End

Service
    BackEnd
        Address 172.16.1.204
        Port    8888
    End

    BackEnd
        Address 192.168.1.161
        Port    5555
    End
End

Έτσι φαίνεται το αρχείο μου pound.cfg.

Κάτω από τις ετικέτες \ListenHTTP” και \ListenHTTPS”, πρέπει να εισαγάγετε τη διεύθυνση IP του διακομιστή που έχετε εγκαταστήσει POUND.

Από προεπιλογή, ένας διακομιστής χειρίζεται αιτήματα HTTP μέσω της θύρας 80 και των αιτημάτων HTTPS μέσω της θύρας 443. Κάτω από την ετικέτα \Υπηρεσία, μπορείτε να προσθέσετε οποιοδήποτε αριθμό δευτερευουσών ετικετών που ονομάζονται \BackEnd. Οι ετικέτες BackEnd φέρουν τις διευθύνσεις IP και τους αριθμούς θυρών στις οποίες εκτελούνται οι διακομιστές ιστού.

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

# /etc/init.d/pound restart 
OR
# service pound restart
OR
# systemctl restart pound.service

4. Τώρα ήρθε η ώρα να ελέγξετε. Ανοίξτε δύο προγράμματα περιήγησης ιστού για να ελέγξετε εάν οι διαμορφώσεις μας λειτουργούν καλά. Στη γραμμή διευθύνσεων πληκτρολογήστε τη διεύθυνση IP της πύλης POUND και δείτε τι εμφανίζεται.

Το πρώτο αίτημα θα πρέπει να φορτώσει τον πρώτο webserver01 και το δεύτερο αίτημα από το άλλο πρόγραμμα περιήγησης ιστού θα πρέπει να φορτώσει τον δεύτερο webserver02.

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

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

Για να εξισορροπήσετε το φορτίο έτσι, πρέπει απλώς να προσθέσετε μια παράμετρο μέσα στο αρχείο pound.cfg. Ας το ρίξουμε μια ματιά.

Σκεφτείτε ότι ο διακομιστής 192.168.1.161:5555 είναι ο καλύτερος διακομιστής. Τότε θα πρέπει να βάλετε περισσότερα αιτήματα να ρέουν σε αυτόν τον διακομιστή. Κάτω από την ετικέτα \BackEnd” που έχει διαμορφωθεί για διακομιστή 192.168.1.161, προσθέστε την παράμετρο \Προτεραιότητα πριν από την ετικέτα Τέλος.

Δείτε το παρακάτω παράδειγμα.

Το εύρος που μπορούμε να χρησιμοποιήσουμε για την παράμετρο \Προτεραιότητα είναι μεταξύ 1-9. Εάν δεν το ορίσουμε, η προεπιλεγμένη τιμή είναι 5 θα ανατεθεί.

Τότε το φορτίο θα εξισορροπηθεί εξίσου. Εάν ορίσουμε τον αριθμό προτεραιότητας, το POUND θα φορτώνει συχνότερα τον διακομιστή με αριθμό υψηλότερης προτεραιότητας. Επομένως, σε αυτήν την περίπτωση, το 192.168.1.161:5555 θα φορτώνεται πιο συχνά από τον διακομιστή 172.16.1.204:8888.

Βήμα 3: Σχεδιασμός Βλαβών Έκτακτης Ανάγκης

Ετικέτα έκτακτης ανάγκης: Αυτή η ετικέτα χρησιμοποιείται για τη φόρτωση ενός διακομιστή σε περίπτωση που όλοι οι διακομιστές υποστήριξης είναι νεκροί. Μπορείτε να το προσθέσετε πριν από την τελευταία ετικέτα τέλους του pound.cfg ως εξής.

“Emergency
           Address 192.168.5.10
           Port        8080
   End”

6. POUND παρακολουθείτε πάντα ποιοι διακομιστές υποστήριξης είναι ζωντανοί και ποιοι όχι. Μπορούμε να ορίσουμε μετά από πόσα δευτερόλεπτα η POUND θα πρέπει να αγοράσει τους διακομιστές υποστήριξης προσθέτοντας την παράμετρο \Alive” στο pound.cfg.

Μπορείτε να χρησιμοποιήσετε την παράμετρο ως \Alive 30” για να την ορίσετε σε 30 δευτερόλεπτα. Η Pound θα απενεργοποιήσει προσωρινά τους διακομιστές υποστήριξης που δεν αποκρίνονται. Όταν λέμε διακομιστής που δεν αποκρίνεται μπορεί να είναι νεκρός ή να μην μπορεί να δημιουργήσει μια σύνδεση εκείνη τη στιγμή.

Το POUND θα ελέγχει τον απενεργοποιημένο διακομιστή υποστήριξης μετά από κάθε χρονική περίοδο που έχετε ορίσει στο αρχείο pound.cfg σε περίπτωση που ο διακομιστής μπορούσε να δημιουργήσει μια σύνδεση, τότε το POUND μπορεί να επιστρέψει στη δουλειά με τον διακομιστή.

7. Ο δαίμονας POUND θα χειριστεί με την εντολή poundctl. Έχοντας αυτό, δεν χρειάζεται να επεξεργαστούμε το αρχείο pound.cfg και μπορούμε να εκδίδουμε διακομιστές και περιόδους σύνδεσης Listner Server, BackEnd κ.λπ. μία μόνο εντολή.

Syntax: poundctl -c /path/to/socket [-L/-l] [-S/-s] [-B/-b] [-N/-n] [-H] [-X]

    Το
  1. -c ορίζει τη διαδρομή προς την υποδοχή σας.
  2. Το
  3. -L/-l ορίζει τον ακροατή της αρχιτεκτονικής σας.
  4. Το
  5. -S/-s ορίζει την υπηρεσία.
  6. Το
  7. -B/-b ορίζει τους διακομιστές υποστήριξης.

Δείτε τις σελίδες man poundctl για περισσότερες πληροφορίες.

Ελπίζουμε να απολαύσετε αυτό το hack και να ανακαλύψετε περισσότερες επιλογές σχετικά με αυτό. Μη διστάσετε να σχολιάσετε παρακάτω για οποιεσδήποτε προτάσεις και ιδέες. Μείνετε συνδεδεμένοι με την Tecmint για εύχρηστες και πιο πρόσφατες οδηγίες.