Redis Sentinel

Redis Sentinel



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







יתר על כן, Redis Sentinel פועל כאמצעי שבו לקוחות מתחברים ומבקשים את כתובת ה-IP העדכנית ביותר של צומת Master. אז, הזקיף המחובר מספק את כתובת הצומת הראשי באופן מיידי.



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



הסכם הזקיפים מבוסס על ערך מניין אשר יידון בסעיף הבא.





הערך של מי

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

תכונות של Redis Sentinel

הזקיף ידוע במתן מנגנון זמינות גבוהה עבור מאגר הנתונים של Redis. מלבד זאת, ניתן לפרט עוד כמה יכולות.



  • Sentinel עוקב באופן רציף אחר המצב של צמתים מאסטר ועבדים במערכת Redis שלך.
  • בכל פעם שיש כשל או משהו לא בסדר במופעי Redis שלך, ה-Sentinel מסוגל להודיע ​​למנהל המערכת או ליישומים המחוברים באמצעות Sentinel API.
  • שלב הכשל מנוהל על ידי הזקיף על ידי קידום העתק כמאסטר החדש. ההעתקים הנותרים מוגדרים לשימוש במאסטר החדש. לבסוף, הלקוחות המתאימים יקבלו הודעה על כתובת הצומת הראשית החדשה.
  • כמו כן, Redis Sentinel הוא ספק תצורה עבור הלקוחות המחוברים בו לקוחות יכולים לבקש את הכתובת של מופע המאסטר הזמין כעת ואם התרחשה קריסה פתאומית, הזקיף מחויב לדחוף את כתובת הצומת הראשית החדשה באופן מיידי.

בסעיף הבא, נגדיר את Redis sentinels עם מופעי מאסטר-רפליקה ונשתמש ב-API של sentinel כדי לנטר את הצמתים.

תצורת סנטינל

ראשית, אנו יוצרים שני מופעי Redis ביציאות 7000 ו-7001. Port 7000 הולך להיות הצומת הראשי והשני משכפל את המאסטר. שני המופעים משתמשים בקבצי התצורה הבאים בהתאמה:

תצורת צומת מאסטר

נמל 7000
התומך באשכול לא
cluster-config-file nodes.conf
פסק זמן של אשכול-צומת 5000
תוספת כן

תצורת צומת עבדים

נמל 7001
התומך באשכול לא
cluster-config-file nodes.conf
פסק זמן של אשכול-צומת 5000
תוספת כן

שני המופעים יתחילו במתן קובץ התצורה המשויך לכל אחד מהם. אנו יכולים להשתמש בפקודה הבאה כדי להפעיל מופעי Redis בנפרד:

redis-server redis.conf

בואו נתחבר למופע Redis שהתחיל ביציאה 7001 באופן הבא:

redis-cli -עמ' 7001

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

העתק של 127.0.0.1 7000

כצפוי, המופע הפועל ביציאה 7001 הפך לצומת העתק של המאסטר הפועל ביציאה 7000.

כעת, אנו מוכנים להגדיר שלושה זקיפים של Redis לנטר את מופע המאסטר שלעיל. אנחנו צריכים שלושה קובצי תצורה כדי ליצור שלושה מופעי זקיף ביציאות 5000, 5001 ו-5002 כפי שמוצג להלן.

כל אחד sentinel.conf הקובץ נראה כך פרט לכך שמספר היציאה ישתנה:

נמל 5000
masternode מוניטור זקיף 127.0.0.1 7000 שתיים
צומת מאסטר של זקיף למטה אחרי אלפיות השנייה 5000
צומת masternode ל-failover-timeout של זקיף 60000

עכשיו, הגיע הזמן להפעיל את שלושת הזקיפים. אתה יכול להשתמש בקובץ ההפעלה redis-sentinel יחד עם הנתיב אל sentinel.conf קובץ תצורה ליצירת מופע זקיף. אחרת, אנחנו עדיין יכולים לקרוא לקובץ ההפעלה redis-server על ידי ציון הנתיב אל sentinel.conf והדגל -זָקִיף .

בואו נתחיל כל זקיף באמצעות הפקודה הבאה:

redis-server sentinel.conf --זָקִיף

הזקיף הראשון הופעל בנמל 5000. באופן דומה, אתה יכול להפעיל גם את שני המקרים האחרים.

כעת, הגדרת Redis Sentinel שלנו פועלת כפי שמוצג באיור הבא:

בסעיף הבא, נחקור יותר על Sentinel API וכיצד נוכל להשתמש בו כדי לאחזר מידע הקשור לצומת המאסטר של Redis.

Sentinel API

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

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

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

בדוק את המצב של צומת מאסטר

חשוב מאוד לעקוב או לבדוק את תקינות צומת המאסטר מעת לעת. ניתן להשתמש בפקודה הבאה של Sentinel API כדי לאחזר פרטי מאסטר:

מאסטר זקיף < מוניטור_שם_מאסטר >

monitored_master_name: שם הצומת הראשי שצוין בקובץ תצורת הזקיף שיצרנו בשלב הקודם.

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

צומת מאסטר SENTINEL MASTER

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

ה דגלים הנכס מוגדר ל לִשְׁלוֹט מה שאומר שהמאסטר במצב בריאותי טוב. בכל פעם שצומת המאסטר למטה, ה- s_למטה אוֹ o_למטה הדגל יוצג. הרכוש מספר זקיפים אחרים מוגדר ל-2 מה שאומר שהזקיף של Redis כבר זיהה את שני הזקיפים האחרים עבור הצומת הראשי. בנוסף מספר עבדים המאפיין מציג את העתקים הזמינים עבור הצומת הראשי. במקרה זה, הוא מוגדר ל-1 מכיוון שיש לנו רק העתק אחד.

קבל מידע על העתקים מחוברים

אנו יכולים לבדוק את ההעתקים המחוברים לצומת הראשי באמצעות פקודת המשנה הבאה SENTINEL:

רפליקות זקיפים < מוניטור_שם_מאסטר >

בדוגמה זו, שם המאסטר הוא 'masternode'.

רפליקות masternode של SENTINEL

כצפוי, ה-Sentinel זיהה את צומת העבדים הפועל ביציאה 7001.

קבל מידע על זקיפים קשורים

באופן דומה, אנו יכולים לשאול את הפרטים הקשורים לזקיפים אחרים המשויכים לצומת הראשי הנוכחי באמצעות הפקודת המשנה SENTINEL הבאה:

זקיפים זקיפים < master_node_name >

במקרה זה, אנו נביא את המידע הקשור לצומת המאסטר בשם 'מאסטרנוד'.

SENTINEL זקיפים masternode

השג את כתובת ה-Master Node

כפי שהוזכר בסעיף הקודם, Redis sentinel הוא ספק תצורה עבור לקוחות מחוברים. אז, הוא מסוגל לספק את כתובת ה-IP והיציאה של צומת הראשי הפועלים כעת ללקוחות המבוקשים. ניתן להשתמש בפקודה הבאה Sentinel API כדי לאחזר את המידע שהוזכר.

זקיף קבל-מאסטר-ADDR-לפי-שם < master_node_name >

הבה נבצע את הפקודה לעיל עבור התרחיש שלנו באופן הבא:

Sentinel get-master-addr-by-name masternode

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

תהליך כשל בסנטינל

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

לנפות לִישׁוֹן 300

הצומת הראשי הפועל ביציאה 7000 אמור להיות בלתי נגיש כעת. אז, זקיפים קשורים ישימו לב שהמאסטר אינו זמין עם +ירידה מִקרֶה. לאחר מכן, זה יוגדר ל +down כאשר 2 זקיפים מאשרים שהצומת הראשי ירד בהתאם לערך המניין. לבסוף, יתחיל שלב הכשל בכשל, ובאופן אידיאלי יש לקדם את ההעתק למאסטר החדש.

בואו נבדוק שוב את כתובת ה-IP של הצומת הראשי ואת היציאה.

Sentinel get-master-addr-by-name masternode

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

סיכום

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