Καλησπέρα
Αν θες απλά να υπάρχει ένα εφεδρικό σύστημα πάντα διαθέσιμο σε περίπτωση που συμβεί κάτι στο live σύστημα σου, η πιο απλή και οικονομική μέθοδος είναι να διατηρείς backup images όλου του σκληρού ανά ημέρα / εβδομάδα / μήνα. Πολλές εταιρίες προσφέρουν υπηρεσίες backup με μικρό κόστος σε σχέση με το κόστος διατήρησης δεύτερου διακομιστή.
Η χρήση παράλληλων servers υλοποιείται περισσότερο με την λογική του load balancing (να διαμοιράζονται δηλαδή οι επισκέπτες στους διαθέσιμους servers) και δευτερευόντως με την λογική της εφεδρείας. Ευτυχώς υπάρχουν μέθοδοι που αυτοματοποιούν αυτήν τη διαδικασία και δεν χρειάζεται να κάνεις εσύ κάτι χειροκίνητα όπως ανέφερες. Η ακριβής μεθοδολογία βέβαια εξαρτάται από το λογισμικό που χρησιμοποιείς (λειτουργικό, web server, bάση δεδομένων, oι τεχνικές προδιαγραφές της εφαρμογής του site).
Η γενικότερη λογική υλοποίησης διακομιστών για load balancing είναι η εξής:
1. Πρέπει με κάποιον τρόπο να διαμοιράζονται οι επισκέπτες στους διαθέσιμους διακομιστές αλλά να διατηρείται η συνεδρία τους (session) για να μπορούν να παραμένουν συνδεδεμένοι. Άρα πρέπει να υπάρχει η δυνατότητα να δρομολογούνται οι επισκέπτες πάντα στον ίδιο διακομιστή με τον οποίον δρομολογήθηκαν αρχικά. Εμείς χρησιμοποιούμε nginx server όπου η δυνατότητα load balancing με διατήρηση των επισκεπτών στον ίδιο διακομιστή υποστηρίζεται και είναι σχετικά εύκολο να ρυθμιστεί.
2. Πρέπει να μπορούν να συγχρονίζονται οι βάσεις δεδομένων των δύο διακομιστών αμφίδρομα και σε πραγματικό χρόνο. Αυτή η διάταξη ονομάζεται master-master. Ευτυχώς γίνεται σχετικά απλά με ρυθμίσεις από τα αρχεία ρυθμίσεων της MySQL και δημιουργώντας εικονικούς χρήστες για τον αμφίδρομο συγχρονισμό. Με μία αναζήτηση για MySQL master-master θα βρεις πολλά άρθρα.
3. Πρέπει να μπορεί να γίνεται συγχρονισμός των αρχείων της εφαρμογής και των εικόνων, donwloads, κλπ μεταξύ των δύο διακομιστών. Σε αυτή τη περίπτωση μπορεί να δημιουργηθεί ένα script για backup που θα τρέχει αυτόματα με cron ή και χειροκίνητα από τον ένα διακομιστή στον άλλο και που θα συνδέεται στον άλλο διακομιστή μέσω ssh χωρίς κωδικό με χρήση κρυπτογραφημένων κλειδιών.
Και γι' αυτό υπάρχουν πολλά howtos.
Αρχικά μπορεί να είναι εφικτό?
Ναι είναι εφικτό αν έχεις κάποια τεχνογνωσία και άνεση στη διαχείριση διακομιστών.
Έχει υλοποιήσει κάποιος κάποια παρόμοια λογική?
Εμείς δεν το έχουμε κάνει ακόμα, γιατί κανένας πελάτης μας μέχρι στιγμής δεν έφτασε στο σημείο να χρειάζεται μόνιμα τόση επεξεργαστική ισχύ που να ξεπερνά αυτό που μπορεί να δώσει ένας δυνατός dedicated με nginx server και APC cache για να δικαιολογείται το κόστος των δύο διακομιστών για load balancing. Εδώ δυσκολευόμαστε να πείσουμε του πελάτες να πάρουν το δικό τους dedicated...
Σε πειραματικό επίπεδο δοκιμών πάντως είναι σχετικά εύκολο να γίνει. Αν ποτέ με το καλό το forum μας μεγαλώσει και χρειαστεί περισσότερη επεξεργαστική ισχύ σκοπεύω να μην ανέβω σε μηχάνημα αλλά να το χρησιμοποιήσω ως δοκιμαστική πλατφόρμα για load balancing. Αν αποφασίσεις να πειραματιστείς με nginx είμαι στη διάθεση σου.
Αλεξάνδρα Γκόγκα - Software Developer @ People’s Code
OpenCart-Hellas.gr - Administrator & Founder
PeoplesCode.com - Επίσημος Αντιπρόσωπος OpenCart | Extensions - Φιλοξενία - Αναβάθμιση - Μεταφορά - Τεχνική Υποστήριξη OpenCart
Ελληνική μετάφραση & Επεκτάσεις OpenCart