Πώς να εγκαταστήσετε το Varnish Cache 6 για το Nginx στο CentOS/RHEL 8


Η Varnish Cache (συνήθως αναφέρεται ως Varnish) είναι ένας ανοιχτός κώδικας, ισχυρός και γρήγορος επιταχυντής HTTP ανάστροφου διακομιστή με μοντέρνα αρχιτεκτονική και ευέλικτη γλώσσα διαμόρφωσης. Το να είσαι αντίστροφος διακομιστής μεσολάβησης σημαίνει απλώς ότι είναι λογισμικό που μπορείτε να αναπτύξετε μπροστά από τον διακομιστή ιστού σας (που είναι ο διακομιστής προέλευσης ή το backend), όπως το Nginx, για να λαμβάνετε αιτήματα HTTP των πελατών και να τα προωθείτε στο διακομιστή προέλευσης για επεξεργασία. Και παρέχει την απόκριση από τον διακομιστή προέλευσης στους πελάτες.

Το Varnish λειτουργεί ως μεσάζων μεταξύ Nginx και πελατών αλλά με ορισμένα πλεονεκτήματα απόδοσης. Ο κύριος σκοπός του είναι να κάνει τις εφαρμογές σας να φορτώνουν γρηγορότερα, λειτουργώντας ως μηχανή προσωρινής αποθήκευσης. Λαμβάνει αιτήματα από πελάτες και τα προωθεί στο backend μία φορά για να αποθηκεύσει προσωρινά το ζητούμενο περιεχόμενο (αποθήκευση αρχείων και θραυσμάτων αρχείων στη μνήμη). Στη συνέχεια, όλα τα μελλοντικά αιτήματα για ακριβώς παρόμοιο περιεχόμενο θα εξυπηρετούνται από την κρυφή μνήμη.

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

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

Το varnish έχει διαμορφωθεί χρησιμοποιώντας την ενσωματωμένη Varnish Configuration Language (VCL), η οποία σας δίνει τη δυνατότητα να γράφετε πολιτικές σχετικά με τον τρόπο με τον οποίο θα πρέπει να είναι τα εισερχόμενα αιτήματα χειρίζεται. Μπορείτε να το χρησιμοποιήσετε για να δημιουργήσετε προσαρμοσμένες λύσεις, κανόνες και ενότητες.

Σε αυτό το άρθρο, θα ακολουθήσουμε τα βήματα για την εγκατάσταση του διακομιστή web Nginx και του Varnish Cache 6 σε ένα νέο CentOS 8 ή Διακομιστής RHEL 8. Οι χρήστες RHEL 8 θα πρέπει να βεβαιωθούν ότι έχουν ενεργοποιήσει τη συνδρομή redhat.

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

  1. Πώς να εγκαταστήσετε τον διακομιστή LEMP στο CentOS 8
  2. Πώς να εγκαταστήσετε τον διακομιστή LEMP στο RHEL 8

Βήμα 1: Εγκαταστήστε τον διακομιστή Web Nginx στο CentOS/RHEL 8

1. Το CentOS/RHEL 8 συνοδεύεται από την πιο πρόσφατη έκδοση του λογισμικού διακομιστή ιστού Nginx, επομένως θα το εγκαταστήσουμε από τον προεπιλεγμένο χώρο αποθήκευσης χρησιμοποιώντας το ακολουθώντας τις εντολές dnf.

# dnf update
# dnf install nginx

2. Μόλις εγκατασταθεί το Nginx, πρέπει να ξεκινήσετε, να ενεργοποιήσετε και να επαληθεύσετε την κατάσταση χρησιμοποιώντας τις ακόλουθες εντολές systemctl.

# systemctl start nginx
# systemctl enable nginx
# systemctl status nginx

3. Εάν είστε λίγο περίεργοι, μπορείτε επίσης να ελέγξετε την υποδοχή Nginx TCP, η οποία εκτελείται στη θύρα 80 από προεπιλογή, χρησιμοποιώντας την ακόλουθη εντολή ss.

# ss -tpln

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

# firewall-cmd --zone=public --permanent --add-service=http
# firewall-cmd --reload

Βήμα 2: Εγκατάσταση του Varnish Cache 6 στο CentOS/RHEL 8

5. Το CentOS/RHEL 8 παρέχει από προεπιλογή μια ενότητα Varnish Cache DNF που περιέχει την έκδοση 6.0 LTS (Μακροπρόθεσμη υποστήριξη).

Για να εγκαταστήσετε τη μονάδα, εκτελέστε την ακόλουθη εντολή.

# dnf module install varnish

6. Μόλις ολοκληρωθεί η εγκατάσταση της μονάδας, μπορείτε να επιβεβαιώσετε την έκδοση του Varnish που είναι εγκατεστημένη στο σύστημά σας.

# varnishd -V

7. Μετά την εγκατάσταση του Varnish Cache, η κύρια εκτελέσιμη εντολή που είναι εγκατεστημένη στο /usr/sbin/varnishd και τα αρχεία διαμόρφωσης του varnish βρίσκονται στο /etc/varnish/.

Το αρχείο /etc/varnish/default.vcl είναι το κύριο αρχείο διαμόρφωσης βερνικιού γραμμένο χρησιμοποιώντας VCL και το /etc/varnish/secret είναι το βερνίκι μυστικό αρχείο.

8. Στη συνέχεια, ξεκινήστε την υπηρεσία Varnish, ενεργοποιήστε την αυτόματη εκκίνηση κατά την εκκίνηση του συστήματος και επιβεβαιώστε ότι είναι σε λειτουργία.

# systemctl start varnish
# systemctl enable varnish
# systemctl status varnish

Βήμα 3: Διαμόρφωση του Nginx ώστε να λειτουργεί με το Varnish Cache

9. Σε αυτήν την ενότητα, θα δείξουμε πώς να ρυθμίσετε τις παραμέτρους της Varnish Cache ώστε να εκτελείται μπροστά από το Nginx. Από προεπιλογή, το Nginx ακούει στη θύρα 80, κανονικά κάθε μπλοκ διακομιστή (ή εικονικός κεντρικός υπολογιστής) έχει ρυθμιστεί να ακούει σε αυτήν τη θύρα.

Για παράδειγμα, ρίξτε μια ματιά στο προεπιλεγμένο μπλοκ διακομιστή nginx που έχει ρυθμιστεί στο κύριο αρχείο διαμόρφωσης (/etc/nginx/nginx.conf).

# vi /etc/nginx/nginx.conf

Αναζητήστε την ενότητα μπλοκ διακομιστή όπως φαίνεται στο παρακάτω στιγμιότυπο οθόνης.

10. Για να εκτελέσετε το Varnish μπροστά από το Nginx, θα πρέπει να αλλάξετε την προεπιλεγμένη θύρα Nginx από 80 σε 8080 (ή οποιαδήποτε άλλη θύρα της επιλογής σας).

Αυτό θα πρέπει να γίνεται σε όλα τα μελλοντικά αρχεία διαμόρφωσης μπλοκ διακομιστών (συνήθως δημιουργούνται στο /etc/nginx/conf.d/) για ιστότοπους ή εφαρμογές ιστού που θέλετε να εξυπηρετήσετε μέσω Varnish >.

Για παράδειγμα, το μπλοκ διακομιστή για τον ιστότοπο δοκιμής tecmint.lan είναι /etc/nginx/conf.d/tecmint.lan.conf και έχει την ακόλουθη διαμόρφωση.

server {
        listen       8080;
        server_name  www.tecmint.lan;
        root         /var/www/html/tecmint.lan/;
        location / {
        }

        error_page 404 /404.html;
            location = /40x.html {
        }
        error_page 500 502 503 504 /50x.html;
            location = /50x.html {
        }
}

Σημαντικό: Θυμηθείτε να απενεργοποιήσετε το προεπιλεγμένο μπλοκ διακομιστή σχολιάζοντας την ενότητα διαμόρφωσής του στο αρχείο /etc/nginx/nginx.conf όπως φαίνεται στο παρακάτω στιγμιότυπο οθόνης. Αυτό σας δίνει τη δυνατότητα να ξεκινήσετε να εκτελείτε άλλους ιστότοπους/εφαρμογές στον διακομιστή σας, διαφορετικά, το Nginx θα κατευθύνει πάντα αιτήματα στο μπλοκ προεπιλεγμένου διακομιστή.

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

# nginx -t
# systemctl restart nginx

12. Στη συνέχεια, για να λάβουμε αιτήματα HTTP από πελάτες, πρέπει να διαμορφώσουμε το Varnish ώστε να εκτελείται στη θύρα 80. Σε αντίθεση με προηγούμενες εκδόσεις του Varnish Cache όπου αυτή η αλλαγή έγινε στο αρχείο περιβάλλοντος Varnish (το οποίο έχει πλέον καταργηθεί), στην έκδοση 6.0 και νεότερη .

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

# systemctl edit --full  varnish

Βρείτε την ακόλουθη γραμμή και αλλάξτε την τιμή του διακόπτη -a, ο οποίος καθορίζει τη διεύθυνση ακρόασης και τη θύρα. Ορίστε τη θύρα σε 80 όπως φαίνεται στο παρακάτω στιγμιότυπο οθόνης.

Σημειώστε ότι εάν δεν καθορίσετε μια διεύθυνση, το varnishd θα ακούει σε όλες τις διαθέσιμες διεπαφές IPv4 και IPv6 που είναι ενεργές στον διακομιστή.

ExecStart=/usr/sbin/varnishd -a :80 -f /etc/varnish/default.vcl -s malloc,256m

Αποθηκεύστε τις αλλαγές στο αρχείο και βγείτε.

13. Στη συνέχεια, πρέπει να ορίσετε τον διακομιστή υποστήριξης που θα επισκεφτεί το Varnish για να ανακτήσει περιεχόμενο. Αυτό γίνεται στο κύριο αρχείο ρυθμίσεων του Varnish.

# vi /etc/varnish/default.vcl 

Αναζητήστε την προεπιλεγμένη ενότητα διαμόρφωσης backend και αλλάξτε τη συμβολοσειρά \προεπιλογή” σε server1 (ή οποιοδήποτε όνομα της επιλογής σας για να αντιπροσωπεύει τον διακομιστή προέλευσης). Στη συνέχεια, ορίστε τη θύρα σε 8080 (ή τη θύρα ακρόασης Nginx που ορίσατε στο μπλοκ διακομιστή σας).

backend server1 {
    .host = "127.0.0.1";
    .port = "8080";
}

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

backend server1 {
    .host = "10.42.0.247";
    .port = "8080";
}

Αποθηκεύστε το αρχείο και κλείστε το.

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

# systemctl daemon-reload
# systemctl restart varnish

15. Τώρα επιβεβαιώστε ότι τα Nginx και Varnish ακούν στις διαμορφωμένες υποδοχές TCP.

# ss -tpln

Βήμα 4: Δοκιμή της ρύθμισης της προσωρινής μνήμης Nginx Varnish

16. Στη συνέχεια, επαληθεύστε ότι οι ιστοσελίδες εξυπηρετούνται μέσω του Varnish Cache ως εξής. Ανοίξτε ένα πρόγραμμα περιήγησης ιστού και πλοηγηθείτε χρησιμοποιώντας την IP του διακομιστή ή το FDQN όπως φαίνεται στο παρακάτω στιγμιότυπο οθόνης.

http://www.tecmin.lan
OR
http://10.42.0.144

17. Εναλλακτικά, χρησιμοποιήστε την εντολή curl όπως φαίνεται. Χρησιμοποιήστε τη διεύθυνση IP του διακομιστή σας ή το FQDN του ιστότοπού σας ή χρησιμοποιήστε 127.0.0.1 ή localhost εάν κάνετε τοπικές δοκιμές.

# curl -I http:///www.tecmint.lan

Χρήσιμα βοηθητικά προγράμματα διαχείρισης κρυφής μνήμης βερνικιού

18. Σε αυτήν την τελευταία ενότητα, θα περιγράψουμε εν συντομία μερικά από τα χρήσιμα βοηθητικά προγράμματα με τα οποία παρέχεται το Varnish Cache, τα οποία μπορείτε να χρησιμοποιήσετε για να ελέγξετε το varnishd >, πρόσβαση σε αρχεία καταγραφής στη μνήμη και σε γενικά στατιστικά στοιχεία και πολλά άλλα.

varnishadm

varnishadm ένα βοηθητικό πρόγραμμα για τον έλεγχο μιας παρουσίας του Varnish που εκτελείται. Δημιουργεί μια σύνδεση CLI με το βερνίκι. Για παράδειγμα, μπορείτε να το χρησιμοποιήσετε για να παραθέσετε τα διαμορφωμένα backends όπως φαίνεται στο παρακάτω στιγμιότυπο οθόνης (διαβάστε man varnishadm για περισσότερες πληροφορίες).

# varnishadm
varnish> backend.list

βερνίκι

Το βοηθητικό πρόγραμμα varnishlog παρέχει πρόσβαση σε δεδομένα για συγκεκριμένα αιτήματα. Προσφέρει πληροφορίες για συγκεκριμένους πελάτες και αιτήματα (διαβάστε man varnishlog για περισσότερες πληροφορίες).

# varnishlog

varnishstat

Ένα varnishstat γνωστό και ως varnishstats, το οποίο σας δίνει μια ματιά στην τρέχουσα απόδοση του Varnish παρέχοντας πρόσβαση σε στατιστικά στοιχεία στη μνήμη, όπως επισκέψεις και αστοχίες στην προσωρινή μνήμη, πληροφορίες σχετικά με τον χώρο αποθήκευσης , δημιουργήθηκαν νήματα, διαγραμμένα αντικείμενα (διαβάστε man varnishstat για περισσότερες πληροφορίες).

# varnishstat 

varnishtop

Ένα βοηθητικό πρόγραμμα varnishtop διαβάζει τα αρχεία καταγραφής κοινόχρηστης μνήμης και παρουσιάζει μια συνεχώς ενημερωμένη λίστα με τις πιο συχνά εμφανιζόμενες καταχωρήσεις αρχείων καταγραφής (διαβάστε man varnishtop για περισσότερες πληροφορίες).

# varnishtop 

βερνικομανής

Ένα βοηθητικό πρόγραμμα varnishhist (varnish history) αναλύει τα αρχεία καταγραφής του βερνικιού και βγάζει ένα συνεχώς ενημερωμένο ιστόγραμμα που δείχνει την κατανομή των τελευταίων n αιτημάτων κατά την επεξεργασία τους ( διαβάστε man varnishhist για περισσότερες πληροφορίες).

# varnishhist

Αυτό είναι όλο! Σε αυτόν τον οδηγό, δείξαμε πώς να εγκαταστήσετε το Varnish Cache και να το εκτελέσετε μπροστά από τον διακομιστή Nginx HTTP για να επιταχύνετε την παράδοση περιεχομένου ιστού στο CentOS/RHEL 8<.

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

Το κύριο μειονέκτημα του Varnish Cache είναι η έλλειψη εγγενούς υποστήριξης για HTTPS. Για να ενεργοποιήσετε το HTTPS στον ιστότοπο/την εφαρμογή σας, πρέπει να διαμορφώσετε έναν διακομιστή μεσολάβησης τερματισμού SSL/TLS ώστε να λειτουργεί σε συνδυασμό με το Varnish Cache για την προστασία του ιστότοπού σας. Στο επόμενο άρθρο μας, θα δείξουμε πώς να ενεργοποιήσετε το HTTPS για Varnish Cache χρησιμοποιώντας το Hitch στο CentOS/RHEL 8.