כרגע מוצג התיעוד של Apigee Edge.
כניסה למסמכי התיעוד של
Apigee X. מידע
תיאור הבעיה
לא ניתן להתחיל את התהליך של גן החיות.
הודעות שגיאה
בעת ניסיון להפעיל את תהליך התאמות גן החיות, מוצגת הודעת השגיאה הבאה שמציינת כי לא ניתן להפעיל את גן החיות:
+ apigee-service apigee-zookeeper status apigee-service: apigee-zookeeper: Not running (DEAD) apigee-all: Error: status failed on [apigee-zookeeper]
גורמים אפשריים
הטבלה הבאה מפרטת סיבות אפשריות לבעיה הזו:
סיבה | עבור |
---|---|
מזהה גן החיות מוגדר באופן שגוי | משתמשי ענן פרטי של Edge |
יציאת ZooKeeper בשימוש | משתמשי ענן פרטי של Edge |
מזהה תהליך שגוי בקובץ apigee-zookeeper.pid | משתמשי ענן פרטי של Edge |
הבחירות של מנהל גן החיות ב-ZooKeep | משתמשי ענן פרטי של Edge |
ניתן ללחוץ על קישור בטבלה כדי לראות פתרונות אפשריים לבעיה.
מזהה של גן החיות שמוגדר באופן שגוי
בקטעים הבאים מוצגת סקירה כללית של קובץ ה-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
מכיל שורת טקסט אחת שתואמת למספר השרת של צומת גן החיות הספציפי הזה. ה-myid של server 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 = #' ('החיבור נותק עבור מזהה #, 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.# לצומת גן החיות הנוכחי. - צריך לבדוק את הקובץ
/opt/apigee/data/apigee-zookeeper/data/myid
ולראות אם הטקסט בקובץ הזה תואם לשרת.# צוין בשלב 2. - אם יש אי התאמה, אז זיהית את הסיבה לכך ש-zooKeeper לא פועל.
רזולוציה
אם קובץ myid מוגדר באופן שגוי, עליכם לערוך את קובץ ה-myid ולהחליף את הערך בטקסט תקין שמייצג את הפרמטר server.# ב-zoo.cfg.
נמל גן החיות של גן החיות בשימוש
אבחון
- כדאי לבדוק אם יש שגיאות ביומן של גן החיות
/opt/apigee/var/log/apigee-zookeeper/zookeeper.log
. - אם מופיעה החריגה
java.net.BindException: Address already in use
בזמן החיבור ליציאה #2181, כפי שמוצג באיור שלמטה, המשמעות היא שיציאה 2181 נמצאת בשימוש בתהליך אחר. לכן, לא ניתן להפעיל אתzoKeeper.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 שלzoKeeper אכן נמצאת בשימוש בתהליך אחר:
netstat -an | grep 2181
רזולוציה
אם יציאה 2181 של גן החיות עדיין נמצאת בשימוש, בצעו את הפעולות הבאות כדי לטפל בבעיה:
- משתמשים בפקודה
netstat
כדי למצוא את התהליך ששומר על יציאה 2181. מבטלים את התהליך שמשתמש ביציאה 2181 שלzoKeeper:$ 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
כשמנסים להפסיק/להפעיל מחדש אתzoKeeper, ייתכן שהדבר ייכשל כי
קובץ apigee-zookeeper.pid
מכיל PID ישן/שגוי ולא זה של
תהליך גן החיות שפועל כרגע. מצב כזה עשוי לקרות אם תהליך גן החיות של גן החיות הסתיים באופן בלתי צפוי או
פתאומי מסיבה כלשהי והקובץ apigee-zookeeper.pid
לא נמחק.
אבחון
- כדי לקבל את מזהה התהליך של תהליך גן החיות הנוכחי שפועל כרגע, מריצים את הפקודה
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
. - עליך לבדוק אם בוצעו שינויים בהגדרות שעלולים לגרום לכך שהבחירה ב-zoKeeper תיכשל.
- צריך לבדוק את
/opt/apigee/apigee-zookeeper/conf/zoo.cfg
ולוודא שלכל התאמות גן החיות באשכול יש את המספר וכתובות ה-IP הנכונים לפרמטר server.#. כמו כן, חשוב לזכור שכדי שהבחירות למנהיגות יצליחו, צריכים להיות לפחות 3 מצביעים, ומספר המצביעים צריך להיות אי-זוגי. אם יש מעט מדי מצביעים, למשל רק שני מצביעים, לא ניתן להגיע להסכמה כדי לקבוע מנהיג מבין שני מצביעים בלבד.
רזולוציה
בדרך כלל, כישלון בבחירות ב-ZooKeeper נגרם עקב קובץ עזר שהוגדר באופן שגוי. אפשר להשתמש בפתרון הזה בקטע MisconfiguredzoKeeper myid (הפתרון שגוי) כדי לטפל בכישלון הבחירות.
אם הבעיה נמשכת ויש צורך באבחון נוסף, אפשר לפנות לתמיכה של Apigee Edge.