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

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

מידע עלzoKeeper ו-Edge

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

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

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

כאשר:

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

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

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

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

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

בדרך כלל מציינים את הצירוף :observer כשיוצרים כמה נתוני Edge מרכזי, או כאשר במרכז נתונים יחיד יש מספר גדול של צמתים ב-ZooKeeper. לדוגמה, התקנת Edge עם 12 מארחי שני מרכזי נתונים, ZoomKeeper בצומת 9 במרכז נתונים 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"

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

מידע על בכירים בארגון, עוקבים מצביעים וצופים

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  1. עורכים את קובץ התצורה השקוע ומסירים את כתובת ה-IP של הצומת של בתחומים (zokeeper) שרוצים להסיר.
  2. מריצים מחדש את הפקודה setup עבור Zoomkeeper כדי להגדיר מחדש את ZoomKeeper הנותר צמתים:
    /opt/apigee/apigee-service/bin/apigee-service apigee-zookeeper setup -f updated_config_file
  3. הפעלה מחדש של כל הצמתים של Zzookeeper:
    /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

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

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

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

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

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

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

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

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

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

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

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

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

  1. אם האפליקציה לא מותקנת בצומת ZoomKeeper, מתקינים את nc:
    sudo yum install nc
  2. מריצים את פקודת nc הבאה בצומת, שבו 2181 היא יציאת זוKeeper:
    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 בכל צומת של ZoomKeeper.

סיכום

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

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