Μετάβαση στο περιεχόμενο
EuroVPSEuroVPS
Περιοχή πελατών

Τι κάνουμε · Δεδομένα και web: Βάσεις δεδομένων σε cluster με Percona XtraDB Cluster

Managed Percona XtraDB Cluster με ProxySQL read/write splitting: σύγχρονα Galera replicas, κανένας μοναδικός database server, συντήρηση χωρίς διακοπή εγγραφών.
A cabinet of HPE ProLiant DL380 Gen10 servers, door open

Η εφαρμογή σας μιλάει σε μία βάση δεδομένων, αλλά πίσω της βρίσκονται τρία σύγχρονα αντίγραφα, καθένα σε ξεχωριστό hardware. Μια εγγραφή που γίνεται commit υπάρχει σε κάθε κόμβο πριν η εφαρμογή σας ακούσει «OK», οπότε η απώλεια ενός server, το patching ή η επανεκκίνησή του είναι δουλειά ρουτίνας, όχι διακοπή.

Τι είναι

Το Percona XtraDB Cluster είναι συμβατό με MySQL και χτισμένο πάνω στο σύγχρονο replication της Galera. Η εφαρμογή σας σε WordPress, Magento, PrestaShop, Laravel ή custom PHP συνεχίζει να μιλάει απλή MySQL. Αυτό που αλλάζει είναι από κάτω: δεν υπάρχει πια ένας μοναδικός database server του οποίου η βλάβη παίρνει μαζί της όλο το site.

Συνδυάζουμε το cluster με ProxySQL, το οποίο στέλνει τις εγγραφές σε έναν εκλεγμένο κόμβο και μοιράζει τις αναγνώσεις σε όλους. Η εφαρμογή δεν χρειάζεται αλλαγές ούτε γνώση της τοπολογίας.

Πώς το χτίζουμε

  • Τρεις κόμβοι, τρία failure domains. Κάθε κόμβος τρέχει σε δικό του blade ή εικονική μηχανή, και όπου η πλατφόρμα το επιτρέπει, καθένας κάνει boot και αποθηκεύει τα δεδομένα του σε διαφορετική συστοιχία storage. Μια βλάβη host ή μια βλάβη συστοιχίας κοστίζει ένα replica, ποτέ το quorum.
  • ProxySQL ως τοπικό sidecar σε κάθε web κόμβο. Δεν υπάρχει κοινόχρηστος database load balancer για να γίνει το επόμενο single point of failure. Ο Galera-aware health monitor του ProxySQL παρακολουθεί την κατάσταση του cluster, και αν ο writer πέσει, προάγει νέο μέσα σε δευτερόλεπτα.
  • Causal reads για τους συντάκτες. Ενεργοποιούμε σύγχρονους ελέγχους ανάγνωσης, ώστε ένας συντάκτης που αποθηκεύει σε έναν κόμβο και ξαναφορτώνει από άλλον να βλέπει πάντα τη δική του αλλαγή. Κανένα ticket «εξαφανίστηκε το άρθρο μου».
  • Χώρος για επανένταξη. Η cache των write sets είναι διαστασιολογημένη ώστε ένας κόμβος να μπορεί να μείνει εκτός για ώρες συντήρησης και να επανενταχθεί σταδιακά, αντί να αντιγράψει ξανά ολόκληρο το dataset.
  • Backups κάθε τριάντα λεπτά. Το Percona XtraBackup παίρνει hot, συνεπή φυσικά backups, που συμπιέζονται και τραβιούνται από ξεχωριστό backup host. Η πλευρά της παραγωγής δεν κάνει ποτέ push προς την υποδομή backup.
  • Υπό συνεχή παρακολούθηση. Κάθε κόμβος βρίσκεται στο Percona Monitoring and Management.

Στο OpenShift ισχύουν οι ίδιοι κανόνες

Όταν η βάση δεδομένων τρέχει σε OpenShift ή OKD, τρέχει ως StatefulSet με αυστηρό anti-affinity ανάμεσα σε chassis και με PodDisruptionBudget που κρατά το quorum άθικτο. Μια κυλιόμενη επανεκκίνηση κόμβων από ενημέρωση της πλατφόρμας δεν μπορεί έτσι ποτέ να ρίξει περισσότερα από ένα μέλος της βάσης ταυτόχρονα. Αυτό είναι το πρότυπο σχεδιασμού στο οποίο χτίζουμε σε κάθε πλατφόρμα containers, όχι προαιρετικό extra.

Από τι σας προστατεύει

  • Την κλασική διακοπή: όλο το site κάτω επειδή ο ένας MySQL server είναι κάτω.
  • Καταιγίδες deadlock από εγγραφές σε όλους τους κόμβους ταυτόχρονα, που παράγουν τα αφελή round robin σχήματα υπό φορτίο WordPress και plugins e-commerce.
  • Συντάκτες που χάνουν μια αποθήκευση επειδή η επόμενη ανάγνωσή τους έπεσε σε κόμβο που δεν την είχε εφαρμόσει ακόμα.
  • Παράθυρα συντήρησης για ενημερώσεις kernel, patches βάσης δεδομένων και εργασίες hardware.
  • Μια συστοιχία storage ή ένα chassis που παίρνει μαζί του τη βάση δεδομένων.
  • Ένα rolling update του Kubernetes που σπάει αθόρυβα το quorum.

Στην πράξη

Μια πλατφόρμα analytics. Για την πλατφόρμα analytics και συναλλαγών ενός πελάτη χτίσαμε το συναλλακτικό επίπεδο σε Percona XtraDB Cluster με ProxySQL και floating διεύθυνση. Πριν την παράδοση αφαιρέσαμε τον writer επίτηδες. Το ProxySQL μετέφερε τις εγγραφές σε επιζώντα κόμβο και η εφαρμογή συνέχισε κανονικά.

Γιατί EuroVPS

  • Σχεδιάζουμε τα failure domains, όχι μόνο το cluster: διαφορετικοί hosts, διαφορετικές συστοιχίες, διαφορετικά chassis.
  • Κανένας κοινόχρηστος database proxy στη μέση. Κάθε web κόμβος δρομολογεί τα δικά του queries.
  • Τα backups είναι φυσικά, συχνά και τα τραβάει η πλευρά του backup, ποτέ δεν γίνονται push από την παραγωγή.
  • Δοκιμάζουμε το failover πριν την παράδοση, με την εφαρμογή του πελάτη να τρέχει πάνω του.
  • Η ίδια πειθαρχία σε εικονικές μηχανές, bare metal και OpenShift.

Συχνές ερωτήσεις

  1. Πρέπει να αλλάξουμε την εφαρμογή μας; Όχι. Το ProxySQL παρουσιάζει ένα κανονικό MySQL endpoint. Εφαρμογές που γράφουν σε μη συναλλακτικούς πίνακες ή βασίζονται σε ασυνήθιστο locking εξετάζονται πρώτα μαζί σας.
  2. Είναι συμβατό με MySQL ή με MariaDB; Το Percona XtraDB Cluster είναι ένας server συμβατός με MySQL. Μεταφέρουμε βάσεις MySQL και MariaDB σε αυτό και ελέγχουμε character sets, authentication plugins και SQL modes κατά τη μεταφορά.
  3. Το σύγχρονο replication τριών κόμβων κάνει τις εγγραφές πιο αργές; Κάθε commit περιμένει τους άλλους κόμβους να το πιστοποιήσουν, οπότε το latency μεταξύ κόμβων μετράει. Γι' αυτό όλα τα μέλη βρίσκονται στο ίδιο fabric χαμηλού latency σε ένα datacenter, με τα offsite αντίγραφα να τα αναλαμβάνουν ασύγχρονα replicas.
  4. Μπορούμε να το τρέξουμε μέσα σε OpenShift; Ναι, ως StatefulSet με anti-affinity ανάμεσα σε chassis και PodDisruptionBudget, που είναι το πρότυπό μας για κάθε βάση δεδομένων με quorum σε Kubernetes.
  5. Τι συμβαίνει σε βλάβη κόμβου; Οι επιζώντες κόμβοι κρατούν το quorum και συνεχίζουν να εξυπηρετούν. Το ProxySQL δρομολογεί γύρω από τον κόμβο που λείπει, και όταν επιστρέψει, συγχρονίζεται σταδιακά.

Θέλετε μια βάση δεδομένων που αντέχει την απώλεια ενός server; Μιλήστε με έναν μηχανικό.

Ο επόμενος συνεργάτης σας στην υποδομή

Ας δούμε την υποδομή σας.

Πείτε μας τι τρέχετε σήμερα και τι χρειάζεται βελτίωση. Ένας μηχανικός θα εξετάσει το αίτημά σας και θα σας βοηθήσει να σχεδιάσετε το επόμενο βήμα.

+357 222 32280
Μηχανικός της EuroVPS μεταφέρει έναν κόμβο server στον χώρο του datacenter
Μια συζήτηση με τους ανθρώπους που θα φροντίζουν την υποδομή σας.

Ας ξεκινήσουμε από την υποδομή σας.

Λίγο πλαίσιο μάς βοηθά να ξεκινήσουμε τη σωστή συζήτηση.

Θα χρησιμοποιήσουμε τα στοιχεία σας για να απαντήσουμε στο αίτημά σας. Πολιτική απορρήτου