מוצג המסמך של Apigee Edge.
עוברים אל
מסמכי תיעוד של Apigee X. מידע
תיאור הבעיה
לא ניתן להתחיל את התהליך ZoomKeeper.
הודעות שגיאה
כשתנסו להתחיל את תהליך ZoomKeeper, תוחזר הודעת השגיאה הבאה שמציין שלא ניתן להפעיל את ZoomKeeper:
+ apigee-service apigee-zookeeper status apigee-service: apigee-zookeeper: Not running (DEAD) apigee-all: Error: status failed on [apigee-zookeeper]
גורמים אפשריים
בטבלה הבאה מפורטות הסיבות האפשריות לבעיה הזו:
סיבה | עבור |
---|---|
המזהה של ZoomKeeper לא הוגדר באופן שגוי | משתמשי Edge בענן פרטי |
יציאת ZooKeeper בשימוש | משתמשי Edge בענן פרטי |
מזהה תהליך שגוי בקובץ apigee-zookeeper.pid | משתמשי Edge בענן פרטי |
כישלון הבחירות למנהיג/ה ב-ZooKeeper | משתמשי Edge בענן פרטי |
כדי לראות פתרונות אפשריים לבעיה, לוחצים על קישור בטבלה.
מזהה שגוי של ZoomKeeper
בקטעים הבאים יש סקירה כללית של קובץ myid ומתואר איך לאבחן פותרים בעיות שקשורות להגדרה שגויה.
סקירה כללית של קובץ myid
בכל צומת שלzoKeeper יש שני קבצים:
- הקובץ
/opt/apigee/apigee-zookeeper/conf/zoo.cfg
שמכיל רשימה של כתובות ה-IP של כל הצמתים של גן החיות באשכול.לדוגמה, אם
/opt/apigee/apigee-zookeeper/conf/zoo.cfg
מכיל את הערך כתובות ה-IP של 3 צמתים שלzoKeeper חלק מהאשכול:server.1=11.11.11.11:2888:3888 server.2=22.22.22.22:2888:3888 server.3=33.33.33.33:2888:3888
- הקובץ
/opt/apigee/data/apigee-zookeeper/data/myid
מכיל שורה אחת של טקסט שתואם למספר השרת של צומת ZoomKeeper המסוים הזה. הפרטים של שרת 1 יכיל את הטקסט "1" ושום דבר אחר. המזהה חייב להיות ייחודי בארגון והערך שלו צריך להיות בין 1 ל-255.לדוגמה, ב-ZooKeeper Server.1, קובץ
/opt/apigee/data/apigee-zookeeper/data/myid
צריך להכיל רק את הטקסט 1 כפי שמוצג בהמשך:$ cat myid 1
אבחון
- יש לבדוק את היומן של ZoKeeper
/opt/apigee/var/log/apigee-zookeeper/zookeeper.log
כדי לראות אם שגיאות. - אם מופיעה הודעת WARN שדומה לזו: "Connection broken for id #, my id = #" ,
כפי שמוצג באיור למטה, הסיבה האפשרית לבעיה זו עשויה להיות שמספר השרת
בקובץ myid מוגדר באופן שגוי או פגום.
[myid:2] - WARN [RecvWorker:2:QuorumCnxManager$RecvWorker@762] - Connection broken for id 2, my id = 2, error = java.io.EOFException at java.io.DataInputStream.readInt(DataInputStream.java:375) at org.apache.zookeeper.server.quorum.QuorumCnxManager$RecvWorker. run(QuorumCnxManager.java:747)
- יש לבדוק את הקובץ
/opt/apigee/apigee-zookeeper/conf/zoo.cfg
ולציין את הפרטים Server.# עבור הצומת הנוכחי שלZoKeeper. - יש לבדוק את הקובץ
/opt/apigee/data/apigee-zookeeper/data/myid
ולראות אם הטקסט בקובץ הזה תואם לשרת. מס' # שצוין בשלב 2. - אם יש חוסר התאמה, אז זיהיתם את הסיבה לכך ש-zooKeeper נכשל הפעלה.
רזולוציה
אם קובץ myid מוגדר באופן שגוי, יש לערוך את קובץ myid ולהחליף את הערך הטקסט הנכון שמייצג את הפרמטר server.# ב-zoo.cfg.
היציאה שלzoKeeper נמצאת בשימוש
אבחון
- צריך לבדוק ביומן ZoKeeper
/opt/apigee/var/log/apigee-zookeeper/zookeeper.log
כדי לראות אם שגיאות. - אם יש חריגה מ-
java.net.BindException: Address already in use
בזמן שהוא מקושר ליציאה מס' 2181, כפי שמוצג באיור למטה, הוא מציין ש-ZooKeeper יציאה 2181 נמצאת בשימוש בתהליך אחר. לכן, לא ניתן היה להפעיל את ZoomKeeper.2017-04-26 07:00:10,420 [myid:3] - INFO [main:NIOServerCnxnFactory@94] - binding to port 0.0.0.0/0.0.0.0:2181 2017-04-26 07:00:10,421 [myid:3] - ERROR [main:QuorumPeerMain@89] - Unexpected exception, exiting abnormally java.net.BindException: Address already in use at sun.nio.ch.Net.bind0(Native Method) at sun.nio.ch.Net.bind(Net.java:433) at sun.nio.ch.Net.bind(Net.java:425) at sun.nio.ch.ServerSocketChannelImpl.bind(ServerSocketChannelImpl.java:223) at sun.nio.ch.ServerSocketAdaptor.bind(ServerSocketAdaptor.java:74) at sun.nio.ch.ServerSocketAdaptor.bind(ServerSocketAdaptor.java:67) at org.apache.zookeeper.server.NIOServerCnxnFactory.configure(NIOServerCnxnFactory.java:95) at org.apache.zookeeper.server.quorum.QuorumPeerMain.runFromConfig(QuorumPeerMain.java:130) at org.apache.zookeeper.server.quorum.QuorumPeerMain.initializeAndRun(QuorumPeerMain.java:111) at org.apache.zookeeper.server.quorum.QuorumPeerMain.main(QuorumPeerMain.java:78)
- צריך להשתמש בפקודת netstat הבאה כדי לאשר שאכן נעשה שימוש ביציאה 2181 של ZoomKeeper
בתהליך אחר:
netstat -an | grep 2181
רזולוציה
אם היציאה 2181 של zooKeeper עדיין בשימוש, צריך לפעול לפי השלבים הבאים כדי לטפל בבעיה. הבעיה:
- משתמשים בפקודה
netstat
כדי למצוא את התהליך שנשמר ביציאה 2181. כדי להשמיד את התהליך באמצעות יציאת ZoKeeper 2181:$ netstat -antp | grep 2181 tcp 0 0 0.0.0.0:2181 0.0.0.0:* LISTEN 28016/java <defunct> $ kill -9 28016
- נקו קובצי pid ונעילה אם הם קיימים:
/opt/apigee/var/run/apigee-zookeeper/apigee-zookeeper.pid /opt/apigee/var/run/apigee-zookeeper/apigee-zookeeper.lock
- מפעילים מחדש את ZoomKeeper:
/opt/apigee/apigee-service/bin/apigee-service apigee-zookeeper restart
מזהה תהליך שגוי בקובץ apigee-zookeeper.pid
כשמנסים להפסיק או להפעיל מחדש את ZoomKeeper, עלולים להיכשל כי
קובץ apigee-zookeeper.pid
מכיל pid ישן/שגוי ולא של הקובץ הנוכחי
להריץ את התהליךzoKeeper. הדבר עשוי להתרחש אם התהליך של ZoKeeper הסתיים באופן בלתי צפוי או
מסיבה כלשהי, והקובץ apigee-zookeeper.pid
לא נמחק.
אבחון
- כדי לקבל את מזהה התהליך של תהליך ZoomKeeper שפועל עכשיו צריך להריץ את הפונקציה
הפקודה
ps
:ps -ef | grep zookeeper
- בודקים אם הקובץ
/opt/apigee/var/run/apigee-ZooKeeper/apigee-zookeeper.pid
קיים. אם המזהה הזה קיים, רושמים לעצמכם את מזהה התהליך שנכתב בקובץ הזה. - משווים בין מזהי התהליכים שהתקבלו משלב 1 ושלב 2. אם הם שונים, הסיבה
לבעיה הזו יש מזהה תהליך שגוי בקובץ
apigee-zookeeper.pid file.
רזולוציה
- עורכים את הקובץ apigee-zookeeper.pid ומחליפים את מזהה התהליך השגוי במזהה הנכון מזהה התהליך שהתקבל מהפקודה ps (שלב 1 למעלה).
- מפעילים מחדש את ZoomKeeper:
/opt/apigee/apigee-service/bin/apigee-service apigee-zookeeper restart
כישלון הבחירות למנהיג גן החיות
אבחון
כדי לאבחן:
- יש לבדוק ביומן ZoKeeper
/opt/apigee/var/log/apigee-zookeeper/zookeeper.log
כדי לראות אם שגיאות. - בדקו אם היו שינויי הגדרות שעשויים לגרום לבחירות ב-ZooKeeper מנהיג להיכשל.
- צריך לבדוק את
/opt/apigee/apigee-zookeeper/conf/zoo.cfg
ולוודא שהכל ל-zoKeepers באשכול יש את המספר וכתובות ה-IP הנכונים של הפרמטר server.# . כמו כן, חשוב לזכור שכדי שהבחירות למנהיגות יצליחו, צריכים להיות לפחות 3 מצביעים ומספר המצביעים צריך להיות ממוספר באי-זוגי. אם יש מעט מדי מצביעים, כמו רק 2 מצביעים, הוא לא יכול להגיע לקופה כדי להחליט מנהיג בין שני מצביעים בלבד.
רזולוציה
בדרך כלל, כשל בבחירות ב-ZooKeeper נגרמת על ידי מזהה שלי שהוגדר באופן שגוי. שימוש ברזולוציה ב: הוגדר באופן שגוי עבור ZoomKeeper myid כדי לטפל בכשל בבחירות.
אם הבעיה נמשכת ונדרש אבחון נוסף, צרו קשר עם התמיכה של Apigee Edge.