درحال مشاهده اسناد Apigee Edge هستید.
به
اسناد Apigee X بروید. اطلاعات
نشانه
مشکلات اتصالپذیری ZooKeeper میتواند بهصورت علائم مختلفی ظاهر شود، ازجمله:
- خطاهای استقرار پراکسی میانای برنامهسازی کاربردی
- فراخوانیهای «میانای برنامهسازی کاربردی مدیریت» با خطاهای 5XX ناموفق است
- مسیریابها یا پردازشگرهای پیام شروع نمیشوند
- مؤلفههای Analytics قطع اتصال ZooKeeper را در system.logs گزارش میکنند
پیامهای خطا
در زیر نمونههایی از پیامهای خطا ارائه شده است که ممکن است هنگام قطع شدن اتصال به گره(های) ZooKeeper مشاهده شود.
- وقتی استقرار «پراکسی میانای برنامهسازی کاربردی» بهدلیل ازدست رفتن اتصال 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]
- واسط کاربر New Edge ممکن است خطای زیر را نشان دهد که نشان میدهد
نتوانسته است وضعیت استقرار پراکسیهای API را بررسی کند:
Error Fetching Deployments Error while checking path existence for path: path
علل احتمالی
جدول زیر دلایل احتمالی این مشکل را فهرست میکند:
| علت | برای |
|---|---|
| مشکل اتصال شبکه در مراکز داده مختلف | کاربران Edge Private Cloud |
| گره ZooKeeper درخواستها را ارائه نمیدهد | کاربران Edge Private Cloud |
برای دیدن راهحلهای احتمالی برای آن علت، روی پیوندی در جدول کلیک کنید.
مشکل اتصالپذیری شبکه در مراکز داده مختلف
تشخیص
خوشه ZooKeeper ممکن است گرههایی داشته باشد که در چندین منطقه/مرکز داده گسترده شدهاند، مانند DC-1 و DC-2. توپولوژی معمول Apigee Edge 2 DC شامل موارد زیر است:
- کارسازهای ZooKeeper 1، 2، و 3 بهعنوان رأیدهنده در DC-1
- ZooKeeper 4 و 5 بهعنوان رأیدهنده و ZooKeeper 6 بهعنوان ناظر در DC-2.
If DC-1 region goes down or network connectivity between DC-1 and DC-2 is broken, then ZooKeeper nodes cannot elect a new leader in DC-2 and they fail to communicate with the leader node. ناظران ZooKeeper نمیتوانند رهبر جدیدی انتخاب کنند و دو رأیدهنده باقیمانده در DC-2 حدنصاب حداقل ۳ گره رأیدهنده را برای انتخاب رهبر جدید ندارند. بنابراین، ZooKeepers در DC-2 نمیتوانند هیچ درخواستی را پردازش کنند. گرههای ZooKeeper باقیمانده در DC-2 به تلاش برای اتصال مجدد به رأیدهندگان ZooKeeper برای یافتن رهبر ادامه میدهند.
وضوح
راهحلهای زیر را به ترتیب مشخصشده اعمال کنید تا این مشکل برطرف شود.
اگر پساز امتحان کردن این راهحلها نتوانستید مشکل را حل کنید، با پشتیبانی Apigee تماس بگیرید.
راهحل شماره ۱
- با سرپرستان شبکهتان همکاری کنید تا مشکل اتصال شبکه بین مراکز داده را برطرف کنید.
- وقتی گروه ZooKeeper بتواند در مراکز داده ارتباط برقرار کند و رهبر ZooKeeper را انتخاب کند، گرهها باید سالم شوند و بتوانند درخواستها را پردازش کنند.
راهحل ۲
- اگر تعمیر اتصال شبکه زمانبر است، راهحل جایگزین این است که گرههای ZooKeeper را در منطقهای که قطع هستند دوباره پیکربندی کنید. برای مثال، خوشه ZooKeeper را در DC-2 بازپیکربندی کنید تا ۳ گره ZooKeeper در این منطقه همه رأیدهنده باشند و
server.#را درzoo.cfgاز ZooKeeperهای منطقه 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
- بااستفاده از کد با پیکربندی،
فایل
/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-East برداشته میشوند و گرههای 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را از ۴ به ۱ تغییر دهید. - برای
server.2،myidرا از ۵ به ۲ تغییر دهید. - برای
server.3،myidرا از ۶ به ۳ تغییر دهید.
- برای
- گرههای ZooKeeper را در منطقهای که خوشه ZooKeeper را بازپیکربندی کردهاید بازراهاندازی کنید.
- پیکربندی بالا را از مرحله ۱ب تا مرحله ۵ در همه گرههای 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
برونداد این فرمان حاوی خطی خواهد بود که میگوید «حالت» و بهدنبال آن «رهبر» (اگر رهبر باشد) یا «پیرو» (اگر پیرو باشد).
وقتی شبکه بین مراکز داده دوباره برقرار شد، تغییرات پیکربندی ZooKeeper را میتوان در گرههای ZooKeeper در DC-2 برگرداند.
راهحل ۳
- اگر گره(های) 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 یکپارچه:
$ 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)
اگر هریک از ۳ فرمان بررسی سلامت آخر پیام زیر را نشان دهد:
$ echo stat | nc localhost 2181 This ZooKeeper instance is not currently serving requests
سپس نشان میدهد که گره(های) 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
وضوح
- همه گرههای ZooKeeper دیگر را در خوشه یکییکی بازراهاندازی کنید.
- فرمانهای بررسی سلامت ZooKeeper را روی هر گره دوباره اجرا کنید و ببینید آیا برونداد موردانتظار را دریافت میکنید یا نه.
اگر مشکل بار سیستم ادامه داشت یا بازراهاندازی مشکل را حل نکرد، برای عیبیابی علت بار سیستم با پشتیبانی Apigee تماس بگیرید.