Τι κάνουμε · Δεδομένα και web: Web tiers υψηλής διαθεσιμότητας, N+1 σε κάθε επίπεδο

Κάθε επίπεδο του site σας υπάρχει τουλάχιστον δύο φορές: τερματισμός TLS, page cache, web server και PHP. Οι floating διευθύνσεις μετακινούνται μόνες τους όταν πέσει ένας κόμβος, και διαστασιολογούμε το stack ώστε να τρέχει με πλήρη ταχύτητα με έναν κόμβο από κάθε επίπεδο να λείπει.
Τι είναι: load balancing και clustering για web tiers
Μια web πλατφόρμα για sites που δεν επιτρέπεται να πέσουν: ειδήσεις, e-commerce, εκδόσεις, front ends SaaS. Το edge τερματίζει το TLS και κάνει cache τις σελίδες, το web tier τρέχει nginx με PHP-FPM, και το σύνολο είναι χτισμένο ώστε η απώλεια ενός κόμβου, η επανεκκίνηση ή το patching ενός να είναι κάτι που οι επισκέπτες σας δεν βλέπουν ποτέ.
Πώς το χτίζουμε
Ένα χιαστί edge. Δύο κόμβοι edge ανά property τρέχουν HAProxy για TLS, δρομολόγηση και health checks, Varnish για full page caching, και keepalived για τις floating διευθύνσεις. Κάθε edge είναι primary για μία δημόσια διεύθυνση και standby για την άλλη, οπότε και τα δύο μεταφέρουν κίνηση συνεχώς. Ένα health script υποβιβάζει ένα edge του οποίου το HAProxy σταματά να αποκρίνεται, και ο εταίρος παίρνει τη διεύθυνσή του μέσα σε δευτερόλεπτα.
Ένα web tier χωρίς ευνοούμενους. Πίσω από το edge, δύο ή περισσότεροι web κόμβοι τρέχουν nginx και PHP-FPM με ένα pool ανά site, με ίσα βάρη. Η διαδρομή του admin είναι καρφωμένη σε έναν κόμβο, που είναι και η πηγή του μονόδρομου file replication, ώστε τα uploads και οι αλλαγές plugins να φτάνουν στους άλλους κόμβους μέσα σε δευτερόλεπτα χωρίς αντικρουόμενες διαγραφές.
Μια cache που εξυπηρετεί μέσα στα προβλήματα. Το Varnish βρίσκεται σε all-flash storage με υποστήριξη SAN και με περιορισμένο memory pool, κάτι που του επιτρέπει να κρατά πολύ περισσότερα αντικείμενα από όσα θα χωρούσε η RAM, πρακτικά με την ίδια ταχύτητα. Αν κάθε backend είναι ανθυγιές, το Varnish συνεχίζει να σερβίρει το τελευταίο καλό αντίγραφο κάθε σελίδας για έως και μία ημέρα. Η ακύρωση της cache γίνεται με events από το CMS, ώστε ένα δημοσιευμένο άρθρο να εμφανίζεται αμέσως αντί να περιμένει έναν χρονοδιακόπτη.
Επανεκκινήσεις που δεν βλέπει κανείς. Το HAProxy επαναλαμβάνει και αναδρομολογεί ένα αίτημα όταν ένα backend κάνει επανεκκίνηση, τα health checks είναι ρυθμισμένα ώστε το log rotation να μην προκαλεί ποτέ flapping, και το PHP-FPM μπορεί να επανεκκινηθεί έναν κόμβο τη φορά ενώ το edge απορροφά το κενό.
Dual-homed στο fabric. Κάθε web κόμβος είναι dual-homed στο fabric μας με χρήση και των δύο ζεύξεων. Το πώς χτίζονται τα bonds περιγράφεται στη σελίδα fabric του datacenter.
Από τι σας προστατεύει
- Έναν μεμονωμένο κόμβο web, cache ή load balancer που πέφτει ή χρειάζεται επανεκκίνηση.
- Ένα πρόβλημα backend (συντήρηση βάσης δεδομένων, ένα κολλημένο PHP pool) που μετατρέπεται σε λευκή σελίδα: οι αναγνώστες συνεχίζουν να παίρνουν περιεχόμενο από την cache.
- Επανεκκινήσεις ασφαλείας και ενημερώσεις PHP που παράγουν ορατά σφάλματα.
- Μια αιχμή κίνησης που κατακλύζει την PHP ενώ τα περισσότερα αιτήματα θα μπορούσαν να σερβιριστούν από την cache.
Στην πράξη
Load test πριν το λανσάρισμα. Στο νέο ζεύγος edge ενός εκδότη lifestyle τρέξαμε δεκάδες χιλιάδες εικονικούς χρήστες για δεκαπέντε λεπτά, με σταθερά πάνω από δέκα χιλιάδες αιτήματα το δευτερόλεπτο, μηδέν 503 και μηδέν αποτυχίες health check στα backends.
Μια ενημέρωση ασφαλείας PHP μέσα στο ωράριο. Κάναμε patch και στους δύο web κόμβους ενός αθλητικού portal ζωντανά, έναν κόμβο τη φορά. Το origin είδε σύντομα κενά επανεκκίνησης περίπου ενός δευτερολέπτου το καθένα. Το edge επανέλαβε τα αιτήματα και σέρβιρε περιεχόμενο από την cache, και ο αριθμός των σφαλμάτων που είδαν οι επισκέπτες ήταν μηδέν.
Περισσότερη cache, λιγότερη μνήμη. Η μετακίνηση ενός ζεύγους edges από cache στη RAM σε storage με υποστήριξη flash απελευθέρωσε μεγάλη ποσότητα μνήμης για άλλη δουλειά.
Γιατί EuroVPS
- N+1 σε κάθε επίπεδο, συμπεριλαμβανομένων των load balancers, όχι απλώς «δύο web servers πίσω από έναν proxy».
- Failover δοκιμασμένο και μετρημένο πριν την παράδοση.
- Η cache είναι σχεδιασμένη να κρατά το site σας online όταν το backend δεν είναι.
- Ρυθμίζουμε health checks, retries και redispatch, τις λεπτομέρειες που κρίνουν αν ένα failover backend είναι αόρατο ή απλώς σύντομο.
- Οι ίδιοι μηχανικοί λειτουργούν το δίκτυο, το storage και το stack, ώστε τίποτα να μην πέφτει ανάμεσα σε ομάδες.
Συχνές ερωτήσεις
- Χρειαζόμαστε και CDN; Όχι για τη διαθεσιμότητα. Πολλοί πελάτες προσθέτουν ένα για παγκόσμια εμβέλεια. Το stack δουλεύει με ή χωρίς αυτό, και ρυθμίζουμε Varnish και HAProxy ώστε να το σέβονται.
- Πόσο διαρκεί ένα failover του edge; Δευτερόλεπτα. Το μετράμε σε κάθε κατασκευή και σας δίνουμε τον αριθμό στην παράδοση.
- Μπορείτε να τρέξετε WordPress, Magento και PrestaShop σε αυτό; Ναι, μαζί με Laravel και custom PHP. Κάθε site παίρνει το δικό του PHP-FPM pool.
- Τι γίνεται με τους συνδεδεμένους χρήστες και τα checkouts; Αυτά τα αιτήματα παρακάμπτουν την cache από σχεδιασμό και μοιράζονται στο web tier. Η απώλεια ενός web κόμβου μεταφέρει τα νέα αιτήματα στους επιζώντες.
- Μπορούμε να κάνουμε deploy κώδικα μόνοι μας; Ναι. Τα deployments προσγειώνονται στον κόμβο admin και αντιγράφονται προς τα έξω, ή περνούν από το δικό σας pipeline σε κάθε κόμβο.
Θέλετε ένα site που συνεχίζει να σερβίρει όσο δουλεύουμε πάνω του; Μιλήστε με έναν μηχανικό.
Ο επόμενος συνεργάτης σας στην υποδομή
Ας δούμε την υποδομή σας.
Πείτε μας τι τρέχετε σήμερα και τι χρειάζεται βελτίωση. Ένας μηχανικός θα εξετάσει το αίτημά σας και θα σας βοηθήσει να σχεδιάσετε το επόμενο βήμα.
+357 222 32280
Ας ξεκινήσουμε από την υποδομή σας.
Λίγο πλαίσιο μάς βοηθά να ξεκινήσουμε τη σωστή συζήτηση.
