شما در حال مشاهده اسناد 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
- در طول راه اندازی، روترها و پردازشگرهای پیام به 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 ممکن است خطای زیر را نشان دهد که نشان میدهد قادر به بررسی وضعیت استقرار پراکسیهای 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.
اگر منطقه DC-1 از بین برود یا اتصال شبکه بین DC-1 و DC-2 قطع شود، گره های ZooKeeper نمی توانند یک رهبر جدید در DC-2 انتخاب کنند و نمی توانند با گره رهبر ارتباط برقرار کنند. ناظران ZooKeeper نمی توانند یک رهبر جدید انتخاب کنند و دو رای دهنده باقی مانده در DC-2 حد نصاب حداقل 3 گره رای دهنده برای انتخاب یک رهبر جدید را ندارند. بنابراین، ZooKeepers در DC-2 قادر به پردازش هیچ درخواستی نخواهند بود. گرههای باقیمانده ZooKeeper در DC-2 همچنان به حلقه زدن ادامه میدهند و تلاش میکنند دوباره به رایدهندگان ZooKeeper متصل شوند تا رهبر را پیدا کنند.
قطعنامه
راه حل های زیر را برای رفع این مشکل به ترتیب مشخص شده اعمال کنید.
اگر بعد از امتحان این راه حل ها نتوانستید مشکل را حل کنید، لطفاً با پشتیبانی Apigee تماس بگیرید.
راه حل شماره 1
- برای تعمیر مشکل اتصال شبکه بین مراکز داده با مدیران شبکه خود کار کنید.
- هنگامی که مجموعه ZooKeeper قادر به برقراری ارتباط بین مراکز داده و انتخاب یک رهبر ZooKeeper باشد، گره ها باید سالم شوند و بتوانند درخواست ها را پردازش کنند.
راه حل شماره 2
- اگر تعمیر اتصال شبکه به زمان نیاز دارد، راهحل این است که گرههای ZooKeeper را در منطقهای که در آن خاموش هستند پیکربندی مجدد کنید. به عنوان مثال، خوشه ZooKeeper را در DC-2 مجدداً پیکربندی کنید تا 3 گره ZooKeeper در این منطقه همه رای دهندگان باشند و
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
- با استفاده از کد با 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\
در بالا، گره های 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
را از 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" و اگر رهبر است "leader" و اگر دنبال کننده است "follower".
هنگامی که شبکه بین مراکز داده دوباره برقرار می شود، تغییرات پیکربندی 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 را در گره خاص بررسی کنید و سعی کنید هر گونه خطا را که باعث از کار افتادن 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 تماس بگیرید تا علت بارگذاری سیستم را در صورت تداوم آن یا راه اندازی مجدد مشکل برطرف نکرد، عیب یابی کنید.