כיצד להגדיר את Redis לזמינות גבוהה עם Sentinel ב-CentOS 8 – חלק 2

רדיס מספק זמינות גבוהה דרך מערכת מבוצעת של רדיס סנטינל. סנטינל עוזר לניטור של מופעי רדיס, זיהוי כשלים וביצוע החלפת תפקידים באופן אוטומטי, מאפשר לפריסת רדיס להתמודד עם סוגים שונים של כשלים.

הוא כולל ניטור של מופעי רדיס (ראשי ושעתוקים), תמיכה בהודעה לשירותים/תהליכים אחרים או למנהל המערכת דרך סקריפט, החלפת כשלון אוטומטית לקידום שעתוק להיות ראשי כאשר הראשי נופל וקונפיגורציה ללקוחות לגילוי של הראשי הנוכחי המציע שירות מסוים.

מאמר זה מדגים איך להגדיר את רדיס לזמינות גבוהה עם רדיס סנטינל ב-CentOS 8, כולל הגדרת סנטינלים, בדיקת מצב ההגדרה ובדיקת כשלון של סנטינל.

דרישות מוקדמות:

  1. איך להגדיר שכפול של רדיס (עם מצב קלאסטר מנוטרל) ב- CentOS 8 – חלק 1

הגדרת סביבת בדיקה

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 Setup Logical Diagram

על פי מסמך התיעוד של 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
Start Redis Sentinel Service

שלב 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
Set Sentinel Listen Interface and Port

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
Set Redis Master to Monitor

חשוב: ההצהרה של הצפיין של הסנטינל חייבת להיות מוצבת לפני ההצהרת auth-pass של הסנטינל כדי למנוע את השגיאה "אין מאסטר כזה עם השם המצויין" בעת איתחול שירות הסנטינל מחדש.

5. אם למאסטר של Redis שאנו מצפים לצפות עליו יש סיסמה (במקרה שלנו יש למאסטר), ספק את הסיסמה כך שהמופע של Sentinel יוכל לאמת עם המופע המוגן.

 
sentinel auth-pass mymaster Securep@55Here
Set Master Auth Password

6. לאחר מכן, הגדר את מספר המילישניות שבהן יש להיות המאסטר (או כל רפליקה או סנטינל מצורפים) לא נגיש כדי לשקול אותו כ"מצב נפילה סובייקטיבית".

ההגדרה הבאה אומרת שהמאסטר ייחשב כנופל מיד כאשר אנו לא מקבלים תשובה מהפינגים שלנו בתוך 5 שניות (שנייה אחת שווה ל-1000 מילישניות).

sentinel down-after-milliseconds mymaster 5000
Set Down Time for Master

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

sentinel failover-timeout mymaster 180000
Set Fail Over Timeout

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

sentinel parallel-syncs mymaster 1
Set Number of Parallel Sync Replicas

שימו לב שקבצי התצורה ב־רדיס רפליקה 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 כפי שמוצג בתמונת המסך הבאה.

Auto Generated Config in Master

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

Auto Generated Config in Replica1
Auto Generated Config in Replica2

שימו לב שהתצורה של ה־סנטינל גם נכתבת/מתעדכנת בכל פעם שרפליקה מובסת למאסטר במהלך כישלון ובכל פעם שסנטינל חדש נתגלה בהגדרה.

שלב 3: בדוק את מעמד ההגדרה של Redis Sentinel

12. כעת בדוק את מצב/המידע של Sentinel על המאסטר, באמצעות פקודת info sentinel כך:

# redis-cli -p 26379 info sentinel

מתוך הפלט של הפקודה כפי שניתן לראות בתמונת המסך הבאה, יש לנו שני רפליקות/עבדים ושלושה סנטינלים.

Check Sentinel Info on Master

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

# redis-cli -p 26379 sentinel master mymaster
Show Detailed Info About Sentinel Master

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
Get the Address of Master by Name on Slaves

שלב 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 כפי שניתן לראות בתמונת המסך הבאה.

Test Redis Sentinel Failover

ניתן לקבל מידע נוסף מתיעוד ה-Redis Sentinel. אם יש לך מחשבות לשתף או שאלות לשאול, הטופס למשוב למטה הוא השער שלך אלינו.

בחלק הבא והאחרון של סדרת זו, נסתכל על איך להגדיר את קבוצת ה-Redis ב־CentOS 8. זה יהיה מאמר עצמאי מהשניים הראשונים.

Source:
https://www.tecmint.com/setup-redis-high-availability-with-sentinel-in-centos-8/