בחירת מנהיגות עם קונסול

1. סקירה כללית

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

2. מה זה קונסול?

קונסול הוא כלי קוד פתוח המספק רישום שירות וגילוי המבוסס על בדיקת בריאות. יתר על כן, הוא כולל ממשק משתמש גרפי אינטרנט (GUI) כדי להציג את הקונסול ולהתקשר איתו בקלות. זה מכסה גם יכולות נוספות של ניהול הפעלות וחנות Key-Value (KV).

בחלקים הבאים נתמקד כיצד אנו יכולים השתמש בניהול ההפעלות של קונסול ובחנות KV לבחירת המנהיג ביישומים עם מספר מופעים.

3. יסודות הקונסול

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

סוכן הקונסול יכול להיכנס שני מצבים שונים - שרת וסוכן.

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

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

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

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

בואו נראה בסעיפים הבאים כיצד קונסול באמצעות ניהול הפעלות וחנות KV יכולה לספק יכולת חשובה זו.

4. בחירת מנהיגות עם קונסול

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

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

4.1. מחלוקת מנהיגות

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

  1. על כל המקרים להסכים על מפתח משותף להתמודדות.
  2. לאחר מכן, המופע יוצר מושב באמצעות המפתח המוסכם באמצעות ניהול מושבי קונסול ויכולות KV.
  3. שלישית, עליהם לרכוש את המושב. אם ערך ההחזר הוא נָכוֹן, המנעול שייך למופע, ואם שֶׁקֶר, המופע הוא חסיד.
  4. המקרים צריכים לשמור כל הזמן על הפגישה כדי לרכוש שוב את המנהיגות במקרה של כישלון או שחרור.
  5. לבסוף, המנהיג יכול לשחרר את המושב, והתהליך מתחיל מחדש.

לאחר שנבחר המנהיג, שאר המקרים משתמשים בקונסול KV ובהנהלת מושב כדי לגלות את המנהיג על ידי:

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

4.2. דוגמה מעשית

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

ראשית, בואו נכלול את התלות:

 com.github.kinguinltdhk קונסול מנהיגות $ {kinguinltdhk.version} com.ecwid.consul קונסול api 

הוצאנו את הכלל קונסול-אפי תלות כדי למנוע התנגשויות בגירסאות השונות בג'אווה.

למפתח המשותף נשתמש ב:

שירותים /% s / מנהיג

בואו לבדוק את כל התהליך עם קטע פשוט:

SimpleConsulClusterFactory () .mode (SimpleConsulClusterFactory.MODE_MULTI) .debug (true) .build () .asObservable (). subscribe (i -> System.out.println (i));

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

לבסוף, אנו מתאימים אישית את תצורת הקונסול וניהול ההפעלות, והמפתח המוסכם בין המקרים לבחור את המנהיג:

אשכול: מנהיג: שירות שם: שירות אשכול מזהה: צומת -1 קונסול: מארח: יציאת localhost: גילוי 8500: מופעל: מושב כוזב: ttl: 15 רענון: 7 בחירות: מעטפה תבנית: שירותים /% s / מנהיג

4.3. איך לבדוק את זה

ישנן מספר אפשרויות להתקין את קונסול ולהפעיל סוכן.

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

נפרוס את הקונסול באמצעות Docker על ידי הפעלת הפקודה:

docker run -d --name קונסול -p 8500: 8500 -e CONSUL_BIND_INTERFACE = eth0 קונסול

הקונסול פועל כעת, והוא אמור להיות זמין בכתובת אירוח מקומי: 8500.

בואו נבצע את קטע המידע ונבדוק את השלבים שבוצעו:

  1. המנהיג יוצר מושב בקונסול.
  2. ואז הוא נבחר (נבחר.ראשון).
  3. שאר המקרים צופים עד לשחרור ההפעלה:
INFO: פעיל במצב מרובה מידע INFO: מושב נוצר e11b6ace-9dc7-4e51-b673-033f8134a7d4 INFO: רענון מושב מתוזמן בתדירות של 7 שניות -9dc7-4e51-b673-033f8134a7d4 ', serviceName = "cluster-app", serviceId = "node-1"}, error = null) ElectionMessage (status = שנבחר. ראשון, הצבעה = הצבעה {sessionId =' e11b6ace-9dc7- 4e51-b673-033f8134a7d4 ', serviceName = "cluster-app", serviceId = "node-1"}, error = null) ElectionMessage (status = שנבחר, הצבעה = הצבעה {sessionId =' e11b6ace-9dc7-4e51-b673-033f8134a7d4 ', serviceName = "cluster-app", serviceId = "node-1"}, error = null) 

הקונסול מספק גם ממשק משתמש אינטרנט זמין בכתובת // localhost: 8500 / ui.

בוא נפתח דפדפן ונלחץ על סעיף ערך המפתח כדי לאשר שנוצר ההפעלה:

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

5. מסקנה

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

כמו תמיד, הקוד זמין ב- GitHub.