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

Edge for Private Cloud גרסה 4.19.01

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

מידע עלzoKeeper ועל Edge

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

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

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

כאשר:

  • ZK_HOSTS מציין את כתובות ה-IP של צומתי התאמות גן החיות. חובה לרשום את כתובות ה-IP באותו סדר בכל הצמתים שלzoKeeper.

    בסביבה מרובת נתונים של מרכז נתונים, צריך לרשום את כל הצמתים שלzoKeeper מכל מרכזי הנתונים.

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

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

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

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

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

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

ולמרכז נתונים 2:

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

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

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

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

בזמן ההתקנה של Edge, אתם מגדירים כל צומת שלzoKeeper כמצביע או כצופה. אחרי כן, המו"ל נבחר על ידי כל צומתי ה-zooKeeper של המצביעים. הדרישה היחידה לבחירת מנהיג היא לאפשר quorum של צומתי מצביעים פעילים ב-zoKeep. המשמעות של קוורום היא שיותר ממחצית מכל הצמתים שלzoKeeper של המצביעים, בכל מרכזי הנתונים, פועלים.

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

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

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

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

  • התקנת שלושה צמתים שלzoKeeper לכל מרכז נתונים, כך שבסך הכל השתמשת בשישה צמתים
  • במרכז הנתונים 1 יש שלושה צומתי מצביעים
  • ב-Data Center 2 יש שני צומתי מצביעים וצומת אחד של צופה
  • הקוורום מבוסס על חמשת המצביעים בשני מרכזי הנתונים, ולכן הוא שלושה צומתי מצביעים שפועלים
  • אם יש רק שני צומתי מצביעים או פחות, המערכת של NeoKeeper לא יכולה לפעול

שיקולים להוספת צמתים כמצביעים או כצופים

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

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

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

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

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

הסרת צומת של גן חיות

יכולות להיות סיבות רבות להסרת צומת שלzokeeper. לדוגמה, צומת נפגם או שהוא נוסף לסביבה שגויה.

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

כדי להסיר צומת שלzokeeper:

  1. עורכים את קובץ התצורה השקטה ומסירים את כתובת ה-IP של צומת גן החיות שרוצים להסיר.
  2. מריצים מחדש את הפקודה setup ל-Zookeeper כדי להגדיר מחדש את הצמתים שנותרו:
    /opt/apigee/apigee-service/bin/apigee-service apigee-zookeeper setup -f updated_config_file
  3. מפעילים מחדש את כל הצמתים שלzokeeper :
    /opt/apigee/apigee-service/bin/apigee-service apigee-zookeeper restart
  4. הגדרה מחדש של הצומת של שרת הניהול:
    /opt/apigee/apigee-service/bin/apigee-service edge-management-server setup -f updated_config_file
    /opt/apigee/apigee-service/bin/apigee-service edge-management-server restart
  5. הגדרה מחדש של כל הנתבים:
    /opt/apigee/apigee-service/bin/apigee-service edge-router setup -f updated_config_file
    /opt/apigee/apigee-service/bin/apigee-service edge-router restart
  6. הגדרה מחדש של כל מעבדי ההודעות:
    /opt/apigee/apigee-service/bin/apigee-service edge-message-processor setup -f updated_config_file
    /opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
  7. הגדרה מחדש של כל צומתי ה-Qpid:
    /opt/apigee/apigee-service/bin/apigee-service edge-qpid-server setup -f updated_config_file
    /opt/apigee/apigee-service/bin/apigee-service edge-qpid-server restart
  8. הגדרה מחדש של כל צומתי Postgres:
    /opt/apigee/apigee-service/bin/apigee-service edge-postgres-server setup -f updated_config_file
    /opt/apigee/apigee-service/bin/apigee-service edge-postgres-server restart

שיקולי תחזוקה

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

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

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

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

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

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

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

תהליך תחזוקה

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

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

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

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

    הפלט אמור להופיע בטופס:

    Zookeeper version: 3.4.5-1392090,
    built on 09/30/2012 17:52 GMT
    Clients: /a.b.c.d:xxxx[0](queued=0,recved=1,sent=0)
    Latency min/avg/max: 0/0/0
    Received: 1
    Sent: 0
    Connections: 1
    Outstanding: 0
    Zxid: 0xc00000044
    Mode: follower
    Node count: 653

    אמורים להופיע בשורה Mode של הפלט של הצמתים: observer, leader או follower (כלומר מצביע שאינו מוביל) בהתאם לתצורת הצומת.

  3. חוזרים על שלבים 1 ו-2 בכל צומת שלzoKeeper.

סיכום

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

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