شما در حال مشاهده اسناد Apigee Edge هستید.
به مستندات Apigee X بروید . اطلاعات
علامت
نمی توان فرآیند ZooKeeper را شروع کرد.
پیام های خطا
هنگامی که میخواهید فرآیند ZooKeeper را شروع کنید، پیغام خطای زیر برگردانده میشود که نشان میدهد ZooKeeper نمیتواند راهاندازی شود:
+ apigee-service apigee-zookeeper status apigee-service: apigee-zookeeper: Not running (DEAD) apigee-all: Error: status failed on [apigee-zookeeper]
علل احتمالی
جدول زیر دلایل احتمالی این مشکل را فهرست می کند:
علت | برای |
---|---|
Myid ZooKeeper اشتباه پیکربندی شده است | کاربران Edge Private Cloud |
درگاه ZooKeeper در حال استفاده است | کاربران Edge Private Cloud |
شناسه فرآیند نادرست در فایل apigee-zookeeper.pid | کاربران Edge Private Cloud |
شکست در انتخابات رهبر باغ وحش | کاربران Edge Private Cloud |
برای مشاهده راه حل های ممکن برای آن علت، روی پیوندی در جدول کلیک کنید.
Myid ZooKeeper اشتباه پیکربندی شده است
بخشهای زیر نمای کلی فایل myid را ارائه میکنند و نحوه تشخیص و رفع مشکلات پیکربندی نادرست را شرح میدهند.
نمای کلی فایل myid
در هر گره ZooKeeper، دو فایل وجود دارد:
- فایل
/opt/apigee/apigee-zookeeper/conf/zoo.cfg
که حاوی لیستی از IPها برای تمام گره های ZooKeeper در خوشه است.به عنوان مثال، اگر
/opt/apigee/apigee-zookeeper/conf/zoo.cfg
حاوی IPهای 3 گره ZooKeeper بخشی از خوشه به شرح زیر باشد:server.1=11.11.11.11:2888:3888 server.2=22.22.22.22:2888:3888 server.3=33.33.33.33:2888:3888
- فایل
/opt/apigee/data/apigee-zookeeper/data/myid
حاوی یک خط متن است که با شماره سرور آن گره ZooKeeper خاص مطابقت دارد. myid سرور 1 حاوی متن "1" است و هیچ چیز دیگری. شناسه باید در مجموعه منحصر به فرد باشد و باید مقداری بین 1 تا 255 داشته باشد.برای مثال، در سرور ZooKeeper.1، فایل
/opt/apigee/data/apigee-zookeeper/data/myid
باید فقط حاوی متن 1 باشد که در زیر نشان داده شده است:$ cat myid 1
تشخیص
- گزارش ZooKeeper
/opt/apigee/var/log/apigee-zookeeper/zookeeper.log
را برای وجود خطا بررسی کنید. - اگر همانطور که در شکل زیر نشان داده شده است، پیام WARN مشابه "Connection break for id #, my id = #" را مشاهده کردید، دلیل احتمالی این مشکل می تواند پیکربندی اشتباه یا خراب بودن سرور # در فایل myid باشد.
[myid:2] - WARN [RecvWorker:2:QuorumCnxManager$RecvWorker@762] - Connection broken for id 2, my id = 2, error = java.io.EOFException at java.io.DataInputStream.readInt(DataInputStream.java:375) at org.apache.zookeeper.server.quorum.QuorumCnxManager$RecvWorker. run(QuorumCnxManager.java:747)
- فایل
/opt/apigee/apigee-zookeeper/conf/zoo.cfg
را بررسی کنید و سرور.# را برای گره ZooKeeper فعلی یادداشت کنید. - فایل
/opt/apigee/data/apigee-zookeeper/data/myid
بررسی کنید و ببینید آیا متن این فایل با سرور مطابقت دارد یا خیر.# که در مرحله 2 ذکر شد. - اگر ناهماهنگی وجود داشته باشد، شما علت شروع نشدن ZooKeeper را شناسایی کردهاید.
قطعنامه
اگر فایل myid به درستی پیکربندی نشده است، فایل myid را ویرایش کنید و مقدار آن را با یک متن صحیح که پارامتر سرور.# را در zoo.cfg نشان میدهد جایگزین کنید.
درگاه ZooKeeper در حال استفاده است
تشخیص
- ZooKeeper log
/opt/apigee/var/log/apigee-zookeeper/zookeeper.log
را برای خطا بررسی کنید. - اگر به استثنای
java.net.BindException: Address already in use
، همانطور که در شکل زیر نشان داده شده است، نشان می دهد که پورت ZooKeeper 2181 توسط فرآیند دیگری استفاده می شود. بنابراین، ZooKeeper نمی تواند راه اندازی شود.2017-04-26 07:00:10,420 [myid:3] - INFO [main:NIOServerCnxnFactory@94] - binding to port 0.0.0.0/0.0.0.0:2181 2017-04-26 07:00:10,421 [myid:3] - ERROR [main:QuorumPeerMain@89] - Unexpected exception, exiting abnormally java.net.BindException: Address already in use at sun.nio.ch.Net.bind0(Native Method) at sun.nio.ch.Net.bind(Net.java:433) at sun.nio.ch.Net.bind(Net.java:425) at sun.nio.ch.ServerSocketChannelImpl.bind(ServerSocketChannelImpl.java:223) at sun.nio.ch.ServerSocketAdaptor.bind(ServerSocketAdaptor.java:74) at sun.nio.ch.ServerSocketAdaptor.bind(ServerSocketAdaptor.java:67) at org.apache.zookeeper.server.NIOServerCnxnFactory.configure(NIOServerCnxnFactory.java:95) at org.apache.zookeeper.server.quorum.QuorumPeerMain.runFromConfig(QuorumPeerMain.java:130) at org.apache.zookeeper.server.quorum.QuorumPeerMain.initializeAndRun(QuorumPeerMain.java:111) at org.apache.zookeeper.server.quorum.QuorumPeerMain.main(QuorumPeerMain.java:78)
- از دستور netstat زیر استفاده کنید تا تأیید کنید که پورت ZooKeeper 2181 واقعاً توسط فرآیند دیگری استفاده می شود:
netstat -an | grep 2181
قطعنامه
اگر پورت ZooKeeper 2181 هنوز در حال استفاده است، برای رفع این مشکل مراحل زیر را دنبال کنید:
- از دستور
netstat
برای یافتن فرآیندی که در پورت 2181 نگه داشته شده است استفاده کنید. فرآیندی را که از پورت ZooKeeper 2181 استفاده می کند را بکشید:$ netstat -antp | grep 2181 tcp 0 0 0.0.0.0:2181 0.0.0.0:* LISTEN 28016/java <defunct> $ kill -9 28016
- فایلهای pid را پاک کنید و در صورت وجود قفل کنید:
/opt/apigee/var/run/apigee-zookeeper/apigee-zookeeper.pid /opt/apigee/var/run/apigee-zookeeper/apigee-zookeeper.lock
- ZooKeeper را مجدداً راه اندازی کنید:
/opt/apigee/apigee-service/bin/apigee-service apigee-zookeeper restart
شناسه فرآیند نادرست در فایل apigee-zookeeper.pid
وقتی سعی میکنید ZooKeeper را متوقف/راهاندازی مجدد کنید، ممکن است شکست بخورد زیرا فایل apigee-zookeeper.pid
حاوی پید قدیمیتر/نادرست است و نه مربوط به فرآیند در حال اجرا ZooKeeper. اگر فرآیند ZooKeeper به دلایلی به طور غیرمنتظره یا ناگهانی خاتمه یابد و فایل apigee-zookeeper.pid
حذف نشده باشد، ممکن است این اتفاق بیفتد.
تشخیص
- با اجرای دستور
ps
شناسه فرآیند پروسه ZooKeeper در حال اجرا را دریافت کنید:ps -ef | grep zookeeper
- بررسی کنید که فایل
/opt/apigee/var/run/apigee-ZooKeeper/apigee-zookeeper.pid
وجود دارد یا خیر. اگر وجود دارد، شناسه فرآیند نوشته شده در این فایل را یادداشت کنید. - شناسههای فرآیند گرفته شده از مرحله 1 و 2 را مقایسه کنید. اگر آنها متفاوت هستند، پس دلیل این مشکل داشتن شناسه فرآیند نادرست در
apigee-zookeeper.pid file.
قطعنامه
- فایل apigee-zookeeper.pid را ویرایش کنید و شناسه پردازش نادرست را با شناسه پردازش صحیح که از دستور ps بدست آمده است جایگزین کنید (مرحله شماره 1 در بالا).
- ZooKeeper را مجدداً راه اندازی کنید:
/opt/apigee/apigee-service/bin/apigee-service apigee-zookeeper restart
شکست در انتخابات رهبر باغ وحش
تشخیص
برای تشخیص:
- گزارش ZooKeeper
/opt/apigee/var/log/apigee-zookeeper/zookeeper.log
را برای وجود خطا بررسی کنید. - بررسی کنید که آیا تغییراتی در پیکربندی وجود دارد که ممکن است باعث شکست انتخاب رهبر ZooKeeper شود.
- پارامتر
/opt/apigee/apigee-zookeeper/conf/zoo.cfg
را بررسی کنید و مطمئن شوید که همه ZooKeepers در خوشه دارای شماره و آدرس IP مناسب برای سرور.# هستند. همچنین توجه داشته باشید که برای موفقیت در انتخابات رهبر باید حداقل 3 رای دهنده وجود داشته باشد و تعداد رای دهندگان باید فرد باشد. اگر تعداد رای دهندگان خیلی کم باشد، مانند فقط 2 رای دهنده، نمی توان به حد نصاب رسید تا یک رهبر را از بین 2 رای دهنده تعیین کند.
قطعنامه
به طور معمول، شکست در انتخابات ZooKeeper به دلیل پیکربندی اشتباه myid ایجاد می شود. از رزولوشن موجود در Myid ZooKeeper Misconfigured برای رسیدگی به شکست انتخابات استفاده کنید.
اگر مشکل ادامه داشت و نیاز به تشخیص بیشتر است، با پشتیبانی Apigee Edge تماس بگیرید.