מידע על תחזוקת ZooKeeper

Edge for Private Cloud גרסה 4.17.01

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

מידע על ZooKeeper ועל Edge

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

כדי לציין את צמתים של ZooKeeper, משתמשים במאפיינים ZK_HOSTS ו-ZK_CLIENT_HOSTS בקובץ התצורה של Edge. לדוגמה:

ZK_HOSTS="$IP1 $IP2 $IP3" 
ZK_CLIENT_HOSTS="$IP1 $IP2 $IP3" 

כאשר:

  • ZK_HOSTS – מציין כתובות ה-IP של הצמתים של תנועת השימור ב-ZooKeeper. כתובות ה-IP צריכות להיות רשומות באותו סדר ב- כל הצמתים שלzoKeeper.

    בסביבה מרובת נתונים של מרכז נתונים, הצגה של כל הצמתים שלzoKeeper מכל מרכזי הנתונים.
  • ZK_CLIENT_HOSTS – מציין את כתובות ה-IP של צמתים של ZooKeeper שבהם משתמש מרכז הנתונים הזה בלבד. כתובת ה-IP הכתובות חייבות להופיע באותו סדר בכל הצמתים שלzoKeeper במרכז הנתונים.

    בהתקנה יחידה של מרכז נתונים, אלה אותם צמתים שצוינו על ידי ZK_HOSTS. תוך שימוש בסביבה מרובת-הנתונים, קובץ התצורה של Edge עבור כל מרכז נתונים צריך לכלול רק את צמתים ב-ZooKeeper עבור מרכז הנתונים הזה

כברירת מחדל, כל הצמתים ב-ZooKeeper מוקצים כצמתים של מצביע. כלומר, כל הצמתים משתתפים בבחירת המנהיג של ZooKeeper. אפשר לכלול את מגביל “:observer” עם ZK_HOSTS כדי לציין ההערה היא צומת של תצפית, ולא מצביע. צומת תצפית לא משתתף בבחירת המנהיג.

בדרך כלל מציינים את המאפיין ‎:observer כשיוצרים כמה מרכזי נתונים של Edge, או כשלמרכז נתונים אחד יש מספר גדול של צמתים של ZooKeeper. לדוגמה, בהתקנה של Edge עם 12 מארחים ושני מרכזי נתונים, ZooKeeper בצומת 9 במרכז הנתונים 2 הוא הצופה:

לאחר מכן משתמשים בהגדרות הבאות בקובץ התצורה של מרכז הנתונים 1:

ZK_HOSTS="$IP1 $IP2 $IP3 $IP7 $IP8 $IP9:observer"
ZK_CLIENT_HOSTS="$IP1 $IP2 $IP3"

וגם למרכז הנתונים

ZK_HOSTS="$IP1 $IP2 $IP3 $IP7 $IP8 $IP9:observer"
ZK_CLIENT_HOSTS="$IP7 $IP8 $IP9"

מידע על מנהיגים, עוקבים, מצביעים ומתבוננים

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

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

אם אין קוורום של צמתי מצביעים, אי אפשר לבחור מנהיגים אחרים. בתרחיש כזה, ‏Zookeeper לא יכול למלא בקשות. המשמעות היא שלא תוכלו לשלוח בקשה לשרת הניהול של Edge, לעבד בקשות ל-Management API או להתחבר לממשק המשתמש של Edge עד שהמספר הנדרש של המשתתפים יוחזר.

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

  • התקנת שלושה צמתים ב-ZooKeeper
  • כל הצמתים ב-ZooKeeper הם מצביעים
  • הקוורום הוא שני צמתים פעילים של מצביעים
  • אם רק צומת אחד של בודק זמין, קבוצת ZooKeeper לא יכולה לפעול

בהתקנה עם שני מרכזי נתונים:

  • התקנתם שלושה צמתים של ZooKeeper לכל מרכז נתונים, סה"כ שישה צמתים
  • במרכז הנתונים 1 יש שלושה צמתים של מצביעים
  • במרכז הנתונים 2 יש שני צמתים להצבעה וצומת אחד של משקיף
  • הקוורום מבוסס על חמשת המצביעים בשני מרכזי הנתונים, ולכן הוא מורכב משלושה צמתים תקינים של מצביעים
  • אם יש רק שני צמתים של בוחרים או פחות, אסור להפעיל את האנסמבל של ZooKeeper

הוספת צמתים כמצביעים, או צופים

לפי דרישות המערכת, יכול להיות שיהיה צורך להוסיף עוד צומתיzoKeeper ל-Edge בתהליך ההתקנה. מסמכי התיעוד בנושא הוספת צמתים של גן חיות לשמור מתאר איך להוסיף ל-Edge עוד צמתים ב-ZoKeeper. כשמוסיפים צמתים ב-ZooKeeper, צריך צריך להביא בחשבון את סוג הצמתים שצריך להוסיף: מצביע או צופה.

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

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

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

במרכז נתונים יחיד, Apigee ממליצה שיהיו לכם לא יותר מחמישה מצביעים, של מספר צומתי הצופה. בשני מרכזי נתונים, מומלץ להשתמש ב-Apigee עם לא יותר מ-9 בוחרים (חמישה במרכז נתונים אחד וארבעה במרכז השני). לאחר מכן אפשר להוסיף כמה שיותר צמתים של צופים לפי דרישות המערכת.

שיקולים לגבי תחזוקה

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

תחזוקה בכל מרכזי נתונים מרובים

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

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

השלכות על תחזוקה

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

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

תהליך תחזוקה

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

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

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

  1. אם הוא לא מותקן בצומת ZooKeeper, מתקינים את nc:
    > sudo yum install nc
  2. מריצים את הפקודה הבאה של nc בצומת:
    > echo stat | nc localhost 2181

    כאשר 2181 היא יציאת ZooKeeper. הפלט אמור להופיע בטופס:
    גרסת Zookeeper: 3.4.5-1392090, נוצר בתאריך 09/30/2012 17:52 GMT
    לקוחות: /a.b.c.d:xxxx[0](queued=0,recved=1,sent=0)
    זמן אחזור מינימלי/ממוצע/מקסימלי: 0/0/0
    התקבל: 1
    שלחת: 0
    חיבורים: 1
    עוד לא הסתיים:
    0 Zxid: 0xc00000044
    מצב: עוקב
    מספר צמתים: 653


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

    הערה: בהתקנה עצמאית של Edge עם צומתzoKeeper אחד, המצב מוגדר כעצמאי.
  3. חוזרים על שלבים 1 ו-2 בכל צומת שלzoKeeper.

סיכום

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

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