Τι κάνουμε · Δεδομένα και web: Object caching με αυτόματο failover

Ένα object cache είναι αυτό που εμποδίζει το WordPress, το Magento και το Laravel να ρωτούν τη βάση δεδομένων την ίδια ερώτηση χιλιάδες φορές το λεπτό. Το λειτουργούμε ως τριάδα με replication και αυτόματη προαγωγή, ώστε η αστοχία ενός κόμβου cache να μην καταλήγει ποτέ σε μια βάση δεδομένων χωρίς cache και υπερφορτωμένη.
Τι είναι
Το Valkey (και το Redis, ο συμβατός πρόγονός του) κρατά υπολογισμένα αποτελέσματα στη μνήμη: options, μενού, δεδομένα session, αποτελέσματα queries, rendered τμήματα σελίδας. Αυτό κάνει το cache μέρος της διαθεσιμότητάς σας, όχι μόνο των επιδόσεών σας. Ένα μεμονωμένο instance cache είναι ένα κρυφό single point of failure, και εμείς δεν χτίζουμε τέτοια.
Πώς το χτίζουμε
- Τρεις κόμβοι, ένα primary και δύο replicas, σε ξεχωριστούς hosts με αυστηρό anti-affinity, ώστε ποτέ δύο να μην πέφτουν στο ίδιο hardware.
- Τρία Sentinels με quorum δύο παρακολουθούν το primary. Αν αστοχήσει, συμφωνούν, προάγουν ένα replica και ενημερώνουν τους clients πού είναι το νέο primary.
- Οι εφαρμογές συνδέονται μέσω Sentinel, χρησιμοποιώντας το όνομα της υπηρεσίας αντί για σταθερό host και port. Μια προαγωγή είναι διαφανής για την PHP: καμία αλλαγή διαμόρφωσης, καμία επανεκκίνηση.
- Γρήγορος εντοπισμός εκ σχεδιασμού. Το Sentinel είναι ρυθμισμένο να εντοπίζει ένα νεκρό primary μέσα σε λίγα δευτερόλεπτα. Ένα σύντομο, περιττό failover κοστίζει πολύ λιγότερο από ένα μακρύ διάστημα με νεκρό primary.
- Απομόνωση εκεί που μετράει. Μικρότερα sites μπορούν να μοιράζονται ένα cluster μέσα από ξεχωριστές λογικές βάσεις δεδομένων. Μεγάλα ή κρίσιμα sites παίρνουν δικό τους instance, ώστε ένα συμβάν cache ενός site να μην μπορεί ποτέ να αδειάσει το cache ενός άλλου.
Ενσωματώνουμε και την πλευρά της εφαρμογής: το object cache drop-in του WordPress ρυθμισμένο για Sentinel, τους drivers cache και session του Laravel, ή το αντίστοιχο του δικού σας framework.
Από τι σας προστατεύει
- Ένας cache server αστοχεί και κάθε site πίσω του πέφτει ταυτόχρονα στη βάση δεδομένων.
- Ένα κοινόχρηστο cache γεμίζει και πετάει έξω τα keys από τα οποία εξαρτάται κάθε site.
- Το flush ή ένα κακό deploy ενός site αδειάζει το cache των γειτόνων του.
- Χειροκίνητη επέμβαση μέσα στη νύχτα για να δείξουν οι εφαρμογές σε νέο host cache.
- Παλιές εγγραφές που επιβιώνουν μετά από release, γιατί αδειάζουμε και προθερμαίνουμε το cache ως μέρος κάθε πλάνου deployment.
Στην πράξη
Σκοτώνουμε το primary, επίτηδες. Στην πλατφόρμα ενός εκδότη με πολλά sites σταματήσαμε το primary του cache κατά τις δοκιμές αποδοχής. Το Sentinel προήγαγε ένα replica σε περίπου έξι δευτερόλεπτα και κάθε site ανέκαμψε μόνο του, χωρίς ανθρώπινη ενέργεια. Σε μια πλατφόρμα analytics που χτίστηκε αργότερα, η ίδια δοκιμή μέτρησε περίπου επτά δευτερόλεπτα.
Γιατί EuroVPS
- Failover βασισμένο σε Sentinel ως προεπιλογή, όχι ως επιπλέον χρέωση.
- Anti-affinity που επιβάλλεται, ώστε τα replicas να μη μοιράζονται ποτέ hardware με το primary τους.
- Ρυθμίζουμε και την πλευρά της εφαρμογής, ώστε το failover να φτάνει πράγματι μέχρι την PHP.
- Κάθε build δοκιμάζεται σε failover πριν την παράδοση, με τον μετρημένο χρόνο γραμμένο.
Συχνές ερωτήσεις
Valkey ή Redis; Το Valkey είναι ένα open source fork συμβατό με το Redis. Οι εφαρμογές και οι βιβλιοθήκες client δουλεύουν αναλλοίωτες. Τρέχουμε όποιο απαιτεί το stack σας.
Θα πέσει το site μας κατά τη διάρκεια ενός failover του cache; Τα αιτήματα που βρίσκονται σε εξέλιξη μέσα στα λίγα δευτερόλεπτα της προαγωγής μπορεί να μη βρουν το cache ή να ξαναπροσπαθήσουν. Μετά όλα συνεχίζουν στο νέο primary αυτόματα.
Το χρειαζόμαστε για ένα μικρό site; Ένα μεμονωμένο instance είναι εντάξει για ένα μικρό site του οποίου η βάση δεδομένων μπορεί να σηκώσει όλο το φορτίο. Από τη στιγμή που η απώλεια του cache θα υπερφόρτωνε τη βάση δεδομένων, πρέπει να έχει replication.
Μπορούν τα sessions να ζουν σε αυτό; Ναι. Με replication και Sentinel, τα sessions επιβιώνουν από την απώλεια ενός κόμβου cache.
Μπορείτε να φροντίζετε το plugin object cache του WordPress μας; Ναι. Το ρυθμίζουμε και το συντηρούμε ως μέρος του stack.
Θέλετε ένα cache που κάνει failover πριν το προσέξει κανείς; Μιλήστε με έναν μηχανικό.
Ο επόμενος συνεργάτης σας στην υποδομή
Ας δούμε την υποδομή σας.
Πείτε μας τι τρέχετε σήμερα και τι χρειάζεται βελτίωση. Ένας μηχανικός θα εξετάσει το αίτημά σας και θα σας βοηθήσει να σχεδιάσετε το επόμενο βήμα.
+357 222 32280
Ας ξεκινήσουμε από την υποδομή σας.
Λίγο πλαίσιο μάς βοηθά να ξεκινήσουμε τη σωστή συζήτηση.
