כרגע מוצג התיעוד של Apigee Edge.
כניסה למסמכי התיעוד של
Apigee X. מידע
תיאור הבעיה
בעיות הקישוריות שלzoKeeper יכולות להתבטא בתסמינים שונים כמו:
- שגיאות בפריסה של שרת proxy ל-API
- קריאות ל-API לניהול נכשלות עם שגיאות 5XX
- לא ניתן להפעיל את הנתב או מעבדי ההודעות
- רכיבי Analytics מדווחים על אובדן החיבור אלzoKeeper ב-system.logs
הודעות שגיאה
בטבלה הבאה מובאות דוגמאות להודעות שגיאה שעשויות להופיע במקרים שבהם החיבור לצמתים שלzoKeeper אבד.
- השגיאה הבאה מוחזרת ביומנים של שרת הניהול כשפריסת שרת proxy של API
נכשלת בגלל אובדן החיבור שלzoKeeper:
org: env: main INFO ZOOKEEPER - ZooKeeperServiceImpl.exists() : Retry path existence path: /regions/dc-1/pods/analytics/servers/692afe93-8010-45c6-b37d-e4e05b6b2eb5/reachable, reason: KeeperErrorCode = ConnectionLoss org: env: main ERROR ZOOKEEPER - ZooKeeperServiceImpl.exists() : Could not detect existence of path: /regions/dc-1/pods/analytics/servers/692afe93-8010-45c6-b37d-e4e05b6b2eb5/reachable , reason: KeeperErrorCode = ConnectionLoss org: env: main ERROR KERNEL.DEPLOYMENT - ServiceDeployer.startService() : ServiceDeployer.deploy() : Got a life cycle exception while starting service [ServerRegistrationService, Error while checking path existence for path : /regions/dc-1/pods/analytics/servers/692afe93-8010-45c6-b37d-e4e05b6b2eb5/reachable] : com.apigee.zookeeper.ZooKeeperException{ code = zookeeper.ErrorCheckingPathExis tence, message = Error while checking path existence for path : /regions/dc-1/pods/analytics/servers/692afe93-8010-45c6-b37d-e4e05b6b2eb5/reachable, associated contexts = []} 2015-03-25 10:22:39,811 org: env: main ERROR KERNEL - MicroKernel.deployAll() : MicroKernel.deployAll() : Error in deploying the deployment : EventService com.apigee.zookeeper.ZooKeeperException: Error while checking path existence for path : /regions/dc-1/pods/analytics/servers/692afe93-8010-45c6-b37d-e4e05b6b2eb5/reachable at com.apigee.zookeeper.impl.ZooKeeperServiceImpl.exists(ZooKeeperServiceImpl.java:339) ~[zookeeper-1.0.0.jar:na] at com.apigee.zookeeper.impl.ZooKeeperServiceImpl.exists( ZooKeeperServiceImpl.java:323) ~[zookeeper-1.0.0.jar:na] at ... snipped
- במהלך האתחול, הנתבים ומעבדי ההודעות מתחברים ל-zoKeeper. אם יש
בעיות קישוריות ב-ZooKeeper, אז הרכיבים האלה לא יתחילו לפעול עם השגיאה
הבאה:
2017-08-01 23:20:00,404 CuratorFramework-0 ERROR o.a.c.f.i.CuratorFrameworkImpl - CuratorFrameworkImpl.logError() : Background operation retry gave up org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss at org.apache.zookeeper.KeeperException.create(KeeperException.java:99) ~[zookeeper-3.4.6.jar:3.4.6-1569965] at org.apache.curator.framework.imps.CuratorFrameworkImpl.checkBackgroundRetry(CuratorFrameworkImpl.java:710) [curator-framework-2.5.0.jar:na] at org.apache.curator.framework.imps.CuratorFrameworkImpl.performBackgroundOperation(CuratorFrameworkImpl.java:827) [curator-framework-2.5.0.jar:na] at org.apache.curator.framework.imps.CuratorFrameworkImpl.backgroundOperationsLoop(CuratorFrameworkImpl.java:793) [curator-framework-2.5.0.jar:na] at org.apache.curator.framework.imps.CuratorFrameworkImpl.access$400(CuratorFrameworkImpl.java:57) [curator-framework-2.5.0.jar:na] at org.apache.curator.framework.imps.CuratorFrameworkImpl$4.call(CuratorFrameworkImpl.java:275) [curator-framework-2.5.0.jar:na] at java.util.concurrent.FutureTask.run(FutureTask.java:266) [na:1.8.0_131] at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) [na:1.8.0_131] at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) [na:1.8.0_131] at java.lang.Thread.run(Thread.java:748) [na:1.8.0_131]
- ייתכן שממשק המשתמש של Edge יציג את השגיאה הבאה, שמציינת שהוא לא הצליח לבדוק את סטטוס הפריסה של שרתי ה-proxy של ה-API:
Error Fetching Deployments Error while checking path existence for path: path
גורמים אפשריים
הטבלה הבאה מפרטת סיבות אפשריות לבעיה הזו:
סיבה | עבור |
---|---|
בעיה בקישוריות לרשת במרכזי נתונים שונים | משתמשי ענן פרטי של Edge |
צומת ZooKeeper לא ממלא בקשות | משתמשי ענן פרטי של Edge |
ניתן ללחוץ על קישור בטבלה כדי לראות פתרונות אפשריים לבעיה.
בעיה בקישוריות לרשת במרכזי נתונים שונים
אבחון
באשכול של NaturalKeeper עשויים להיות צמתים שמתפרסים על כמה אזורים או מרכזי נתונים, כמו DC-1 ו-DC-2. לטופולוגיה הטיפוסית של Apigee Edge 2 DC יהיו:
- TacoKeeper מגיש 1, 2 ו-3 כמצביעים ב-DC-1
- גן חיות 4 ו-5 כמצביעים ו-ZoKeeper 6 כצופה ב-DC-2.
אם אזור DC-1 יורד או שהחיבור לרשת בין DC-1 ל-DC-2 מנותק, צמתים של גן החיות לא יכולים לבחור מוביל חדש ב-DC-2 והם לא מצליחים לתקשר עם הצומת המוביל. הצופים ב-zoKeeper לא יכולים לבחור מנהיג חדש, ולשני המצביעים שנותרו בDC-2 אין ספירה של לפחות 3 צומתי מצביעים כדי לבחור מנהיג חדש. לכן, אנשי זכויות היוצרים של גן החיות ב-DC-2 לא יוכלו לעבד בקשות. הצמתים שנותרו ב-zoKeeper ב-DC-2 ימשיכו לפעול בלולאה בניסיון להתחבר חזרה אל המצביעים שלzoKeeper כדי למצוא את המנהיג.
רזולוציה
כדי לטפל בבעיה לפי הסדר שנקבע, צריך להחיל את הפתרונות הבאים.
אם הבעיה נמשכת אחרי שניסית את הפתרונות האלה, אפשר לפנות לתמיכה של Apigee.
פתרון מס' 1
- עובדים עם מנהלי הרשת כדי לתקן את בעיית הקישוריות לרשת בין מרכזי הנתונים.
- כשהמבנה של ZoomKeeper יכול לתקשר בין מרכזי הנתונים ולבחור מנהיג שלzoKeeper, הצמתים אמורים להיות תקינים ולעבד בקשות.
פתרון מס' 2
- אם ייקח זמן לתקן את החיבור לרשת, פתרון עקיף הוא להגדיר מחדש את צומתי גן החיות באזור שבו הם מושבתים. לדוגמה, צריך להגדיר מחדש את האשכול
zoKeeper ב-DC-2 כך ש-3 הצמתים של גן החיות באזור הזה יהיו מצביעים ומסירים את
server.#
ב-zoo.cfg
של ה-ZooKeepers מאזור DC-1.- בדוגמה הבאה, הפונקציה
zoo.cfg
מגדירה צמתים לשני אזורים שבהם DC-1 משתמש בשמות מארחים מסוגus-ea
שמציינים את האזור US-East, ו-DC-2 משתמש בשמות מארחים מסוגus-wo
שמציינים את US-West. (הערה: מוצגות רק הגדרות רלוונטיות):server.1=zk01ea.us-ea.4.apigee.com:2888:3888 server.2=zk02ea.us-ea.4.apigee.com:2888:3888 server.3=zk03ea.us-ea.4.apigee.com:2888:3888 server.4=zk04wo.us-wo.4.apigee.com:2888:3888 server.5=zk05wo.us-wo.4.apigee.com:2888:3888 server.6=zk06wo.us-wo.4.apigee.com:2888:3888:observer
בדוגמה שלמעלה, צריך להגדיר מחדש את
zoo.cfg
באופן הבא:server.1=zk04wo.us-wo.4.apigee.com:2888:3888 server.2=zk05wo.us-wo.4.apigee.com:2888:3888 server.3=zk06wo.us-wo.4.apigee.com:2888:3888
- באמצעות קוד עם config,
יוצרים קובץ
/opt/apigee/customer/application/zookeeper.properties
עם ההגדרות הבאות:conf_zoo_quorum=server.1=zk04wo.us-wo.4.apigee.com:2888:3888\ \nserver.2=zk05wo.us-wo.4.apigee.com:2888:3888\ \nserver.3=zk06wo.us-wo.4.apigee.com:2888:3888\
למעלה, הצמתים מאזור ארה"ב-מזרח מוסרים, והצמתים בין ארה"ב למערב מקודמים למצביעים אם מוסרת ההערה
:observer
. - בדוגמה הבאה, הפונקציה
- גיבוי של
/opt/apigee/apigee-zookeeper/conf/zoo.cfg
ושל/opt/apigee/customer/application/zookeeper.properties
הישן.הקבצים האלה ישמשו לשחזור הגדרות ברירת המחדל בזמן גיבוי החיבור לרשת בין מרכזי נתונים.
השבתה של סימון הצופה בצומת הצופה. כדי לעשות זאת, צריך להוסיף את ההגדרה הבאה לחלק העליון של
/opt/apigee/customer/application/zookeeper.properties
:conf_zoo_peertype=
-
עורכים את הקובץ
/opt/apigee/data/apigee-zookeeper/data/myid
באופן הבא:- עבור
server.1
, צריך לשנות את הרשומה בתוךmyid
מ-4 ל-1. - עבור
server.2
, משנים אתmyid
מ-5 ל-2. - עבור
server.3
, צריך לשנות אתmyid
מ-6 ל-3.
- עבור
- עליך להפעיל מחדש את צומתי התאמות גן החיות באזור שבו הגדרת מחדש את האשכול zoKeeper.
- חוזרים על ההגדרה שלמעלה משלב 1ב עד שלב 5 בכל צומתי התאמות גן החיות ב-DC-2.
- מאמתים שהצמתים הם עם מוביל:
$ echo srvr | nc zk04wo.us-wo.4.apigee.com 2181 > echo srvr | nc zk05wo.us-wo.4.apigee.com 2181 > echo srvr | nc zk06wo.us-wo.4.apigee.com 2181
הפלט של הפקודה הזו יכלול שורה בנוסח 'mode' ואחריה 'leader' אם הוא המוביל, או 'עוקב' אם הוא עוקב.
כשהרשת בין מרכזי הנתונים נוצרת מחדש, אפשר לבטל את השינויים בהגדרות של עוד במועדוני החיות ב-ZaKeeper בצומתי DC-2.
פתרון מס' 3
- אם לא הפעלת את צומתי התאמות גן החיות באשכול, עליך להפעיל אותו מחדש.
- מומלץ לבדוק את היומנים של NaturalKeeper כדי להבין מדוע הצומת שלzoKeeper ירד.
יומני {/5}Keeper זמינים בספרייה הבאה:
$ cd /opt/apigee/var/log/apigee-zookeeper $ ls -l total 188 -rw-r--r--. 1 apigee apigee 2715 Jul 22 19:51 apigee-zookeeper.log -rw-r--r--. 1 apigee apigee 10434 Jul 17 19:51 config.log -rw-r--r--. 1 apigee apigee 169640 Aug 1 19:51 zookeeper.log
- כדי לפתור את הבעיה שגרמה לצומת של גן החיות שנעצר, צריך לפנות לתמיכה של Apigee ולמסור את יומני גן החיות.
צומת התאמות גן החיות לא ממלא בקשות
צומת שלzoKeeper במתחם עלול להיות לא תקין ולא יוכל להגיב לבקשות לקוח. הסיבה לכך יכולה להיות:
- הצומת הופסק ללא הפעלה מחדש.
- הצומת הופעל מחדש בלי שהתכונה 'הפעלה אוטומטית' הופעלה.
- עומס מערכת על הצומת גרם לירידה או לפגיעה בתקינותו.
אבחון
- מפעילים את הפקודות הבאות של בדיקת התקינות של גן החיות בכל אחד מהצמתים שלzoKeeper
ובודקים את הפלט:
-
$ echo "ruok" | nc localhost 2181
פלט לדוגמה:
$ echo "ruok" | nc localhost 2181 imok
-
echo srvr | nc localhost 2181
עליך לבדוק את המצב כדי לקבוע אם הצומת שלzoKeeper הוא מוביל או עוקב.
דוגמה לפלט של צומת אחד בלבד שלzoKeeper:
$ echo srvr | nc localhost 2181 ZooKeeper version: 3.4.5-1392090, built on 09/30/2012 17:52 GMT Latency min/avg/max: 0/0/88 Received: 4206601 Sent: 4206624 Connections: 8 Outstanding: 0 Zxid: 0x745 Mode: standalone Node count: 282
-
$ echo mntr | nc localhost 2181
פקודה זו מפרטת את המשתנים שלzoKeeper שבהם אפשר להשתמש כדי לבדוק את התקינות של אשכול התאמות החיות.
פלט לדוגמה:
$ echo mntr | nc localhost 2181 zk_version 3.4.5-1392090, built on 09/30/2012 17:52 GMT zk_avg_latency 0 zk_max_latency 88 zk_min_latency 0 zk_packets_received 4206750 zk_packets_sent 4206773 zk_num_alive_connections 8 zk_outstanding_requests 0 zk_server_state standalone zk_znode_count 282 zk_watch_count 194 zk_ephemerals_count 1 zk_approximate_data_size 22960 zk_open_file_descriptor_count 34 zk_max_file_descriptor_count 4096
-
$ echo stat | nc localhost 2181
פקודה זו מציגה נתונים סטטיסטיים לגבי ביצועים ולקוחות מחוברים.
פלט לדוגמה:
$ echo stat | nc localhost 2181 ZooKeeper version: 3.4.5-1392090, built on 09/30/2012 17:52 GMT Clients: /10.128.0.8:54152[1](queued=0,recved=753379,sent=753385) /10.128.0.8:53944[1](queued=0,recved=980269,sent=980278) /10.128.0.8:54388[1](queued=0,recved=457094,sent=457094) /10.128.0.8:54622[1](queued=0,recved=972938,sent=972938) /10.128.0.8:54192[1](queued=0,recved=150843,sent=150843) /10.128.0.8:44564[1](queued=0,recved=267332,sent=267333) /127.0.0.1:40820[0](queued=0,recved=1,sent=0) /10.128.0.8:53960[1](queued=0,recved=150844,sent=150844) Latency min/avg/max: 0/0/88 Received: 4206995 Sent: 4207018 Connections: 8 Outstanding: 0 Zxid: 0x745 Mode: standalone Node count: 282
-
$ echo cons | nc localhost 2181
פקודה זו נותנת פרטים מורחבים על החיבורים שלzoKeeper.
פלט לדוגמה:
$ echo cons | nc localhost 2181 /127.0.0.1:40864[0](queued=0,recved=1,sent=0) /10.128.0.8:54152[1](queued=0,recved=753400,sent=753406,sid=0x15d521a96d40007, lop=PING,est=1500321588647,to=40000,lcxid=0x972e9,lzxid=0x745,lresp=1502334173174, llat=0,minlat=0,avglat=0,maxlat=26) /10.128.0.8:53944[1](queued=0,recved=980297,sent=980306,sid=0x15d521a96d40005, lop=PING,est=1500321544896,to=40000,lcxid=0xce92a,lzxid=0x745,lresp=1502334176055, llat=0,minlat=0,avglat=0,maxlat=23) /10.128.0.8:54388[1](queued=0,recved=457110,sent=457110,sid=0x15d521a96d4000a, lop=PING,est=1500321673852,to=40000,lcxid=0x4dbe3,lzxid=0x745,lresp=1502334174245, llat=0,minlat=0,avglat=0,maxlat=22) /10.128.0.8:54622[1](queued=0,recved=972967,sent=972967,sid=0x15d521a96d4000b, lop=PING,est=1500321890175,to=40000,lcxid=0xccc9d,lzxid=0x745,lresp=1502334182417, llat=0,minlat=0,avglat=0,maxlat=88) /10.128.0.8:54192[1](queued=0,recved=150848,sent=150848,sid=0x15d521a96d40008, lop=PING,est=1500321591985,to=40000,lcxid=0x8,lzxid=0x745,lresp=1502334184475, llat=3,minlat=0,avglat=0,maxlat=19) /10.128.0.8:44564[1](queued=0,recved=267354,sent=267355,sid=0x15d521a96d4000d, lop=PING,est=1501606633426,to=40000,lcxid=0x356e2,lzxid=0x745,lresp=1502334182315, llat=0,minlat=0,avglat=0,maxlat=35) /10.128.0.8:53960[1](queued=0,recved=150848,sent=150848,sid=0x15d521a96d40006, lop=PING,est=1500321547138,to=40000,lcxid=0x5,lzxid=0x745,lresp=1502334177036, llat=1,minlat=0,avglat=0,maxlat=20)
אם באחת מ-3 הפקודות האחרונות של בדיקת התקינות מוצגת ההודעה הבאה:
$ echo stat | nc localhost 2181 This ZooKeeper instance is not currently serving requests
אז הוא מציין שצמתים ספציפיים שלzoKeeper לא מגישים בקשות.
-
- יש לבדוק את יומני גן החיות בצומת הספציפי ולנסות לאתר שגיאות שגורמות
להשבתה של גן החיות. יומני {/5}Keeper זמינים בספרייה הבאה:
$ cd /opt/apigee/var/log/apigee-zookeeper $ ls -l total 188 -rw-r--r--. 1 apigee apigee 2715 Jul 22 19:51 apigee-zookeeper.log -rw-r--r--. 1 apigee apigee 10434 Jul 17 19:51 config.log -rw-r--r--. 1 apigee apigee 169640 Aug 1 19:51 zookeeper.log
רזולוציה
- מפעילים מחדש את כל הצמתים האחרים שלzoKeeper באשכול, אחד בכל פעם.
- מריצים מחדש את הפקודות של בדיקת התקינות של גן החיות בכל צומת כדי לראות אם מתקבלת הפלט הצפוי.
אם הבעיה נמשכת או אם האתחול לא פותר את הבעיה, מומלץ לפנות לתמיכה של Apigee כדי לפתור את הבעיה.