מוצג המסמך של Apigee Edge.
עוברים אל
מסמכי תיעוד של Apigee X. מידע
תיאור הבעיה
בעיות הקישוריות שלzoKeeper עשויות לבוא לידי ביטוי בתסמינים שונים, כמו:
- שגיאות בפריסה של שרת proxy ל-API
- קריאות ל-Management API נכשלות עם שגיאות 5XX
- לא ניתן להפעיל נתבים או מעבדי הודעות
- רכיבי Analytics מדווחים על איבוד החיבור של ZoomKeeper ב-system.logs
הודעות שגיאה
דוגמאות להודעות שגיאה שעשויות להופיע כאשר אובדן החיבור לצמתים של ZoomKeeper.
- השגיאה הבאה מוחזרת ביומנים של שרת הניהול כשפריסת API של שרת Proxy
נכשל בגלל אבדן החיבור ל-ZooKeeper:
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
- במהלך ההפעלה, הנתבים ומעבדי ההודעות מתחברים ל-ZooKeeper. אם יש
בעיות קישוריות ב-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 בענן פרטי |
כדי לראות פתרונות אפשריים לבעיה, לוחצים על קישור בטבלה.
בעיה בקישוריות רשת במרכזי נתונים שונים
אבחון
אשכול של ZoKeeper עשוי להכיל צמתים שמתפרשים על פני מספר אזורים או מרכזי נתונים, כמו DC-1 ו-DC-2. הטופולוגיה הטיפוסית של Apigee Edge 2 DC כוללת:
- ZoKeeper משרת את 1, 2 ו-3 כמצביעים ב-DC-1
- ZoKeeper 4 ו-5 כמצביעים, ו-zoKeeper 6 כצופה ב-DC-2.
אם אזור DC-1 מתנתק או שהחיבור לרשת בין DC-1 ל-DC-2 מתנתק, צמתים ב-ZooKeeper לא יכולים לבחור מנהיג חדש ב-DC-2 והם לא מצליחים לתקשר עם המנהיג. . השומרים ב-ZoKeeper לא יכולים לבחור מנהיג חדש, ושני המצביעים הנותרים ב-DC-2 לא יכולים לבחור יהיה לכם קוורום של לפחות 3 מיקומי מצביעים לבחירת מנהיג חדש. כך, הזואו Keepers ב-DC-2 לא יוכלו לעבד בקשות. הצמתים הנותרים ב-ZooKeeper ב-DC-2 ימשיכו לפעול בלולאה מנסה להתחבר שוב אל המצביעים ב-ZooKeeper כדי למצוא את המנהיג.
רזולוציה
כדי לפתור את הבעיה הזו לפי הסדר שצוין, צריך ליישם את הפתרונות הבאים.
אם לא הצלחת לפתור את הבעיה אחרי שניסית את הפתרונות האלה, לפנות לתמיכה של Apigee.
פתרון מס' 1
- כדאי לעבוד עם מנהלי הרשת כדי לתקן את בעיית הקישוריות לרשת בין מרכזי נתונים.
- כאשר ההרכב של ZzooKeeper יכול לתקשר בין מרכזי הנתונים ולבחור ב-ZooKeeper, הצמתים צריכים להיות בריאים ולהיות מסוגלים לעבד בקשות.
פתרון מס' 2
- אם ייקח זמן לתקן את החיבור לרשת, הדרך לעקוף את הבעיה היא להגדיר מחדש את הבעיה.
צמתים ב-ZooKeeper באזור שבו הם לא נמצאים. לדוגמה, צריך להגדיר מחדש את ZoomKeeper
אשכול ב-DC-2, כך ש-3 הצמתים של ZoKeeper באזור הזה הם מצביעים, ומסירים את
server.#
ב-zoo.cfg
של גן החיות של DC-1 באזור DC-1.- בדוגמה הבאה,
zoo.cfg
מגדיר צמתים ל-2 אזורים שבהם DC-1 משתמשת ב-us-ea
שמות מארחים שמאזכרים את אזור מזרח ארה"ב ואת DC-2 משתמשים בשמות מארחים עםus-wo
של אזור ארה"ב-מערב. (הערה: רק הגדרות רלוונטיות מוצגות):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. - משנים את
myid
שלserver.2
מ-5 ל-2. - עבור
server.3
, משנים אתmyid
מ-6 ל-3.
- עבור
- הפעלה מחדש של הצמתים של ZzooKeeper באזור שבו הגדרתם מחדש את ZoomKeeper. אשכול.
- חוזרים על ההגדרה שלמעלה משלב 1ב' עד שלב 5' בכל הצמתים שלzoKeeper 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
הפלט של הפקודה הזו יכיל שורה עם הכיתוב 'מצב'. ולאחר מכן 'Leader' אם זה הוא המנהיג, או "עוקב" אם הוא עוקב.
כשמתחדשת החיבור של הרשת בין מרכזי הנתונים, ההגדרות של ZoomKeeper ניתן לבטל שינויים בצמתים שלZoKeeper ב-DC-2.
פתרון מס' 3
- אם הצמתים של גן חיות באשכול לא מופעלים, צריך להפעיל אותו מחדש.
- בודקים את יומני GeminiKeeper כדי להבין למה הצומת שלzoKeeper ירד.
יומני ZoomKeeper זמינים בספרייה הבאה:
$ 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 ושולחים את הנתונים מ-ZooKeeper מתקיימים כדי לפתור את הבעיה בכל צומת של ZoomKeeper שייתכן שנעצר.
הצומת של ZoomKeeper לא ממלא בקשות
צומת שלzoKeeper במרשם עלול להפוך ללא בריא ולא יוכל להגיב ללקוח בקשות. הסיבה לכך יכולה להיות:
- הצומת הופסק בלי להפעיל אותו מחדש.
- הצומת הופעל מחדש ללא הפעלה אוטומטית.
- עומס המערכת בצומת גרם לירידה או להיות לא בריא.
אבחון
- לבצע את הפקודות הבאות לבדיקת תקינות שלzoKeeper בכל אחד מהצמתים שלzoKeeper
כדי לבדוק את הפלט:
-
$ echo "ruok" | nc localhost 2181
פלט לדוגמה:
$ echo "ruok" | nc localhost 2181 imok
-
echo srvr | nc localhost 2181
בודקים את המצב כדי לקבוע אם הצומת של ZoomKeeper הוא מנהיג או עוקב.
פלט לדוגמה של כל הצומת ב-ZooKeeper אחד:
$ 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
הפקודה הזו מפרטת את המשתנים של ZoomKeeper שבאמצעותם ניתן לבדוק את התקינות של את האשכול של ZeoKeeper.
פלט לדוגמה:
$ 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
הפקודה הזו מספקת פרטים מורחבים על החיבורים ב-ZooKeeper.
פלט לדוגמה:
$ 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
לאחר מכן הוא מציין שצמתים ספציפיים ב-ZooKeeper לא מציגים בקשות.
-
- יש לבדוק את יומני ChromiumKeeper בצומת הספציפי ולנסות לאתר שגיאות שגורמות ל
גן החיות של ברית. יומני ZoomKeeper זמינים בספרייה הבאה:
$ 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
רזולוציה
- הפעלה מחדש של כל הצמתים האחרים של ZoomKeeper באשכול אחד אחרי השני.
- מריצים מחדש את הפקודות לבדיקת התקינות שלZoKeeper בכל צומת כדי לראות אם הן מתקבלות הפלט.
לפנות לתמיכה של Apigee כדי לפתור את הבעיה אם הטעינה נמשכת, או אם הפעלה מחדש לא פותרת את הבעיה.