רדיס מספק זמינות גבוהה דרך מערכת מבוצעת של רדיס סנטינל. סנטינל עוזר לניטור של מופעי רדיס, זיהוי כשלים וביצוע החלפת תפקידים באופן אוטומטי, מאפשר לפריסת רדיס להתמודד עם סוגים שונים של כשלים.
הוא כולל ניטור של מופעי רדיס (ראשי ושעתוקים), תמיכה בהודעה לשירותים/תהליכים אחרים או למנהל המערכת דרך סקריפט, החלפת כשלון אוטומטית לקידום שעתוק להיות ראשי כאשר הראשי נופל וקונפיגורציה ללקוחות לגילוי של הראשי הנוכחי המציע שירות מסוים.
מאמר זה מדגים איך להגדיר את רדיס לזמינות גבוהה עם רדיס סנטינל ב-CentOS 8, כולל הגדרת סנטינלים, בדיקת מצב ההגדרה ובדיקת כשלון של סנטינל.
דרישות מוקדמות:
הגדרת סביבת בדיקה
Master Server and Sentinel1: 10.42.0.247 Redis Replica1 and Sentinel2: 10.42.0.21 Redis Replica2 and Sentinel3: 10.42.0.34

על פי מסמך התיעוד של Redis Sentinel, נדרש לפחות שלושה מופעים של Sentinel לפרויקט חזק. בהתחשב בסיטואציה שלנו לעיל, אם הראשי מתרסק, Sentinels2 ו-Sentinel3 יסכימו על הכשלון ויוכלו לאשר התמוטטות, מה שיאפשר להמשך פעולות לקוח.
שלב 1: הפעלת והפעלת שירות Redis Sentinel
1. ב-CentOS 8, שירות Redis Sentinel מותקן יחד עם שרת Redis (שכבר עשינו ב-Redis Replication Setup).
כדי להפעיל את שירות Redis sentinel ולאפשר לו להתחיל אוטומטית בהתנעת המערכת, השתמש בפקודות systemctl הבאות. כמו כן, תקבלו אישור שהוא פועל ופועל על ידי בדיקת status שלו (עשו זאת על כל הצמתים):
# systemctl start redis-sentinel # systemctl enable redis-sentinel # systemctl status redis-sentinel

שלב 2: הגדרת Redis Sentinel על כל צמתי Redis
2. בסעיף זה, אנו מסבירים כיצד להגדיר Sentinel על כל הצמתים שלנו. שירות Sentinel יש פורמט תצוגה דומה לשרת Redis. כדי להגדיר אותו, השתמש בקובץ הגדרות /etc/redis-sentinel.conf המתועד עצמאית.
ראשית, צור גיבוי של הקובץ המקורי ופתח אותו לעריכה.
# cp /etc/redis-sentinel.conf /etc/redis-sentinel.conf.orig # vi /etc/redis-sentinel.conf
3. לפי ברירת מחדל, Sentinel מאזין בפורט 26379, ודא זאת בכל המופעים. שים לב שעליך להשאיר את הפרמטר bind מפורט (או להגדיר אותו כ-0.0.0.0).
port 26379

4. לאחר מכן, עליך לספר ל-Sentinel לצפות על ה-master שלנו, ולשקול אותו כ"מצב נפילה אובייקטיבית" רק אם לפחות 2 סנטינלים מסכימים. ניתן להחליף את "mymaster" בשם מותאם אישית.
#On Master Server and Sentinel1 sentinel monitor mymaster 127.0.0.1 6379 2 #On Replica1 and Sentinel2 sentinel monitor mymaster 10.42.0.247 6379 2 #On Replica1 and Sentinel3 sentinel monitor mymaster 10.42.0.247 6379 2

חשוב: ההצהרה של הצפיין של הסנטינל חייבת להיות מוצבת לפני ההצהרת auth-pass של הסנטינל כדי למנוע את השגיאה "אין מאסטר כזה עם השם המצויין" בעת איתחול שירות הסנטינל מחדש.
5. אם למאסטר של Redis שאנו מצפים לצפות עליו יש סיסמה (במקרה שלנו יש למאסטר), ספק את הסיסמה כך שהמופע של Sentinel יוכל לאמת עם המופע המוגן.
sentinel auth-pass mymaster Securep@55Here

6. לאחר מכן, הגדר את מספר המילישניות שבהן יש להיות המאסטר (או כל רפליקה או סנטינל מצורפים) לא נגיש כדי לשקול אותו כ"מצב נפילה סובייקטיבית".
ההגדרה הבאה אומרת שהמאסטר ייחשב כנופל מיד כאשר אנו לא מקבלים תשובה מהפינגים שלנו בתוך 5 שניות (שנייה אחת שווה ל-1000 מילישניות).
sentinel down-after-milliseconds mymaster 5000

7. לאחר מכן, הגדר את זמן ההחלפה במילישניות שמגדיר דברים רבים (קרא את התיעוד של הפרמטר בקובץ התצורה).
sentinel failover-timeout mymaster 180000

8. לאחר מכן הגדר את מספר הרפליקות שניתן להגדיר מחדש כך שיכולות להשתמש במאסטר החדש לאחר כישלון. מאחר שיש לנו שתי רפליקות, נגדיר רפליקה אחת כי אחרת תוגדר כמאסטר חדש.
sentinel parallel-syncs mymaster 1

שימו לב שקבצי התצורה ב־רדיס רפליקה 1 וב־סנטינל 2, וגם ב־רדיס רפליקה 1 וב־סנטינל 2 צריכים להיות זהים.
9. לאחר מכן, הפעילו מחדש את שירותי ה־סנטינל בכל הצמתים כדי ליישם את השינויים האחרונים.
# systemctl restart redis-sentinel
10. לאחר מכן, פתחו את היציאה 26379 בגדר רחובת האש בכל הצמתים כדי לאפשר להפעיל להתחיל לדבר, לקבל חיבורים מהצמתים האחרים, באמצעות הפקודה firewall-cmd.
# firewall-cmd --zone=public --permanent --add-port=26379/tcp # firewall-cmd --reload
11. כל הרפליקות יתגלו אוטומטית. חשוב לציין, שה־סנטינל יעדכן את התצורה אוטומטית עם מידע נוסף על הרפליקות. ניתן לאמת זאת על ידי פתיחת קובץ התצורה של ה־סנטינל עבור כל המופע ולחפש בו.
לדוגמה, כאשר אתה מביט בסוף קובץ התצורה של המאסטר, עליך לראות את ההצהרות known-sentinels ו־known-replica כפי שמוצג בתמונת המסך הבאה.

זה צריך להיות אותו מקרה גם עבור הרפליקה 1 ו־הרפליקה 2.


שימו לב שהתצורה של ה־סנטינל גם נכתבת/מתעדכנת בכל פעם שרפליקה מובסת למאסטר במהלך כישלון ובכל פעם שסנטינל חדש נתגלה בהגדרה.
שלב 3: בדוק את מעמד ההגדרה של Redis Sentinel
12. כעת בדוק את מצב/המידע של Sentinel על המאסטר, באמצעות פקודת info sentinel כך:
# redis-cli -p 26379 info sentinel
מתוך הפלט של הפקודה כפי שניתן לראות בתמונת המסך הבאה, יש לנו שני רפליקות/עבדים ושלושה סנטינלים.

13. כדי להציג מידע מפורט על ה-מאסטר (שנקרא mymaster), יש להשתמש בפקודת sentinel master.
# redis-cli -p 26379 sentinel master mymaster

14. כדי להציג מידע מפורט על ה-עבדים וה-סנטינלים, יש להשתמש בפקודת sentinel slaves ובפקודת sentinel sentinels בהתאמה.
# redis-cli -p 26379 sentinel slaves mymaster # redis-cli -p 26379 sentinel sentinels mymaster
15. לאחר מכן, יש לשאול על כתובת המאסטר לפי שם מהמופעים של העבדים באמצעות פקודת sentinel get-master-addr-by-name כך:
הפלט צריך להיות כתובת ה-IP והפורט של מופע המאסטר הנוכחי:
# redis-cli -p 26379 sentinel get-master-addr-by-name mymaster

שלב 4: בדוק את כישלון העברת המאסטר של Sentinel
16. לבסוף, בואו נבדוק את העברת הכישלון האוטומטית בהגדרת ה-Sentinel שלנו. על המאסטר של Redis/Sentinel, הפועל על פורט 6379, נגריל את ה-Redis מאסטר לישון למשך 60 שניות. לאחר מכן יש לשאול על כתובת המאסטר הנוכחי ברפליקות/עבדים כך:
# redis-cli -p 6379 127.0.0.1:6379> AUTH Securep@55Here 127.0.0.1:6379> debug sleep 60 # redis-cli -p 26379 sentinel get-master-addr-by-name mymaster # redis-cli -p 26379 sentinel get-master-addr-by-name mymaster
מתוך הפלט של השאילתה, המאסטר החדש הוא כעת replica/slave2 עם כתובת IP 10.42.0.34 כפי שניתן לראות בתמונת המסך הבאה.

ניתן לקבל מידע נוסף מתיעוד ה-Redis Sentinel. אם יש לך מחשבות לשתף או שאלות לשאול, הטופס למשוב למטה הוא השער שלך אלינו.
בחלק הבא והאחרון של סדרת זו, נסתכל על איך להגדיר את קבוצת ה-Redis ב־CentOS 8. זה יהיה מאמר עצמאי מהשניים הראשונים.
Source:
https://www.tecmint.com/setup-redis-high-availability-with-sentinel-in-centos-8/