Το σύμπλεγμα Redis χρειάζεται Sentinel?
Το σύμπλεγμα Redis χρειάζεται Sentinel?
Με το Gitlab Enterprise Edition, μπορείτε να χρησιμοποιήσετε το πακέτο Omnibus για να ρυθμίσετε πολλαπλές μηχανές με το Daemon Sentinel.
Redis Sentinel και Fix-Slave-Config Πρόβλημα: Ο κόμβος Redis παίρνει ρυθμίζεται ως σκλάβος δύο πλοιάρχων όταν δεν πρέπει να είναι.
Χρησιμοποιώ το Redis Sentinel για το Failover σε ένα μεγάλο στόλο Redis που αποτελείται από 12 φρουρούς και πάνω από 500 κομμάτια, το καθένα με έναν κύριο και έναν σκλάβο. Ωστόσο, έχω συναντήσει ένα παράξενο ζήτημα όπου ορισμένοι κόμβοι Redis εκδίδονται επανειλημμένα την εντολή +fix-slave-config από τους Sentinels. Αυτό έχει οδηγήσει σε ορισμένους σκλάβους που αλλάζουν μεταξύ του σωστού κύριου και ενός άλλου λανθασμένου πλοιάρχου. Δεν παρατήρησα αυτό το πρόβλημα σε μικρότερη κλίμακα. Ψάχνω για συμβουλές για το πώς να διορθώσω ή περαιτέρω εντοπισμό σφαλμάτων αυτό το ζήτημα.
Έχω παρατηρήσει δύο συγκεκριμένα ζητήματα:
Α) Τα μηνύματα +Fix-Slave-Config που ανέφερα νωρίτερα.
Β) Το Sentinel.Το αρχείο conf δείχνει ότι ορισμένοι σκλάβοι έχουν δύο κυρίους, παρόλο που πρέπει να έχουν μόνο ένα.
Αρχικά, ο στόλος έχει έναν συγκεκριμένο κόμβο σκλάβου xxx.Xxx.Xxx.177 με τον κύριο xxx.Xxx.Xxx.244 (σχηματίζοντας Shard 188). Ωστόσο, χωρίς διακοπές κόμβων, ο πλοίαρχος αυτού του σκλάβου μετατρέπεται σε xxx.Xxx.Xxx.96 (που είναι ο κύριος για το Shard 188) και στη συνέχεια πίσω στο σωστό κύριο, και αυτός ο κύκλος επαναλαμβάνεται. Έχω επαληθεύσει αυτό με πρόσβαση στους σκλάβους και τους κύριους κόμβους και χρησιμοποιώντας την εντολή redis-cli info. Όλοι οι κόμβοι Redis ξεκινούν με τη σωστή διαμόρφωση και όλοι οι κόμβοι Sentinel έχουν τη σωστή διαμόρφωση στο Sentinel τους.COND αρχεία. Όταν ερωτώ κάθε Sentinel, όλοι έχουν τον ίδιο ακριβώς κατάλογο των πλοιάρχων μετά από κάθε αλλαγή σκλάβου προς κύριο.
Κατά τον έλεγχο των αρχείων καταγραφής των 12 Sentinels μου, βλέπω ότι κάθε λεπτό υπάρχει ένα μήνυμα Fix-Slave-Config που αποστέλλεται. Να μερικά παραδείγματα:
Sentinel #8: 20096: x 22 Οκτ 01:41:49.793 * +Fix-Slave-Config Slave XXX.Xxx.Xxx.177: 6379 xxx.Xxx.Xxx.177 6379 @ Shard-188 xxx.Xxx.Xxx.96 6379
Sentinel #1: 9832: x 22 Οκτ 01:42:50.795 * +Fix-Slave-Config Slave XXX.Xxx.Xxx.177: 6379 xxx.Xxx.Xxx.177 6379 @ shard-172 xxx.Xxx.Xxx.244 6379
Sentinel #6: 20528: x 22 Οκτ 01:43:52.458 * +Fix-Slave-Config Slave XXX.Xxx.Xxx.177: 6379 xxx.Xxx.Xxx.177 6379 @ Shard-188 xxx.Xxx.Xxx.96 6379
Sentinel #10: 20650: x 22 Οκτ 01:43:52.464 * +Fix-Slave-Config Slave XXX.Xxx.Xxx.177: 6379 xxx.Xxx.Xxx.177 6379 @ Shard-188 xxx.Xxx.Xxx.96 6379
Sentinel #2: 20838: x 22 Οκτ 01:44:53.489 * +Fix-Slave-Config Slave XXX.Xxx.Xxx.177: 6379 xxx.Xxx.Xxx.177 6379 @ shard-172 xxx.Xxx.Xxx.244 6379
Όταν τρέχω την εντολή Sentinel Masters, παρατήρησα κάτι περίεργο. Στην περίπτωση 1, το Shard-188 έχει δύο σκλάβους αντί για ένα. Το ίδιο μοτίβο παρατηρείται όταν xxx.Xxx.Xxx.177 πέφτει κάτω από Shard-172 ή Shard-182:
Περίπτωση 1) Ο κύριος είναι xxx.Xxx.Xxx.244 και xxx.Xxx.Xxx.Το 177 είναι ένας από τους σκλάβους του:
183) 1) “Όνομα”
2) “Shard-172”
3) “IP”
4) “xxx.Xxx.Xxx.244 “
5) “θύρα”
6) “6379”
7) “Runid”
8) “CA02DA1F0002A25A880E6765AED306B1857AE2F7”
9) “σημαίες”
10) “Δάσκαλος”
11) “εκκρεμείς κυβερνήσεις”
12) “0”
13) “Last-ping-sent”
14) “0”
15) “Last-Ok-ping-reply”
16) “14”
17) “Last-ping-reply”
18) “14”
19) “Down-After-Milliseconds”
20) “30000”
21) “Info-Refresh”
22) “5636”
23) “Αναφερόμενος σε ρόλο”
24) “Δάσκαλος”
25) “Αναφερόμενος σε ρόλο”
26) “17154406”
27) “config-epoch”
28) “0”
29) “αριθμητικοί-σκλάβοι”
30) “1”
31) “Num-other-Sentinels”
32) “12”
33) “Απαρτία”
34) “7”
35) “Failover-timeout”
36) “60000”
37) “Παράλληλες-Syncs”
38) “1”
72) 1) “Όνομα”
2) “Shard-188”
3) “IP”
4) “xxx.Xxx.Xxx.96 “
5) “θύρα”
6) “6379”
7) “Runid”
8) “95cd3a457ef71fc91ff1a1c5a6d5d4496b266167”
9) “σημαίες”
10) “Δάσκαλος”
11) “εκκρεμείς κυβερνήσεις”
12) “0”
13) “Last-ping-sent”
14) “0”
15) “Last-Ok-ping-reply”
16) “927”
17) “Last-ping-reply”
18) “927”
19) “Down-After-Milliseconds”
20) “30000”
21) “Info-Refresh”
22) “5333”
23) “Αναφερόμενος σε ρόλο”
24) “Δάσκαλος”
25) “Αναφερόμενος σε ρόλο”
26) “17154312”
27) “config-epoch”
28) “0”
29) “αριθμητικοί-σκλάβοι”
30) “2”
31) “Num-other-Sentinels”
32) “12”
33) “Απαρτία”
34) “7”
35) “Failover-timeout”
36) “60000”
37) “Παράλληλες-Syncs”
38) “1”
Περίπτωση 2) Ο κύριος είναι xxx.Xxx.Xxx.96 και xxx.Xxx.Xxx.Το 177 είναι ένας από τους σκλάβους του:
79) 1) “Όνομα”
2) “Shard-172”
3) “IP”
4) “xxx.Xxx.Xxx.244 “
5) “θύρα”
6) “6379”
7) “Runid”
8) “CA02DA1F0002A25A880E6765AED306B1857AE2F7”
9) “σημαίες”
10) “Δάσκαλος”
11) “εκκρεμείς κυβερνήσεις”
12) “0”
13) “Last-ping-sent”
14) “0”
15) “Last-Ok-ping-reply”
16) “1012”
17) “Last-ping-reply”
18) “1012”
19) “Down-After-Milliseconds”
20) “30000”
21) “Info-Refresh”
22) “1261”
23) “Αναφερόμενος σε ρόλο”
24) “Δάσκαλος”
25) “Αναφερόμενος σε ρόλο”
26) “17059720”
27) “config-epoch”
28) “0”
29) “αριθμητικοί-σκλάβοι”
30) “1”
31) “Num-other-Sentinels”
32) “12”
33) “Απαρτία”
34) “7”
35) “Failover-timeout”
36) “60000”
37) “Παράλληλες-Syncs”
38) “1”
273) 1) “Όνομα”
2) “Shard-188”
3) “IP”
4) “xxx.Xxx.Xxx.96 “
5) “θύρα”
6) “6379”
7) “Runid”
8) “95cd3a457ef71fc91ff1a1c5a6d5d4496b266167”
9) “σημαίες”
10) “Δάσκαλος”
11) “εκκρεμείς κυβερνήσεις”
12) “0”
13) “Last-ping-sent”
14) “0”
15) “Last-Ok-ping-reply”
16) “886”
17) “Last-ping-reply”
18) “886”
19) “Down-After-Milliseconds”
20) “30000”
21) “Info-Refresh”
22) “5333”
23) “Αναφερόμενος σε ρόλο”
24) “Δάσκαλος”
25) “Αναφερόμενος σε ρόλο”
26) “17154312”
27) “config-epoch”
28) “0”
29) “αριθμητικοί-σκλάβοι”
30) “2”
31) “Num-other-Sentinels”
32) “12”
33) “Απαρτία”
34) “7”
35) “Failover-timeout”
36) “60000”
37) “Παράλληλες-Syncs”
38) “1”
Αυτές είναι οι λεπτομέρειες του προβλήματός μου με το Redis Sentinel και το πρόβλημα Fix-Slave-Config. Φαίνεται ότι ορισμένοι σκλάβοι ορίζονται ως σκλάβοι δύο κυρίων, οι οποίοι προκαλούν απροσδόκητη συμπεριφορά στο σύμπλεγμα redis μου. Ψάχνω για μια λύση σε αυτό το πρόβλημα και θα εκτιμούσα τυχόν συμβουλές ή προτάσεις.
Το σύμπλεγμα Redis χρειάζεται Sentinel
Με το Gitlab Enterprise Edition, μπορείτε να χρησιμοποιήσετε το πακέτο Omnibus για να ρυθμίσετε πολλαπλές μηχανές με το Daemon Sentinel.
Redis Sentinel και Fix-Slave-Config Πρόβλημα: Ο κόμβος Redis παίρνει ρυθμίζεται ως σκλάβος δύο πλοιάρχων όταν δεν πρέπει να είναι.
В э д д д д д д œ е е е е е е е и и и и и и и и и и и и и и и и и и.
Προσπαθώ να χρησιμοποιήσω το Sentinel για το Failover σε μεγάλο στόλο Redis (12 Sentinels, 500+ Shard of One Master και One Slave το καθένα). Αντιμετωπίζω ένα πολύ παράξενο ζήτημα όπου οι Sentinels μου εκδίδουν επανειλημμένα την εντολή +fix-slave-config σε ορισμένους κόμβους redis και το αποτέλεσμα είναι ορισμένοι σκλάβοι που αλλάζουν μεταξύ του σωστού πλοιάρχου και ενός άλλου λανθασμένου πλοιάρχου. Δεν το παρατήρησα σε μικρότερη κλίμακα, για αυτό που αξίζει. Οποιαδήποτε συμβουλή για το τι πρέπει να διορθώσετε ή περαιτέρω εντοπισμός σφαλμάτων?
Έχω παρατηρήσει δύο συγκεκριμένα ζητήματα:
Α) +μηνύματα Fix-Slave-Config, όπως αναφέρεται παραπάνω.
Β) Το Sentinel.Το CONF δείχνει ορισμένους σκλάβους που έχουν δύο κυρίους (θα πρέπει να έχουν μόνο ένα)
Ο στόλος στην αρχική του κατάσταση έχει έναν συγκεκριμένο κόμβο σκλάβου xxx.Xxx.Xxx.177 με κύριο xxx.Xxx.Xxx.244 (μαζί, περιλαμβάνουν Shard 188 στο στόλο). Χωρίς διακοπές κόμβων, ο πλοίαρχος του σκλάβου μετατρέπεται σε xxx.Xxx.Xxx.96 (Master for Shard 188) και στη συνέχεια πίσω, και στη συνέχεια. Αυτό επαληθεύεται από το sshing στους σκλάβους και τους κύριους κόμβους και τον έλεγχο των πληροφοριών redis-cli. Όλοι οι κόμβοι Redis ξεκίνησαν με τη σωστή διαμόρφωση. Όλοι οι κόμβοι Sentinel είχαν τη σωστή διαμόρφωση στο Sentinel τους.τολμηρός. Κάθε Sentinel έχει τον ίδιο ακριβώς κατάλογο των κυρίων όταν τα ερωτώ μετά από κάθε μία από αυτές τις μεταβολές του σκλάβου->.
Σε όλη μου την 12 Sentinels, τα παρακάτω καταγράφονται. Κάθε λεπτό, υπάρχει ένα μήνυμα που αποστέλλεται ένα μήνυμα-slave-slave-config:
Sentinel #8: 20096: x 22 Οκτ 01:41:49.793 * +Fix-Slave-Config Slave XXX.Xxx.Xxx.177: 6379 xxx.Xxx.Xxx.177 6379 @ Shard-188 xxx.Xxx.Xxx.96 6379
Sentinel #1: 9832: x 22 Οκτ 01:42:50.795 * +Fix-Slave-Config Slave XXX.Xxx.Xxx.177: 6379 xxx.Xxx.Xxx.177 6379 @ shard-172 xxx.Xxx.Xxx.244 6379
Sentinel #6: 20528: x 22 Οκτ 01:43:52.458 * +Fix-Slave-Config Slave XXX.Xxx.Xxx.177: 6379 xxx.Xxx.Xxx.177 6379 @ Shard-188 xxx.Xxx.Xxx.96 6379
Sentinel #10: 20650: x 22 Οκτ 01:43:52.464 * +Fix-Slave-Config Slave XXX.Xxx.Xxx.177: 6379 xxx.Xxx.Xxx.177 6379 @ Shard-188 xxx.Xxx.Xxx.96 6379
Sentinel #2: 20838: x 22 Οκτ 01:44:53.489 * +Fix-Slave-Config Slave XXX.Xxx.Xxx.177: 6379 xxx.Xxx.Xxx.177 6379 @ shard-172 xxx.Xxx.Xxx.244 6379
Εδώ είναι η έξοδος της εντολής Sentinel Masters. Το περίεργο είναι ότι το Shard-188 έχει δύο σκλάβους, όταν στην πραγματικότητα πρέπει να έχει μόνο 1. Η έξοδος φαίνεται η ίδια για όταν xxx.Xxx.Xxx.177 βρίσκεται κάτω από Shard-172 και Shard-182.
Περίπτωση 1) xxx.Xxx.Xxx.244 είναι κύριος του xxx.Xxx.Xxx.177
183) 1) “Όνομα”
2) “Shard-172”
3) “IP”
4) “xxx.Xxx.Xxx.244 ”
5) “θύρα”
6) “6379”
7) “Runid”
8) “CA02DA1F0002A25A880E6765AED306B1857AE2F7”
9) “σημαίες”
10) “Δάσκαλος”
11) “εκκρεμείς κυβερνήσεις”
12) “0”
13) “Last-ping-sent”
14) “0”
15) “Last-Ok-ping-reply”
16) “14”
17) “Last-ping-reply”
18) “14”
19) “Down-After-Milliseconds”
20) “30000”
21) “Info-Refresh”
22) “5636”
23) “Αναφερόμενος σε ρόλο”
24) “Δάσκαλος”
25) “Αναφερόμενος σε ρόλο”
26) “17154406”
27) “config-epoch”
28) “0”
29) “αριθμητικοί-σκλάβοι”
30) “1”
31) “Num-other-Sentinels”
32) “12”
33) “Απαρτία”
34) “7”
35) “Failover-timeout”
36) “60000”
37) “Παράλληλες-Syncs”
38) “1”
72) 1) “Όνομα”
2) “Shard-188”
3) “IP”
4) “xxx.Xxx.Xxx.96 ”
5) “θύρα”
6) “6379”
7) “Runid”
8) “95cd3a457ef71fc91ff1a1c5a6d5d4496b266167”
9) “σημαίες”
10) “Δάσκαλος”
11) “εκκρεμείς κυβερνήσεις”
12) “0”
13) “Last-ping-sent”
14) “0”
15) “Last-Ok-ping-reply”
16) “927”
17) “Last-ping-reply”
18) “927”
19) “Down-After-Milliseconds”
20) “30000”
21) “Info-Refresh”
22) “5333”
23) “Αναφερόμενος σε ρόλο”
24) “Δάσκαλος”
25) “Αναφερόμενος σε ρόλο”
26) “17154312”
27) “config-epoch”
28) “0”
29) “αριθμητικοί-σκλάβοι”
30) “2”
31) “Num-other-Sentinels”
32) “12”
33) “Απαρτία”
34) “7”
35) “Failover-timeout”
36) “60000”
37) “Παράλληλες-Syncs”
38) “1”
Περίπτωση 2) xxx.Xxx.Xxx.96 είναι κύριος του xxx.Xxx.Xxx.177
79) 1) “Όνομα”
2) “Shard-172”
3) “IP”
4) “xxx.Xxx.Xxx.244 ”
5) “θύρα”
6) “6379”
7) “Runid”
8) “CA02DA1F0002A25A880E6765AED306B1857AE2F7”
9) “σημαίες”
10) “Δάσκαλος”
11) “εκκρεμείς κυβερνήσεις”
12) “0”
13) “Last-ping-sent”
14) “0”
15) “Last-Ok-ping-reply”
16) “1012”
17) “Last-ping-reply”
18) “1012”
19) “Down-After-Milliseconds”
20) “30000”
21) “Info-Refresh”
22) “1261”
23) “Αναφερόμενος σε ρόλο”
24) “Δάσκαλος”
25) “Αναφερόμενος σε ρόλο”
26) “17059720”
27) “config-epoch”
28) “0”
29) “αριθμητικοί-σκλάβοι”
30) “1”
31) “Num-other-Sentinels”
32) “12”
33) “Απαρτία”
34) “7”
35) “Failover-timeout”
36) “60000”
37) “Παράλληλες-Syncs”
38) “1”
273) 1) “Όνομα”
2) “Shard-188”
3) “IP”
4) “xxx.Xxx.Xxx.96 ”
5) “θύρα”
6) “6379”
7) “Runid”
8) “95cd3a457ef71fc91ff1a1c5a6d5d4496b266167”
9) “σημαίες”
10) “Δάσκαλος”
11) “εκκρεμείς κυβερνήσεις”
12) “0”
13) “Last-ping-sent”
14) “0”
15) “Last-Ok-ping-reply”
16) “886”
17) “Last-ping-reply”
18) “886”
19) “Down-After-Milliseconds”
20) “30000”
21) “Info-Refresh”
22) “5762”
23) “Αναφερόμενος σε ρόλο”
24) “Δάσκαλος”
25) “Αναφερόμενος σε ρόλο”
26) “17059758”
27) “config-epoch”
28) “0”
29) “αριθμητικοί-σκλάβοι”
30) “2”
31) “Num-other-Sentinels”
32) “12”
33) “Απαρτία”
34) “7”
35) “Failover-timeout”
36) “60000”
37) “Παράλληλες-Syncs”
38) “1”
Το αρχικό μου Sentinel.Το Confor για κάθε Sentinel είναι
Maxclients 20000
ειδοποίηση λογότυπου
logfile “/home/redis/logs/sentinel.κούτσουρο”
Sentinel Monitor Shard-172 Redis-B-172 7
Sentinel Down-After-Milliseconds Shard-172 30000
Sentinel Failover-Timeout Shard-172 60000
Sentinel Parallel-Syncs Shard-172 1
.
Sentinel Monitor Shard-188 Redis-B-188 7
Sentinel Down-After-Milliseconds Shard-188 30000
Sentinel Failover-Timeout Shard-188 60000
Sentinel Parallel-Syncs Shard-188 1
Εδώ είναι το προκύπτον Sentinel.Conf (για όλους τους Sentinels) Μετά από λίγα λεπτά- σημειώστε τους δύο σκλάβους:
Sentinel Monitor Shard-172 xxx.Xxx.Xxx.244 6379 7
Sentinel Failover-Timeout Shard-172 60000
Sentinel config-epoch shard-172 0
Sentinel Leader-Epoch Shard-172 0
Sentinel γνωστή-slave shard-172 xxx.Xxx.Xxx.177 6379 Sentinel γνωστή-Sentinel Shard-172 .
.
Sentinel Monitor Shard-188 xxx.Xxx.Xxx.96 6379 7
Sentinel Failover-Timeout Shard-188 60000
Sentinel config-epoch shard-188 0
Sentinel Leader-Epoch Shard-188 0
Sentinel γνωστή-slave shard-188 xxx.Xxx.Xxx.194 6379 Sentinel γνωστή-slave shard-188 xxx.Xxx.Xxx.177 6379
Sentinel γνωστή-Sentinel Shard-188 .
Redis αναπαραγωγή και αποτυχία με omnibus gitlab (Premium Self)
Σημείωση: Αυτή είναι η τεκμηρίωση για τα πακέτα Omnibus gitlab. Για τη χρήση του δικού σας μη δεσμευμένου Redis, ακολουθήστε τη σχετική τεκμηρίωση.
Σημείωση: Στο Redis Lingo, το Primary ονομάζεται Master. Σε αυτό το έγγραφο χρησιμοποιείται το Primary αντί του Master, εκτός από τις ρυθμίσεις όπου απαιτείται κύριος.
Η χρήση redis σε κλιμακωτό περιβάλλον είναι δυνατή χρησιμοποιώντας ένα Πρωταρχικός Χ Πανομοιότυπο Τοπολογία με υπηρεσία Redis Sentinel για να παρακολουθήσετε και να ξεκινήσετε αυτόματα τη διαδικασία αποτυχίας.
Ο Redis απαιτεί έλεγχο ταυτότητας εάν χρησιμοποιείται με το Sentinel. Δείτε την τεκμηρίωση ασφαλείας Redis για περισσότερες πληροφορίες. Συνιστούμε να χρησιμοποιήσετε έναν συνδυασμό κωδικού πρόσβασης Redis και σφιχτά κανόνες τείχους προστασίας για να εξασφαλίσετε την υπηρεσία Redis. Σας ενθαρρύνονται ιδιαίτερα να διαβάσετε την τεκμηρίωση του Redis Sentinel πριν διαμορφώσετε τον Redis με το Gitlab για να κατανοήσετε πλήρως την τοπολογία και την αρχιτεκτονική.
Πριν από την κατάδυση στις λεπτομέρειες της ρύθμισης των Redis και Redis Sentinel για μια αντιγραφή τοπολογία, βεβαιωθείτε ότι έχετε διαβάσει αυτό το έγγραφο μία φορά στο σύνολό του για να κατανοήσετε καλύτερα πώς τα συστατικά είναι δεμένα μαζί.
Χρειάζεστε τουλάχιστον 3 ανεξάρτητα μηχανήματα: φυσικά ή VM που τρέχουν σε ξεχωριστές φυσικές μηχανές. Είναι σημαντικό να εκτελούνται όλες οι περιπτώσεις πρωτοβάθμιας και ρεπλίκα Redis σε διαφορετικά μηχανήματα. Εάν αποτύχετε να παρέχετε τα μηχανήματα με αυτόν τον συγκεκριμένο τρόπο, οποιοδήποτε ζήτημα με το κοινό περιβάλλον μπορεί να μειώσει ολόκληρη την εγκατάστασή σας.
Είναι εντάξει να τρέξετε ένα Sentinel παράλληλα με μια πρωτογενή ή ρεπλίκα redis παρουσίαση. Ωστόσο, δεν πρέπει να υπάρχουν περισσότεροι από ένα Sentinel στο ίδιο μηχάνημα.
Πρέπει επίσης να λάβετε υπόψη την υποκείμενη τοπολογία του δικτύου, φροντίζοντας να έχετε περιττή συνδεσιμότητα μεταξύ των περιπτώσεων Redis / Sentinel και Gitlab, διαφορετικά τα δίκτυα γίνονται ένα ενιαίο σημείο αποτυχίας.
Η εκτέλεση του Redis σε ένα κλιμακωτό περιβάλλον απαιτεί μερικά πράγματα:
- Πολλαπλές περιπτώσεις Redis
- Εκτελέστε Redis σε ένα Πρωταρχικός Χ Πανομοιότυπο τοπολογία
- Πολλαπλές περιπτώσεις Sentinel
- Υποστήριξη εφαρμογών και ορατότητα σε όλες τις περιπτώσεις Sentinel και Redis
Το Redis Sentinel μπορεί να χειριστεί τα πιο σημαντικά καθήκοντα σε ένα περιβάλλον HA και αυτό είναι να βοηθήσουμε τους διακομιστές στο διαδίκτυο με ελάχιστο έως καθόλου χρόνο διακοπής. Redis Sentinel:
- Παρακολουθεί Πρωταρχικός και Αντίγραφα περιπτώσεις για να δείτε αν είναι διαθέσιμες
- Προωθεί ένα Πανομοιότυπο προς την Πρωταρχικός όταν ο Πρωταρχικός αποτυγχάνω
- Υποβιβάζει ένα Πρωταρχικός προς την Πανομοιότυπο Όταν το αποτυχημένο Πρωταρχικός Επιστρέφει στο διαδίκτυο (για να αποφευχθεί η χρονική διαμόρφωση δεδομένων)
- Μπορεί να ερωτηθεί από την εφαρμογή για να συνδεθεί πάντα με το τρέχον Πρωταρχικός υπηρέτης
Όταν ένα Πρωταρχικός δεν ανταποκρίνεται, είναι ευθύνη της αίτησης (στην περίπτωσή μας Gitlab) να χειριστεί το χρονικό όριο και να επανασυνδεθεί (ερωτώντας ένα Φρουρός για ένα νέο Πρωταρχικός·.
Για να έχετε καλύτερη κατανόηση για το πώς να ρυθμίσετε σωστά το Sentinel, διαβάστε πρώτα την τεκμηρίωση του Redis Sentinel, καθώς η αποτυχία να το διαμορφώσετε σωστά μπορεί να οδηγήσει σε απώλεια δεδομένων ή μπορεί να μειώσει ολόκληρο το σύμπλεγμα σας, ακυρώνοντας την προσπάθεια Failover.
Συνιστώμενη ρύθμιση
Για μια ελάχιστη ρύθμιση, πρέπει να εγκαταστήσετε το πακέτο Omnibus Gitlab στο 3 ανεξάρτητος μηχανές, και τα δύο με Ερυθρός και Φρουρός:
- Redis Primary + Sentinel
- Redis Replica + Sentinel
- Redis Replica + Sentinel
Εάν δεν είστε σίγουροι ή δεν καταλαβαίνετε γιατί και από πού προέρχεται το ποσό των κόμβων, διαβάστε την επισκόπηση της ρύθμισης Redis και Sentinel.
Για μια συνιστώμενη ρύθμιση που μπορεί να αντισταθεί σε περισσότερες αποτυχίες, πρέπει να εγκαταστήσετε το πακέτο Omnibus Gitlab στο 5 ανεξάρτητος μηχανές, και τα δύο με Ερυθρός και Φρουρός:
- Redis Primary + Sentinel
- Redis Replica + Sentinel
- Redis Replica + Sentinel
- Redis Replica + Sentinel
- Redis Replica + Sentinel
Επισκόπηση ρύθμισης Redis
Πρέπει να έχετε τουλάχιστον 3 διακομιστές Redis: 1 Primary, 2 Replicas, και πρέπει να είναι σε ανεξάρτητες μηχανές (βλ.
Μπορείτε να έχετε επιπλέον κόμβους Redis, που βοηθά να επιβιώσετε σε μια κατάσταση όπου μειώνονται περισσότεροι κόμβοι. Κάθε φορά που υπάρχουν μόνο 2 κόμβοι στο διαδίκτυο, δεν ξεκινά μια αποτυχία.
Για παράδειγμα, εάν έχετε 6 κόμβους Redis, το μέγιστο 3 μπορεί να είναι ταυτόχρονα κάτω.
Υπάρχουν διαφορετικές απαιτήσεις για κόμβους Sentinel. Εάν τα φιλοξενείτε στα ίδια μηχανήματα Redis, ίσως χρειαστεί να λάβετε υπόψη τους περιορισμούς κατά τον υπολογισμό της ποσότητας των κόμβων που πρέπει να παρέχονται. Δείτε την τεκμηρίωση Sentinel Setup Sendup για περισσότερες πληροφορίες.
Όλοι οι κόμβοι Redis πρέπει να διαμορφώνονται με τον ίδιο τρόπο και με παρόμοιες προδιαγραφές διακομιστή, όπως σε μια κατάσταση αποτυχίας, οποιαδήποτε Πανομοιότυπο μπορεί να προωθηθεί ως το νέο Πρωταρχικός από τους διακομιστές Sentinel.
Η αναπαραγωγή απαιτεί έλεγχο ταυτότητας, οπότε πρέπει να ορίσετε έναν κωδικό πρόσβασης για να προστατεύσετε όλους τους κόμβους Redis και τους Sentinels. Όλοι τους μοιράζονται τον ίδιο κωδικό πρόσβασης και όλες οι περιπτώσεις πρέπει να είναι σε θέση να μιλούν μεταξύ τους μέσω του δικτύου.
Επισκόπηση εγκατάστασης Sentinel
Οι Sentinels παρακολουθούν και τους δύο άλλους κόμβους Sentinels και Redis. Κάθε φορά που ένα Sentinel ανιχνεύει ότι ένας κόμβος Redis δεν ανταποκρίνεται, ανακοινώνει την κατάσταση του κόμβου στα άλλα Sentinels. Οι Sentinels πρέπει να φτάσουν σε ένα απαρτία (το ελάχιστο ποσό των Sentinels που συμφωνούν σε έναν κόμβο είναι μειωμένο) για να μπορέσει να ξεκινήσει μια αποτυχία.
Όποτε το απαρτία πληρούται, το η πλειοψηφία Από όλους τους γνωστούς κόμβους Sentinel πρέπει να είναι διαθέσιμοι και προσβάσιμοι, έτσι ώστε να μπορούν να εκλέξουν το Sentinel ηγέτης Ποιος λαμβάνει όλες τις αποφάσεις για την αποκατάσταση της διαθεσιμότητας υπηρεσιών από:
- Προώθηση ενός νέου Πρωταρχικός
- Αναδιαμορφώνοντας το άλλο Αντίγραφα και να τους επισημάνουν το νέο Πρωταρχικός
- Ανακοινώστε το νέο Πρωταρχικός σε κάθε άλλο Sentinel Peer
- Αναδιαμορφώστε το παλιό Πρωταρχικός και υποβιβάζω σε Πανομοιότυπο Όταν επανέρχεται στο διαδίκτυο
Πρέπει να έχετε τουλάχιστον 3 διακομιστές Redis Sentinel και πρέπει να είναι το καθένα σε ένα ανεξάρτητο μηχάνημα (που πιστεύεται ότι αποτυγχάνει ανεξάρτητα), ιδανικά σε διαφορετικές γεωγραφικές περιοχές.
Μπορείτε να τα διαμορφώσετε στα ίδια μηχανήματα όπου έχετε ρυθμίσει τους άλλους διακομιστές Redis, αλλά καταλάβετε ότι εάν ένας ολόκληρος κόμβος πέσει κάτω, χάσετε τόσο ένα Sentinel όσο και ένα redis παράδειγμα.
Ο αριθμός των Sentinels πρέπει ιδανικά να είναι πάντα ένας Περιττός Αριθμός, για τον αλγόριθμο συναίνεσης να είναι αποτελεσματικός στην περίπτωση αποτυχίας.
Σε μια τοπολογία 3 κόμβων, μπορείτε να αντέξετε οικονομικά μόνο 1 κόμβο Sentinel που κατεβαίνει. Όποτε το η πλειοψηφία του Sentinels μειώνεται, η προστασία του διαμερίσματος δικτύου αποτρέπει καταστροφικές ενέργειες και αποτυχία δεν ξεκινά.
Να μερικά παραδείγματα:
- Με 5 ή 6 φρουρά, το μέγιστο 2 μπορεί να μειωθεί για μια αποτυχία να ξεκινήσει.
- Με 7 Sentinels, το μέγιστο των 3 κόμβων μπορεί να μειωθεί.
ο Ηγέτης Οι εκλογές μπορούν μερικές φορές να αποτύχουν στον γύρο ψηφοφορίας όταν ομοφωνία δεν επιτυγχάνεται (δείτε τον περίεργο αριθμό απαίτησης κόμβων παραπάνω). Σε αυτή την περίπτωση, γίνεται μια νέα προσπάθεια μετά το χρονικό διάστημα που ορίζεται στο Sentinel [‘FAISOVER_TIMEOUT’] (σε χιλιοστά του δευτερολέπτου).
ΣΗΜΕΙΩΣΗ: Μπορούμε να δούμε πού ορίζεται αργότερα ο Sentinel [‘Failover_Timeout’].
Η μεταβλητή Failover_Timeout έχει πολλές διαφορετικές περιπτώσεις χρήσης. Σύμφωνα με την επίσημη τεκμηρίωση:
- Ο χρόνος που απαιτείται για την εκ νέου εκκίνηση μιας αποτυχίας μετά από μια προηγούμενη αποτυχία είχε ήδη δοκιμαστεί εναντίον του ίδιου πρωταρχικού.
- Ο χρόνος που απαιτείται για ένα αντίγραφο που αναπαράγει σε λάθος πρωτεύουσα σύμφωνα με μια διαμόρφωση ρεύματος Sentinel, που πρέπει να αναγκαστεί να αναπαραχθεί με το σωστό πρωτεύον, είναι ακριβώς το χρονικό όριο αποτυχίας (μετρώντας από τη στιγμή που ένας φρουρός ανίχνευσε την εσφαλμένη διαμόρφωση).
- Ο χρόνος που απαιτείται για να ακυρώσετε μια αποτυχία που βρίσκεται ήδη σε εξέλιξη, αλλά δεν παρήγαγε καμία αλλαγή διαμόρφωσης (replicaf κανείς δεν αναγνωρίστηκε ακόμα από το προωθούμενο αντίγραφο).
- Ο μέγιστος χρόνος που αναδιαμορφώνεται μια ανακαίνιση σε εξέλιξη για να αναδιαμορφωθούν όλα τα αντίγραφα ως αντίγραφα του νέου πρωτοβάθμιου. Ωστόσο, ακόμη και μετά από αυτό το διάστημα τα αντίγραφα αναδιαμορφώνονται από τους Sentinel.
Ρύθμιση Redis
Αυτή είναι η ενότητα όπου εγκαθιστούμε και ρυθμίζουμε τις νέες περιπτώσεις Redis.
Θεωρείται ότι έχετε εγκαταστήσει το Gitlab και όλα τα στοιχεία του από το μηδέν. Εάν έχετε ήδη εγκαταστήσει και εκτελείται το Redis, διαβάστε πώς να αλλάξετε από εγκατάσταση μονής μηχανής.
Σημείωση: Οι κόμβοι Redis (τόσο πρωτογενές όσο και αντίγραφο) χρειάζονται τον ίδιο κωδικό πρόσβασης που ορίζεται στο Redis [‘Password’] . Σε οποιαδήποτε στιγμή κατά τη διάρκεια μιας αποτυχίας, οι Sentinels μπορούν να αναδιαμορφώσουν έναν κόμβο και να αλλάξουν την κατάστασή του από το πρωτεύον σε αντίγραφο και αντίστροφα.
Απαιτήσεις
Οι απαιτήσεις για μια ρύθμιση Redis είναι οι εξής:
- Παροχή του ελάχιστου απαιτούμενου αριθμού περιπτώσεων όπως καθορίζονται στην ενότητα Προτεινόμενη ρύθμιση.
- Εμείς Μην Προτείνετε την εγκατάσταση του Redis ή του Redis Sentinel στα ίδια μηχανήματα που εκτελείται η εφαρμογή Gitlab, καθώς αυτό αποδυναμώνει τη διαμόρφωση του HA σας. Ωστόσο, μπορείτε να επιλέξετε να εγκαταστήσετε Redis και Sentinel στο ίδιο μηχάνημα.
- Όλοι οι κόμβοι Redis πρέπει να είναι σε θέση να μιλούν ο ένας στον άλλο και να δέχονται εισερχόμενες συνδέσεις μέσω των θυρών Redis (6379) και Sentinel (26379) (εκτός αν αλλάξετε τις προεπιλεγμένες).
- Ο διακομιστής που φιλοξενεί την εφαρμογή GitLab πρέπει να έχει πρόσβαση στους κόμβους Redis.
- Προστατέψτε τους κόμβους από την πρόσβαση από εξωτερικά δίκτυα (Διαδίκτυο), χρησιμοποιώντας το Firewall.
Μεταβολή από μια υπάρχουσα εγκατάσταση μονής μηχανής
Εάν έχετε ήδη μια εγκατάσταση ενιαίας μηχανής gitlab που τρέχει, θα πρέπει πρώτα να αναπαραχθεί από αυτό.
Η εγκατάσταση μονής μηχανής είναι η αρχική Πρωταρχικός, Και τα άλλα 3 πρέπει να ρυθμιστούν ως Πανομοιότυπο δείχνοντας αυτό το μηχάνημα.
Μετά την παραίτηση από την αναπαραγωγή, πρέπει να σταματήσετε τις υπηρεσίες στην εγκατάσταση μιας μηχανής, για να περιστρέψετε το Πρωταρχικός Σε έναν από τους νέους κόμβους.
Κάντε τις απαιτούμενες αλλαγές στη διαμόρφωση και επανεκκινήστε ξανά τους νέους κόμβους.
Για να απενεργοποιήσετε το redis στην ενιαία εγκατάσταση, επεξεργασία/etc/gitlab/gitlab.RB:
ερυθρός['επιτρέπω'] = ψευδής Εάν αποτύχετε να αναπαράγετε πρώτα, μπορείτε να χάσετε δεδομένα (μη επεξεργασμένες εργασίες φόντου).
Βήμα 1. Ρύθμιση της πρωτογενούς στιγμιότυπου Redis
- Ssh στο Πρωταρχικός Διακομιστής redis.
- Λήψη/εγκατάσταση του πακέτου Omnibus gitlab που θέλετε να χρησιμοποιήσετε Βήματα 1 και 2 Από τη σελίδα λήψης Gitlab.
- Βεβαιωθείτε ότι έχετε επιλέξει το σωστό πακέτο Omnibus, με την ίδια έκδοση και τύπο (κοινότητα, εκδόσεις επιχειρήσεων) της τρέχουσας εγκατάστασής σας.
- Μην ολοκληρώσετε άλλα βήματα στη σελίδα λήψης.
- Επεξεργασία/etc/gitlab/gitlab.RB και προσθέστε τα περιεχόμενα:
# Καθορίστε τον ρόλο του διακομιστή ως "redis_master_role" ρόλοι ['REDIS_MASTER_ROLE'] # Διεύθυνση IP που δείχνει μια τοπική IP που μπορούν να φτάσουν τα άλλα μηχανήματα. # Μπορείτε επίσης να ορίσετε δεσμεύσεις στο '0.0.0.0 'που ακούνε σε όλες τις διεπαφές. # Εάν πρέπει πραγματικά να δεσμεύσετε ένα εξωτερικό προσβάσιμο IP, φτιάξτε # Σίγουρα προσθέτετε επιπλέον κανόνες τείχους προστασίας για να αποτρέψετε την μη εξουσιοδοτημένη πρόσβαση. ερυθρός['δένω'] = '10.0.0.1 ' # Ορίστε μια θύρα, ώστε ο Redis να μπορεί να ακούσει τα αιτήματα TCP που επιτρέπει σε άλλους # Μηχανές για να συνδεθείτε σε αυτό. ερυθρός['Λιμάνι'] = 6379 # Ρυθμίστε τον έλεγχο ταυτότητας κωδικού πρόσβασης για redis (χρησιμοποιήστε τον ίδιο κωδικό πρόσβασης σε όλους τους κόμβους). ερυθρός['Κωδικός πρόσβασης'] = «Redis-Password-Goes-Here» gitlab_rails['auto_migrate'] = ψευδής ΣΗΜΕΙΩΣΗ: Μπορείτε να καθορίσετε πολλούς ρόλους όπως ο Sentinel και ο Redis ως: ρόλοι [‘redis_sentinel_role’, ‘redis_master_role’] . Διαβάστε περισσότερα για τους ρόλους.
Βήμα 2. Ρύθμιση των περιπτώσεων Redis Replica Redis
- Ssh στο πανομοιότυπο Διακομιστής redis.
- Λήψη/εγκατάσταση του πακέτου Omnibus gitlab που θέλετε να χρησιμοποιήσετε Βήματα 1 και 2 Από τη σελίδα λήψης Gitlab.
- Βεβαιωθείτε ότι έχετε επιλέξει το σωστό πακέτο Omnibus, με την ίδια έκδοση και τύπο (κοινότητα, εκδόσεις επιχειρήσεων) της τρέχουσας εγκατάστασής σας.
- Μην ολοκληρώσετε άλλα βήματα στη σελίδα λήψης.
- Επεξεργασία/etc/gitlab/gitlab.RB και προσθέστε τα περιεχόμενα:
# Καθορίστε τον ρόλο του διακομιστή ως "REDIS_REPLICA_ROLE" ρόλοι ['REDIS_REPLICA_ROLE'] # Διεύθυνση IP που δείχνει μια τοπική IP που μπορούν να φτάσουν τα άλλα μηχανήματα. # Μπορείτε επίσης να ορίσετε δεσμεύσεις στο '0.0.0.0 'που ακούνε σε όλες τις διεπαφές. # Εάν πρέπει πραγματικά να δεσμεύσετε ένα εξωτερικό προσβάσιμο IP, φτιάξτε # Σίγουρα προσθέτετε επιπλέον κανόνες τείχους προστασίας για να αποτρέψετε την μη εξουσιοδοτημένη πρόσβαση. ερυθρός['δένω'] = '10.0.0.2 ' # Ορίστε μια θύρα, ώστε ο Redis να μπορεί να ακούσει τα αιτήματα TCP που επιτρέπει σε άλλους # Μηχανές για να συνδεθείτε σε αυτό. ερυθρός['Λιμάνι'] = 6379 # Ο ίδιος κωδικός πρόσβασης για τον έλεγχο ταυτότητας Redis που ρυθμίζετε για τον κύριο κόμβο. ερυθρός['Κωδικός πρόσβασης'] = «Redis-Password-Goes-Here» # Η IP του πρωτογενούς κόμβου Redis. ερυθρός['master_ip'] = '10.0.0.1 ' # Θύρα του Primary Redis Server, Uncomment να αλλάξει σε μη προεπιλογή. Προεπιλογή # έως `6379 '. #redis ['master_port'] = 6379 σούπο άγγιγμα /etc/gitlab/skip-auto-reconfigure ΣΗΜΕΙΩΣΗ: Μπορείτε να καθορίσετε πολλούς ρόλους όπως ο Sentinel και ο Redis ως: ρόλοι [‘redis_sentinel_role’, ‘redis_master_role’] . Διαβάστε περισσότερα για τους ρόλους.
Αυτές οι τιμές δεν πρέπει να αλλάξουν ξανά στο/etc/gitlab/gitlab.RB μετά από μια αποτυχία, καθώς οι κόμβοι διαχειρίζονται από τους Sentinels, και ακόμη και μετά από μια αναδιαμόρφωση Gitlab-CTL, παίρνουν τη διαμόρφωσή τους αποκατασταθεί από τους ίδιους Sentinels.
Βήμα 3. Ρύθμιση των περιπτώσεων Sentinel Redis
Σημείωση: Εάν χρησιμοποιείτε μια εξωτερική παρουσία Redis Sentinel, φροντίστε να αποκλείσετε την παράμετρο απαιτήσεων από τη διαμόρφωση Sentinel. Αυτή η παράμετρος αναγκάζει τους πελάτες να αναφέρουν τον έλεγχο ταυτότητας NOAuth που απαιτείται. . Redis Sentinel 3.2.Το x δεν υποστηρίζει τον έλεγχο ταυτότητας κωδικού πρόσβασης.
Τώρα που έχουν ρυθμιστεί όλοι οι διακομιστές Redis, ας διαμορφώσουμε τους διακομιστές Sentinel.
Εάν δεν είστε σίγουροι αν οι διακομιστές σας Redis λειτουργούν και αναπαράγουν σωστά, διαβάστε την αντιγραφή αντιμετώπισης προβλημάτων και διορθώστε το πριν προχωρήσετε με την εγκατάσταση Sentinel.
Πρέπει να έχετε τουλάχιστον 3 διακομιστές Sentinel Redis και πρέπει να είναι το καθένα σε ανεξάρτητο μηχάνημα. Μπορείτε να τα διαμορφώσετε στα ίδια μηχανήματα όπου έχετε ρυθμίσει τους άλλους διακομιστές Redis.
Με το Gitlab Enterprise Edition, μπορείτε να χρησιμοποιήσετε το πακέτο Omnibus για να ρυθμίσετε πολλαπλές μηχανές με το Daemon Sentinel.
- SSH στο διακομιστή που φιλοξενεί το Redis Sentinel.
- Μπορείτε να παραλείψετε αυτό το βήμα εάν το Sentinels φιλοξενείται στον ίδιο κόμβο με τις άλλες περιπτώσεις Redis.Λήψη/εγκατάσταση του πακέτου Omnibus Gitlab Enterprise Edition χρησιμοποιώντας Βήματα 1 και 2 Από τη σελίδα λήψης Gitlab.
- Βεβαιωθείτε ότι έχετε επιλέξει το σωστό πακέτο Omnibus, με την ίδια έκδοση που εκτελείται η εφαρμογή Gitlab.
- Μην ολοκληρώσετε άλλα βήματα στη σελίδα λήψης.
- Επεξεργασία/etc/gitlab/gitlab.RB και προσθέστε τα περιεχόμενα (εάν εγκαθιστάτε τα Sentinels στον ίδιο κόμβο με τις άλλες περιπτώσεις Redis, ορισμένες τιμές μπορεί να είναι αντίγραφα παρακάτω):
ρόλοι ['REDIS_SENTINEL_ROLE'] # Πρέπει να είναι το ίδιο σε κάθε κόμβο Sentinel ερυθρός['master_name'] = «Gitlab-redis» # Ο ίδιος κωδικός πρόσβασης για τον έλεγχο ταυτότητας Redis που ρυθμίζετε για τον κύριο κόμβο. ερυθρός['master_password'] = «Redis-Password-Goes-Here» # Η IP του πρωτογενούς κόμβου Redis. ερυθρός['master_ip'] = '10.0.0.1 ' # Ορίστε μια θύρα, ώστε ο Redis να μπορεί να ακούσει τα αιτήματα TCP που επιτρέπει σε άλλους # Μηχανές για να συνδεθείτε σε αυτό. ερυθρός['Λιμάνι'] = 6379 # Θύρα του Primary Redis Server, Uncomment να αλλάξει σε μη προεπιλογή. Προεπιλογή # έως `6379 '. #redis ['master_port'] = 6379 ## Ρύθμιση παραμέτρων Sentinel φρουρός['δένω'] = '10.0.0.1 ' # Θύρα που ο Sentinel ακούει, χωρίς να αλλάξει σε μη προεπιλογή. Προεπιλογή # έως `26379 '. # Sentinel ['Port'] = 26379 ## Η απαρτία πρέπει να αντικατοπτρίζει το ποσό των φρουρών ψηφοφορίας που χρειάζεται για να ξεκινήσει μια αποτυχία. Η τιμή ## δεν πρέπει να είναι μεγαλύτερη από την ποσότητα των Sentinels. ## ## Η απαρτία μπορεί να χρησιμοποιηθεί για να συντονίσει τον Sentinel με δύο τρόπους: ## 1. Εάν η απαρτία έχει οριστεί σε τιμή μικρότερη από την πλειοψηφία των φρουρών ## Αναπτύσσουμε, βασικά κάνουμε το Sentinel πιο λογικό στις πρωτογενείς αποτυχίες, ## Η ενεργοποίηση μιας αποτυχίας μόλις ακόμη και μια μειοψηφία των φρουρών δεν είναι πλέον ## μπορεί να μιλήσει με την πρωτοβάθμια. ## 1. Εάν μια απαρτία έχει οριστεί σε τιμή μεγαλύτερη από την πλειοψηφία των φρουρών, είμαστε ## Κάνοντας το Sentinel σε θέση να αποκατασταθεί μόνο όταν υπάρχει πολύ μεγάλος αριθμός (μεγαλύτερος ## από την πλειοψηφία) των καλά συνδεδεμένων Sentinels που συμφωνούν για την πρωταρχική ύπαρξη.μικρό φρουρός['απαρτία'] = 2 ## Εξετάστε το μη ανταποκρινόμενο διακομιστή κάτω μετά το x ποσό MS. # sentinel ['down_after_milliseconds'] = 10000 ## Καθορίζει το χρονικό όριο αποτυχίας σε χιλιοστά του δευτερολέπτου. Χρησιμοποιείται με πολλούς τρόπους: ## ## - Ο χρόνος που απαιτείται για την εκ νέου εκκίνηση μιας αποτυχίας μετά από μια προηγούμενη αποτυχία ήταν ## έχει ήδη δοκιμαστεί εναντίον του ίδιου πρωτοβάθμιου από ένα δεδομένο Sentinel, είναι δύο ## φορές το χρονικό όριο αποτυχίας. ## ## - ο χρόνος που απαιτείται για ένα αντίγραφο αντίγραφο σε λάθος πρωτογενές σύμφωνα με ## σε μια τρέχουσα διαμόρφωση Sentinel, που θα αναγκαστεί να αναπαραχθεί ## με το σωστό πρωτεύον, είναι ακριβώς το χρονικό όριο αποτυχίας (μετρώντας από τότε ## Τη στιγμή που ένας δείκτης ανίχνευσε την εσφαλμένη διαμόρφωση). ## ## - ο χρόνος που απαιτείται για να ακυρώσετε μια αποτυχία που βρίσκεται ήδη σε εξέλιξη αλλά ## δεν παρήγαγε καμία αλλαγή διαμόρφωσης (replicaf κανείς ακόμα όχι ## αναγνωρίστηκε από το προωθούμενο αντίγραφο). ## ## - ο μέγιστος χρόνος που μια αποτυχία σε εξέλιξη περιμένει να είναι όλο το αντίγραφο ## αναδιαμορφώθηκε ως αντίγραφα του νέου πρωτεύοντος. Ωστόσο, ακόμη και μετά από αυτό το διάστημα ## Τα αντίγραφα αναδιαμορφώνονται από τους Sentinels ούτως ή άλλως, αλλά όχι με ## Η ακριβής εξέλιξη παράλληλων-Syncs όπως καθορίζεται. # Sentinel ['FAISOVER_TIMEOUT'] = 60000 σούπο άγγιγμα /etc/gitlab/skip-auto-reconfigure Βήμα 4. Ρύθμιση της εφαρμογής Gitlab
Το τελευταίο μέρος είναι να ενημερώσετε τον κύριο διακομιστή εφαρμογών Gitlab των διακομιστών Sentinels Redis και τα διαπιστευτήρια ελέγχου ταυτότητας.
Μπορείτε να ενεργοποιήσετε ή να απενεργοποιήσετε την υποστήριξη Sentinel ανά πάσα στιγμή σε νέες ή υπάρχουσες εγκαταστάσεις. Από την άποψη της εφαρμογής Gitlab, το μόνο που απαιτεί είναι τα σωστά διαπιστευτήρια για τους κόμβους Sentinel.
Παρόλο που δεν απαιτεί μια λίστα με όλους τους κόμβους Sentinel, σε περίπτωση αποτυχίας, πρέπει να έχει πρόσβαση σε τουλάχιστον ένα από τα αναφερόμενα.
Σημείωση: Τα παρακάτω βήματα θα πρέπει να εκτελούνται στον διακομιστή εφαρμογών GitLab, ο οποίος ιδανικά δεν πρέπει να έχει redis ή sentinels σε αυτό για μια ρύθμιση HA.
- SSH στον διακομιστή όπου εγκαθίσταται η εφαρμογή GitLab.
- Επεξεργασία/etc/gitlab/gitlab.RB και προσθέστε/αλλάξτε τις ακόλουθες γραμμές:
## πρέπει να είναι το ίδιο σε κάθε κόμβο Sentinel ερυθρός['master_name'] = «Gitlab-redis» ## Ο ίδιος κωδικός πρόσβασης για τον έλεγχο ταυτότητας Redis που ρυθμίζετε για τον κύριο κόμβο. ερυθρός['master_password'] = «Redis-Password-Goes-Here» ## Μια λίστα με τους Sentinels με `host` και` port ' gitlab_rails['Redis_sentinels'] = [ 'πλήθος' => '10.0.0.1 ', 'Λιμάνι' => 26379>, 'πλήθος' => '10.0.0.2 ', 'Λιμάνι' => 26379>, 'πλήθος' => '10.0.0.3 ', 'Λιμάνι' => 26379> ] Βήμα 5. Ενεργοποίηση παρακολούθησης
Εάν ενεργοποιήσετε την παρακολούθηση, πρέπει να είναι ενεργοποιημένη όλα Διακομιστές redis.
- Βεβαιωθείτε ότι έχετε συλλέξει το Consul_Server_Nodes, οι οποίες είναι οι διευθύνσεις IP ή τα αρχεία DNS των κόμβων του διακομιστή προέλευσης, για το επόμενο βήμα. Σημειώστε ότι παρουσιάζονται ως y.Y.Y.Y y Consul1.γουρουνάκι.παράδειγμα.comz.Z.Z.Z
- Δημιουργία/επεξεργασία/etc/gitlab/gitlab.RB και προσθέστε την ακόλουθη διαμόρφωση:
# Ενεργοποίηση ανακάλυψης υπηρεσιών για τον Προμηθέα πρόξενος['επιτρέπω'] = αληθής πρόξενος[«Monitoring_service_discovery»] = αληθής # Αντικαταστήστε τους κράτους # Y.Y.Y.Y y Consul1.γουρουνάκι.παράδειγμα.comz.Z.Z.Z # με τις διευθύνσεις των κόμβων του διακομιστή προέλευσης πρόξενος['διαμόρφωση'] = retry_join: %w (y.Y.Y.Y y Consul1.γουρουνάκι.παράδειγμα.comz.Z.Z.Ζ), > # Ορίστε τις διευθύνσεις του δικτύου που ακούν οι εξαγωγείς node_exporter['listen_address'] = '0.0.0.0: 9100 ' redis_exporter['listen_address'] = '0.0.0.0: 9121 ' Παράδειγμα ελάχιστης διαμόρφωσης με 1 πρωτογενή, 2 αντίγραφα και 3 Sentinels
Σε αυτό το παράδειγμα θεωρούμε ότι όλοι οι διακομιστές διαθέτουν εσωτερική διασύνδεση δικτύου με IPS στις 10.0.0.x εύρος και ότι μπορούν να συνδεθούν μεταξύ τους χρησιμοποιώντας αυτά τα ips.
Σε μια πραγματική χρήση, θα δημιουργήσατε επίσης κανόνες τείχους προστασίας για να αποτρέψετε την μη εξουσιοδοτημένη πρόσβαση από άλλα μηχανήματα και να αποκλείετε την κυκλοφορία από το εξωτερικό (Διαδίκτυο).
Χρησιμοποιούμε τους ίδιους 3 κόμβους με Ερυθρός + Φρουρός Τοπολογία που συζητήθηκε στο Redis Setup Επισκόπηση και Sentinel Setup Επισκόπηση Τεκμηρίωση.
Εδώ είναι μια λίστα και περιγραφή του καθενός μηχανή και το εκχωρημένο IP:
- 10.0.0.1: Redis Primary + Sentinel 1
- 10.0.0.2: Redis Replica 1 + Sentinel 2
- 10.0.0.3: Redis Replica 2 + Sentinel 3
- 10.0.0.4: Εφαρμογή Gitlab
Μετά την αρχική διαμόρφωση, εάν ξεκινήσει μια αποτυχία από τους κόμβους Sentinel, οι κόμβοι Redis αναδιαμορφώνονται και το Πρωταρχικός αλλάζει μόνιμα (συμπεριλαμβανομένου του Redis.conf) από τον ένα κόμβο στον άλλο, μέχρι να ξεκινήσει ξανά μια νέα αποτυχία.
Το ίδιο συμβαίνει με τον Sentinel.Συνεχώς που παρεμποδίζεται μετά την αρχική εκτέλεση, αφού ένας νέος κόμβος Sentinel αρχίζει να παρακολουθεί το Πρωταρχικός, ή ένα failover προάγει ένα διαφορετικό Πρωταρχικός κόμβος.
Παράδειγμα διαμόρφωσης για Redis Primary και Sentinel 1
ρόλοι ['REDIS_SENTINEL_ROLE', 'REDIS_MASTER_ROLE'] ερυθρός['δένω'] = '10.0.0.1 ' ερυθρός['Λιμάνι'] = 6379 ερυθρός['Κωδικός πρόσβασης'] = «Redis-Password-Goes-Here» ερυθρός['master_name'] = «Gitlab-redis» # Πρέπει να είναι το ίδιο σε κάθε κόμβο Sentinel ερυθρός['master_password'] = «Redis-Password-Goes-Here» # Η ίδια τιμή που ορίζεται στο Redis ['Password'] στην κύρια περίπτωση ερυθρός['master_ip'] = '10.0.0.1 ' # IP της αρχικής πρωτογενούς redis #REDIS ['master_port'] = 6379 # Θύρα της αρχικής πρωτογενούς στιγμιότυπου Redis, Uncomment To Change σε μη προεπιλογή φρουρός['δένω'] = '10.0.0.1 ' # Sentinel ['Port'] = 26379 # Uncomment για να αλλάξετε την προεπιλεγμένη θύρα φρουρός['απαρτία'] = 2 # sentinel ['down_after_milliseconds'] = 10000 # Sentinel ['FAISOVER_TIMEOUT'] = 60000 Επαναπροσδιορισμός του Omnibus gitlab για να τεθούν σε ισχύ οι αλλαγές.
Παράδειγμα διαμόρφωσης για Redis Replica 1 και Sentinel 2
ρόλοι ['REDIS_SENTINEL_ROLE', 'REDIS_REPLICA_ROLE'] ερυθρός['δένω'] = '10.0.0.2 ' ερυθρός['Λιμάνι'] = 6379 ερυθρός['Κωδικός πρόσβασης'] = «Redis-Password-Goes-Here» ερυθρός['master_password'] = «Redis-Password-Goes-Here» ερυθρός['master_ip'] = '10.0.0.1 ' # IP του Primary Redis Server #REDIS ['master_port'] = 6379 # Λιμάνι του πρωτεύοντος διακομιστή redis, Uncomment to change σε μη προεπιλογή ερυθρός['master_name'] = «Gitlab-redis» # Πρέπει να είναι το ίδιο σε κάθε κόμβο Sentinel φρουρός['δένω'] = '10.0.0.2 ' # Sentinel ['Port'] = 26379 # Uncomment για να αλλάξετε την προεπιλεγμένη θύρα φρουρός['απαρτία'] = 2 # sentinel ['down_after_milliseconds'] = 10000 # Sentinel ['FAISOVER_TIMEOUT'] = 60000 Επαναπροσδιορισμός του Omnibus gitlab για να τεθούν σε ισχύ οι αλλαγές.
Παράδειγμα διαμόρφωσης για Redis Replica 2 και Sentinel 3
ρόλοι ['REDIS_SENTINEL_ROLE', 'REDIS_REPLICA_ROLE'] ερυθρός['δένω'] = '10.0.0.3 ' ερυθρός['Λιμάνι'] = 6379 ερυθρός['Κωδικός πρόσβασης'] = «Redis-Password-Goes-Here» ερυθρός['master_password'] = «Redis-Password-Goes-Here» ερυθρός['master_ip'] = '10.0.0.1 ' # IP του Primary Redis Server #REDIS ['master_port'] = 6379 # Λιμάνι του πρωτεύοντος διακομιστή redis, Uncomment to change σε μη προεπιλογή ερυθρός['master_name'] = «Gitlab-redis» # Πρέπει να είναι το ίδιο σε κάθε κόμβο Sentinel φρουρός['δένω'] = '10.0.0.3 ' # Sentinel ['Port'] = 26379 # Uncomment για να αλλάξετε την προεπιλεγμένη θύρα φρουρός['απαρτία'] = 2 # sentinel ['down_after_milliseconds'] = 10000 # Sentinel ['FAISOVER_TIMEOUT'] = 60000 Επαναπροσδιορισμός του Omnibus gitlab για να τεθούν σε ισχύ οι αλλαγές.
Παράδειγμα διαμόρφωσης για την εφαρμογή GitLab
ερυθρός['master_name'] = «Gitlab-redis» ερυθρός['master_password'] = «Redis-Password-Goes-Here» gitlab_rails['Redis_sentinels'] = [ 'πλήθος' => '10.0.0.1 ', 'Λιμάνι' => 26379>, 'πλήθος' => '10.0.0.2 ', 'Λιμάνι' => 26379>, 'πλήθος' => '10.0.0.3 ', 'Λιμάνι' => 26379> ] Επαναπροσδιορισμός του Omnibus gitlab για να τεθούν σε ισχύ οι αλλαγές.
Προηγμένη διαμόρφωση
Το Omnibus Gitlab διαμορφώνει μερικά πράγματα πίσω από τις κουρτίνες για να διευκολύνει τη ζωή των sysadmins. Εάν θέλετε να μάθετε τι συμβαίνει κάτω από τη διαμονή, συνεχίστε να διαβάζετε.
Εκτέλεση πολλαπλών συστάδων Redis
Το Omnibus Gitlab υποστηρίζει τη λειτουργία ξεχωριστών περιπτώσεων Redis και Sentinel για διαφορετικές τάξεις εμμονής.
| Τάξη | Σκοπός |
|---|---|
| κρύπτη | Αποθηκεύστε αποθηκευμένα δεδομένα. |
| ουρές | Αποθηκεύστε εργασίες φόντου Sidekiq. |
| shared_state | Αποθηκεύστε τη συνεδρία και άλλα επίμονα δεδομένα. |
| δράση | Pub/Sub Queue Backend για ActionCable. |
| trace_chunks | Αποθηκεύστε δεδομένα κομματιών CI Trace. |
Για να κάνει αυτό το έργο με τον Sentinel:
- Διαμορφώστε τις διαφορετικές περιπτώσεις Redis/Sentinels με βάση τις ανάγκες σας.
- Για κάθε περίπτωση εφαρμογής Rails, επεξεργαστείτε το/etc/gitlab/gitlab.Αρχείο RB:
gitlab_rails['redis_cache_instance'] = Redis_cache_url gitlab_rails['REDIS_QUEUES_INSTANCE'] = Redis_queues_url gitlab_rails['REDIS_SHARED_STATE_INSTANCE'] = Redis_shared_state_url gitlab_rails['redis_actioncable_instance'] = Redis_actioncable_url gitlab_rails['REDIS_TRACE_CHUNKS_INSTANCE'] = Redis_trace_chunks_url # Ρύθμιση των Sentinels gitlab_rails['redis_cache_sentinels'] = [ πλήθος: Redis_cache_sentinel_host, Λιμάνι: 26379 >, πλήθος: Redis_cache_sentinel_host2, Λιμάνι: 26379 > ] gitlab_rails['Redis_queues_sentinels'] = [ πλήθος: Redis_queues_sentinel_host, Λιμάνι: 26379 >, πλήθος: Redis_queues_sentinel_host2, Λιμάνι: 26379 > ] gitlab_rails['Redis_shared_state_sentinels'] = [ πλήθος: Shared_state_sentinel_host, Λιμάνι: 26379 >, πλήθος: Shared_state_sentinel_host2, Λιμάνι: 26379 > ] gitlab_rails['redis_actioncable_sentinels'] = [ πλήθος: ActionCable_sentinel_host, Λιμάνι: 26379 >, πλήθος: ActionCable_sentinel_host2, Λιμάνι: 26379 > ] gitlab_rails['redis_trace_chunks_sentinels'] = [ πλήθος: Trace_chunks_sentinel_host, Λιμάνι: 26379 >, πλήθος: Trace_chunks_sentinel_host2, Λιμάνι: 26379 > ] - Οι διευθύνσεις redis πρέπει να έχουν τη μορφή: redis: //: password@sentinel_primary_name, πού:
- Ο κωδικός πρόσβασης είναι ο κωδικός πρόσβασης PlainText για την παρουσία Redis.
- Sentinel_Primary_Name είναι το Sentinel Primary Name Set με Redis [‘master_name’], για παράδειγμα Gitlab-Redis-Cache .
ξιφία Το Gitlab-CTL αναδιαμορφώνειΣημείωση: Για κάθε κλάση επιμονής, η Gitlab προεπιλογές στη χρήση της διαμόρφωσης που καθορίζεται στο gitlab_rails [‘redis_sentinels’] εκτός αν αντικατασταθεί από τις ρυθμίσεις που περιγράφηκε προηγουμένως.
Υπηρεσίες λειτουργίας ελέγχου
Στο προηγούμενο παράδειγμα, χρησιμοποιήσαμε redis_sentinel_role και redis_master_role που απλοποιεί την ποσότητα των αλλαγών διαμόρφωσης.
Εάν θέλετε περισσότερο έλεγχο, εδώ είναι αυτό που ο καθένας σας θέτει αυτόματα όταν ενεργοποιείται:
## Redis Sentinel Ρόλος redis_sentinel_role['επιτρέπω'] = αληθής # Όταν είναι ενεργοποιημένος ο ρόλος Sentinel, οι ακόλουθες υπηρεσίες είναι επίσης ενεργοποιημένες φρουρός['επιτρέπω'] = αληθής # Οι ακόλουθες υπηρεσίες είναι απενεργοποιημένες ερυθρός['επιτρέπω'] = ψευδής εκκίνηση['επιτρέπω'] = ψευδής νιφάδα['επιτρέπω'] = ψευδής postgresql['επιτρέπω'] = ψευδής gitlab_rails['επιτρέπω'] = ψευδής αίθουσα αποστολής['επιτρέπω'] = ψευδής ------- ## Redis Primary/Replica ρόλος redis_master_role['επιτρέπω'] = αληθής # Ενεργοποιήστε μόνο ένα από αυτά redis_replica_role['επιτρέπω'] = αληθής # Ενεργοποιήστε μόνο ένα από αυτά # Όταν είναι ενεργοποιημένοι ο ρόλος του Redis Primary ή Replica, είναι οι ακόλουθες υπηρεσίες # ενεργοποιημένο απενεργοποιημένο. Εάν οι ρόλοι του Redis και Sentinel συνδυάζονται, και οι δύο # Οι υπηρεσίες είναι ενεργοποιημένες. # Οι ακόλουθες υπηρεσίες είναι απενεργοποιημένες φρουρός['επιτρέπω'] = ψευδής εκκίνηση['επιτρέπω'] = ψευδής νιφάδα['επιτρέπω'] = ψευδής postgresql['επιτρέπω'] = ψευδής gitlab_rails['επιτρέπω'] = ψευδής αίθουσα αποστολής['επιτρέπω'] = ψευδής # Για τον ρόλο Redis Replica, αλλάξτε αυτή τη ρύθμιση από την προεπιλεγμένη «αληθή» σε «ψευδή»: ερυθρός['κύριος'] = ψευδήςΜπορείτε να βρείτε τα σχετικά χαρακτηριστικά που ορίζονται στο gitlab_rails.rb .
Αντιμετώπιση προβλημάτων
Περαιτέρω ανάγνωση
- Αρχιτεκτονικές αναφοράς
- Διαμόρφωση της βάσης δεδομένων
- Διαμορφώστε το NFS
- Διαμορφώστε τους εξισορρόπους φορτίου
Redis Sentinel
Προσοχή. Ο υποβληθέντος μηχανισμός Sentinel Redis θα αποσυρθεί στην έκδοση Creatio 7 Έκδοση 7.18.3. Συνιστούμε να μεταβείτε στο σύμπλεγμα Redis μετά την ενημέρωση του Creatio στην έκδοση 7.18.0.
Ο μηχανισμός Sentinel Redis χρησιμοποιείται για την παροχή ανοχής σφάλματος για τα αποθετήρια Redis που χρησιμοποιείται από το Creatio. Παρέχει τα ακόλουθα χαρακτηριστικά:
- Παρακολούθηση. Ο Sentinel εξασφαλίζει ότι οι περιπτώσεις Master/Slave λειτουργούν σωστά στο Redis.
- Ειδοποιήσεις. Οι διαχειριστές του συστήματος Sentinel ειδοποιούν εάν εμφανιστούν σφάλματα που σχετίζονται με την εμφάνιση στο Redis.
- Αυτόματη αποτυχία. Εάν η παρουσία του Redis Master δεν λειτουργεί σωστά, ο Sentinel προωθεί μία από τις περιπτώσεις σκλάβων σε έναν κύριο και αναδιαμορφώνει τα υπόλοιπα να συνεργαστούν με τη νέα κύρια παρουσία. Το Creatio ενημερώνεται επίσης για τη νέα διεύθυνση σύνδεσης Redis.
Προσοχή. Το Creatio δεν υποστηρίζει συστάδες Redis στην έκδοση 7.17.4 και νωρίτερα.
Το Redis Sentinel είναι ένα κατανεμημένο σύστημα που έχει σχεδιαστεί για να εκτελεί πολλαπλές περιπτώσεις που συνεργάζονται μαζί. Αυτή η προσέγγιση έχει τα ακόλουθα πλεονεκτήματα:
- Το σφάλμα καταχωρείται μόνο εάν οι πολλαπλές περιπτώσεις Sentinel (που αποτελούν απαρτία) συμφωνούν ότι η κύρια παρουσία δεν είναι διαθέσιμη στο Redis. Αυτό γίνεται για να μειωθεί ο αριθμός των ψευδών ειδοποιήσεων.
- Ο μηχανισμός Sentinel θα είναι ακόμα διαθέσιμος ακόμη και αν οι πολλαπλές περιπτώσεις Sentinel δεν ανταποκρίνονται ή δεν λειτουργούν εντελώς. Αυτό γίνεται για την αύξηση της ανοχής σφάλματος.
Αξιοσημείωτες λεπτομέρειες Sentinel
- Απαιτούνται τουλάχιστον τρεις περιπτώσεις Sentinel για μια ισχυρή ανάπτυξη. Αυτές οι περιπτώσεις πρέπει να τοποθετηθούν σε υπολογιστές ή εικονικές μηχανές που πιστεύεται ότι αποτυγχάνουν με ανεξάρτητο τρόπο, εγώ. μι., Τα σφάλματα που καταχωρήθηκαν από αυτές τις περιπτώσεις Sentinel θα πρέπει να προκληθούν από διαφορετικές πηγές. Για παράδειγμα, οι υπολογιστές βρίσκονται σε διαφορετικές ζώνες δικτύου.
- Λόγω της ασύγχρονης αναπαραγωγής, το κατανεμημένο σύστημα (Sentinel + Redis) δεν εγγυάται ότι όλα τα δεδομένα θα αποθηκευτούν εάν συμβεί αποτυχία.
- Η ανοχή σφάλματος της διαμόρφωσης πρέπει να παρακολουθείται τακτικά και να επιβεβαιώνεται περαιτέρω μέσω δοκιμών που προσομοιώνουν αποτυχίες.
- Το Docker Port Remapping δημιουργεί ορισμένα προβλήματα με τις διαδικασίες Sentinel (δείτε το μπλοκ Sentinel, Docker, NAT και πιθανά ζητήματα της τεκμηρίωσης Sentinel).
Ελάχιστες απαιτήσεις ανοχής σφάλματος για το Redis Sentinel
- M1, M2 είναι κύριες περιπτώσεις Redis.
- R1, R2, R3 είναι περιπτώσεις σκλάβων Redis.
- S1, S2, S3 είναι περιπτώσεις Sentinel.
- Το C1 είναι η εφαρμογή Creatio.
- [M2] προωθείται παράδειγμα (Ε. σολ., από σκλάβο σε κύριο).
Συνιστούμε να χρησιμοποιήσετε μια διαμόρφωση με τουλάχιστον τρεις περιπτώσεις Redis και Sentinel (δείτε το παράδειγμα 2: Βασική ρύθμιση με τρία κουτιά μπλοκ της τεκμηρίωσης Sentinel). Αυτή η διαμόρφωση βασίζεται σε τρεις κόμβους (υπολογιστές ή εικονικές μηχανές), το καθένα που περιέχει τρέχουσες περιπτώσεις τόσο του Redis όσο και του Sentinel (σύκο. 1). Δύο περιπτώσεις Sentinel (S2 και S3) αποτελούν απαρτία (ο αριθμός των περιπτώσεων που απαιτούνται για να εξασφαλιστεί η ανοχή σφάλματος της τρέχουσας κύριας στιγμής).
Σύκο. 1 Η διαμόρφωση των τριών κόμβων: Quorum = 2

Κατά τη διάρκεια της τακτικής λειτουργίας, η εφαρμογή Creatio Client γράφει τα δεδομένα της σε μια κύρια παρουσία (M1). Αυτά τα δεδομένα στη συνέχεια αναπαράγονται ασύγχρονα στις περιπτώσεις σκλάβων (R2 και R3).
Εάν η παρουσία του Redis Master (M1) δεν είναι διαθέσιμη, οι περιπτώσεις Sentinel (S1 και S2) θεωρούν αυτό μια αποτυχία και ξεκινήστε τη διαδικασία αποτυχίας. Μία από τις περιπτώσεις Redis Slave (R2 ή R3) προωθείται στον πλοίαρχο, επιτρέποντας στην εφαρμογή να το χρησιμοποιήσει αντί για την προηγούμενη κύρια παρουσία.
Προσοχή. Υπάρχει κίνδυνος απώλειας αρχείων σε οποιαδήποτε διαμόρφωση Sentinel, η οποία χρησιμοποιεί ασύγχρονη αντιγραφή δεδομένων. Αυτό συμβαίνει εάν τα δεδομένα δεν γράφτηκαν στο παράδειγμα σκλάβου, προωθήθηκαν σε κύριο.
Σημείωση. Άλλες πιθανές διαμορφώσεις ανεκτικών σφαλμάτων περιγράφονται στην τεκμηρίωση Sentinel .
Ζητήματα διαχωρισμού δικτύου
Εάν η σύνδεση του δικτύου χάσει, υπάρχει ο κίνδυνος ότι το Creatio θα συνεχίσει να συνεργάζεται με την παλιά παρουσία του Redis Master (M1), ενώ έχει ήδη εκχωρηθεί η νεοσυσταθείσα κύρια παρουσία ([M2]). 2).
Σύκο. 2 διαχωρισμός δικτύου

Αυτό αποφεύγεται εύκολα επιτρέποντας την επιλογή να σταματήσει η γραφή δεδομένων σε περίπτωση που η κύρια παρουσία ανιχνεύσει ότι ο αριθμός των περιπτώσεων σκλάβων έχει μειωθεί. Για να το κάνετε αυτό, ρυθμίστε τις ακόλουθες τιμές στο Redis.αρχείο διαμόρφωσης conf της κύριας στιγμής Redis:
ελάχιστο-σκλάβοι-προς-write 1 λεπτό-σκλάβοι-max-lag 10
Ως αποτέλεσμα, εάν η παρουσία Redis Master (M1) δεν θα μπορέσει να μεταφέρει δεδομένα σε τουλάχιστον μία περίπτωση σκλάβων, θα σταματήσει να λαμβάνει δεδομένα σε 10 δευτερόλεπτα μετά την πρώτη προσπάθεια. Μόλις το σύστημα ανακτηθεί από περιπτώσεις Sentinel που αποτελούν απαρτία (S2 και S3), η εφαρμογή Creatio (C1) θα αναδιαμορφωθεί για να συνεργαστεί με το νέο Master -Instance (M2).
Προσοχή. Εάν το δίκτυο αποκατασταθεί, η κύρια παρουσία δεν θα είναι σε θέση να συνεχίσει αυτόματα τη λειτουργία του μετά τη διακοπή. Εάν το υπόλοιπο redis slave instance (R3) επίσης δεν είναι διαθέσιμη, το σύστημα θα σταματήσει να λειτουργεί εντελώς.
Απαιτήσεις συστήματος
Το Redis είναι μια βάση δεδομένων στη μνήμη, επομένως η χωρητικότητα RAM και το ποσοστό απόδοσης είναι οι κύριες απαιτήσεις για τη σωστή λειτουργία του. Δεδομένου ότι η Redis είναι μια ενιαία εφαρμογή που χρησιμοποιεί έναν μόνο πυρήνα επεξεργαστή, ένας μόνο κόμβος (υπολογιστή ή εικονική μηχανή) με επεξεργαστή διπλού πυρήνα απαιτείται για να συνεργαστεί με ένα ενιαίο παράδειγμα Redis. Οι περιπτώσεις Sentinel απαιτούν σχετικά λίγους πόρους και μπορούν να τρέξουν στον ίδιο κόμβο με τον Redis.
Συνιστάται να αναπτύξετε redis και sentinel στο linux os.
Ο παρακάτω πίνακας δείχνει τις συνιστώμενες απαιτήσεις του συστήματος για έναν μόνο κόμβο (υπολογιστή ή εικονική μηχανή), ανάλογα με τον αριθμό των χρηστών Creatio.
Το σύμπλεγμα Redis χρειάζεται Sentinel?
Э э э э э э э э э э э э э э э э э э э э э э э э э э э э э э э э э э
Ы з з з з з з з и и и и п п п п п п з п з з з з з з з з з п. С п п п п п п п п п п п п п п п п п п п п п п п п п п п п п п п п п п п п п п п п п п п п п п п п п п п. ПOчем э э э э э э э э э э э п п п п п п п?
Э э э э э а а а а и е е з з л л л л л л л э э э э э э э э э э э э Κοιτάζοντας το ριμπάγ. С с п п п п п э э э э э э э э э э э э э э э э э э э э э э э э э э э э. Д э э э э д д д и и д д д ρίας н и д д д д д д д д д д д д д д д д д д д д д д д д д д д д д д д д д д д.
И и з а а а а а а а а ы ы з .. Е е е е д п п ж ж ж ж ж ж ж ж ж ж ж ж ж ж ж ж ж ж п п п п п п п п п п п п п п п п п. Орrρά. Пороннαι.
ПON п п е е а а τροφή пρέφ а а а а а τροφήλου. е е е и τροφή ее же жÉ в в ж и и и и ч ч.



