คุณกำลังดูเอกสารประกอบ Apigee Edge
ไปที่
เอกสารประกอบเกี่ยวกับ Apigee X. ข้อมูล
ลักษณะปัญหา
ปัญหาการเชื่อมต่อของ ZooKeeper อาจแสดงออกมาในลักษณะต่างๆ เช่น
- ข้อผิดพลาดในการทำให้พร็อกซี API ใช้งานได้
- การเรียก API การจัดการล้มเหลวโดยมีข้อผิดพลาด 5XX
- เราเตอร์หรือตัวประมวลผลข้อความไม่สามารถเริ่มทำงาน
- คอมโพเนนต์ของ Analytics รายงานการสูญเสียการเชื่อมต่อของ ZooKeeper ใน system.logs
ข้อความแสดงข้อผิดพลาด
ตัวอย่างข้อความแสดงข้อผิดพลาดที่อาจสังเกตได้มีดังนี้ การสูญเสียการเชื่อมต่อกับโหนด ZooKeeper
- ข้อผิดพลาดต่อไปนี้จะปรากฏในบันทึกเซิร์ฟเวอร์การจัดการเมื่อทำให้พร็อกซี API ใช้งานได้
ล้มเหลวเนื่องจาก 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
- ในระหว่างการเริ่มต้น เราเตอร์และ Message Processor จะเชื่อมต่อกับ 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 UI อาจแสดงข้อผิดพลาดต่อไปนี้ โดยระบุว่าไม่สามารถตรวจสอบ
สถานะการทำให้ใช้งานได้ของพร็อกซี API:
Error Fetching Deployments Error while checking path existence for path: path
สาเหตุที่เป็นไปได้
ตารางต่อไปนี้แสดงสาเหตุที่เป็นไปได้ของปัญหานี้
สาเหตุ | สำหรับ |
---|---|
ปัญหาการเชื่อมต่อเครือข่ายในศูนย์ข้อมูลอื่นๆ | ผู้ใช้ Edge Private Cloud |
คำขอของโหนด ZoKeeper ที่ไม่แสดงผล | ผู้ใช้ Edge Private Cloud |
คลิกลิงก์ในตารางเพื่อดูวิธีแก้ปัญหาที่เป็นไปได้สำหรับสาเหตุนั้นๆ
ปัญหาการเชื่อมต่อเครือข่ายในศูนย์ข้อมูลอื่นๆ
การวินิจฉัย
คลัสเตอร์ ZooKeeper อาจมีโหนดที่ครอบคลุมหลายภูมิภาค/ศูนย์ข้อมูล เช่น DC-1 และ DC-2 โทโพโลยีทั่วไปของ Apigee Edge 2 DC จะมีสิ่งต่อไปนี้
- Zoo Keeper เซิร์ฟเวอร์ 1, 2 และ 3 ในฐานะผู้ลงคะแนนใน DC-1
- ZooKeeper 4 และ 5 ในฐานะผู้มีสิทธิ์เลือกตั้งและ ZooKeeper 6 ในฐานะผู้สังเกตการณ์ใน DC-2
หากภูมิภาค DC-1 ขัดข้องหรือการเชื่อมต่อเครือข่ายระหว่าง DC-1 และ DC-2 เสียหาย โหนด ZooKeeper ไม่สามารถเลือกผู้นำคนใหม่ใน DC-2 ได้ และไม่สามารถสื่อสารกับผู้นำนั้น ผู้สังเกตการณ์ ZooKeeper ไม่สามารถเลือกผู้นำคนใหม่ได้ และผู้ลงคะแนน 2 คนที่เหลือใน DC-2 ไม่ได้ มีองค์การของผู้มีสิทธิ์เลือกตั้งอย่างน้อย 3 คะแนนเพื่อเลือกผู้นำคนใหม่ ดังนั้น ZooKeepers ใน DC-2 จะ ไม่สามารถดำเนินการตามคำขอได้ โหนด ZooKeeper ที่เหลืออยู่ใน DC-2 จะยังคงวนซ้ำต่อไป พยายามเชื่อมต่อกลับไปยังผู้โหวตใน ZooKeeper อีกครั้งเพื่อหาผู้นำออก
ความละเอียด
ใช้วิธีแก้ปัญหาต่อไปนี้เพื่อแก้ไขปัญหานี้ตามลำดับที่ระบุ
หากยังแก้ปัญหาไม่ได้หลังจากลองทำตามวิธีแก้ปัญหาเหล่านี้แล้ว โปรด โปรดติดต่อทีมสนับสนุนของ Apigee
โซลูชันที่ 1
- ประสานงานกับผู้ดูแลเครือข่ายเพื่อซ่อมแซมปัญหาการเชื่อมต่อเครือข่ายระหว่าง ศูนย์ข้อมูลของเรา
- เมื่อชุดของ Zookeeper สามารถสื่อสารผ่านศูนย์ข้อมูลต่างๆ และเลือก ผู้นำ ZooKeeper โหนดควรมีประสิทธิภาพดีและดำเนินการตามคำขอได้
โซลูชันที่ 2
- หากการเชื่อมต่อเครือข่ายต้องใช้เวลาในการซ่อมแซม วิธีแก้ปัญหาเบื้องต้นคือการกำหนดค่าใหม่
โหนด Zoo Keeper ในภูมิภาคที่หยุดทำงาน ตัวอย่างเช่น กำหนดค่า ZooKeeper ใหม่
คลัสเตอร์ใน DC-2 เพื่อให้โหนด ZooKeeper ทั้ง 3 โหนดในภูมิภาคนี้เป็นผู้ลงคะแนนเสียงทั้งหมด และนำ
server.#
ในzoo.cfg
ของ ZooKeepers จาก DC-1- ในตัวอย่างต่อไปนี้
zoo.cfg
จะกำหนดค่าโหนดสำหรับ 2 ภูมิภาคที่ 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
- การใช้โค้ดที่มีการกำหนดค่า
สร้างไฟล์
/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\
ในกรณีข้างต้น โหนดจากฝั่ง US-EST จะถูกนำออก และโหนด US-West จะได้รับการเลื่อนระดับเป็น ผู้โหวตเมื่อคำอธิบายประกอบ
: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
- สำหรับ
- รีสตาร์ทโหนด ZooKeeper ในภูมิภาคที่คุณกำหนดค่า ZooKeeper ใหม่ คลัสเตอร์
- ทำการกำหนดค่าข้างต้นซ้ำตั้งแต่ขั้นตอนที่ 1b ถึงขั้นตอนที่ 5 ในโหนด ZooKeeper ทั้งหมดใน 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" ตามด้วย "ผู้นำ" ถ้า เป็นผู้นำหรือ "ผู้ติดตาม" หากเป็นผู้ติดตาม
เมื่อมีการสร้างเครือข่ายระหว่างศูนย์ข้อมูลขึ้นอีกครั้ง การกำหนดค่า ZooKeeper สามารถเปลี่ยนกลับการเปลี่ยนแปลงได้ในโหนด ZooKeeper ใน DC-2
โซลูชันที่ 3
- หากโหนด ZooKeeper ในคลัสเตอร์ไม่เริ่มทำงาน ให้รีสตาร์ทโหนด
- ตรวจสอบบันทึกของ ZooKeeper เพื่อหาสาเหตุที่โหนด ZooKeeper หยุดทำงาน
บันทึกของ ZooKeeper มีอยู่ในไดเรกทอรีต่อไปนี้
$ 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 เพื่อแก้ปัญหาเกี่ยวกับสาเหตุของโหนด ZooKeeper ที่อาจหยุดทำงาน
โหนด ZooKeeper ไม่แสดงคำขอ
โหนด ZooKeeper ในชุดอุปกรณ์อาจทำงานได้ไม่ดีและไม่สามารถตอบสนองต่อไคลเอ็นต์ คำขอ ซึ่งอาจเป็นเพราะสาเหตุต่อไปนี้
- โหนดหยุดทำงานโดยไม่ได้รีสตาร์ท
- โหนดเริ่มต้นใหม่โดยไม่ได้เปิดใช้การเริ่มต้นอัตโนมัติ
- ภาระงานของระบบในโหนดทำให้โหนดลดลงหรือมีประสิทธิภาพไม่ดี
การวินิจฉัย
- เรียกใช้คำสั่งตรวจสอบประสิทธิภาพการทำงานของ ZooKeeper ต่อไปนี้บนโหนด ZooKeeper แต่ละรายการและ
ให้ตรวจสอบเอาต์พุตดังนี้
-
$ echo "ruok" | nc localhost 2181
ตัวอย่างเอาต์พุต:
$ echo "ruok" | nc localhost 2181 imok
-
echo srvr | nc localhost 2181
ตรวจสอบโหมดเพื่อระบุว่าโหนด ZooKeeper เป็นผู้นำหรือผู้ติดตาม
ตัวอย่างเอาต์พุตสำหรับโหนด ZooKeeper เพียงโหนดเดียวแบบ All in One
$ 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
คำสั่งนี้แสดงตัวแปร ZooKeeper ที่ใช้ตรวจสอบประสิทธิภาพของ คลัสเตอร์ ZooKeeper
ตัวอย่างเอาต์พุต:
$ 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 ที่เฉพาะเจาะจงไม่ได้แสดงคำขอ
-
- ตรวจสอบบันทึกของ ZooKeeper ในโหนดนั้นและพยายามหาข้อผิดพลาดที่ทําให้เกิด
Zoo Keeper หยุดทำงาน บันทึกของ ZooKeeper มีอยู่ในไดเรกทอรีต่อไปนี้
$ 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
ความละเอียด
- รีสตาร์ทโหนด ZooKeeper อื่นๆ ทั้งหมดในคลัสเตอร์ทีละรายการ
- เรียกใช้คำสั่งตรวจสอบประสิทธิภาพการทำงานของ ZooKeeper อีกครั้งในแต่ละโหนดและดูว่าคุณได้รับ เอาต์พุต
ติดต่อทีมสนับสนุนของ Apigee เพื่อแก้ปัญหาสำหรับ การโหลดระบบหากปัญหายังคงอยู่หรือหากการรีสตาร์ทไม่ช่วยแก้ปัญหา