خطاهای از دست دادن اتصال نگهبان باغ وحش

شما در حال مشاهده اسناد Apigee Edge هستید.
مشاهده مستندات Apigee X.

علامت

مشکلات اتصال ZooKeeper می تواند به صورت علائم مختلفی ظاهر شود مانند:

  1. خطاهای استقرار پروکسی API
  2. تماس‌های مدیریت API با خطاهای 5XX با شکست مواجه می‌شوند
  3. روترها یا پردازشگرهای پیام راه اندازی نمی شوند
  4. اجزای Analytics از دست رفتن اتصال ZooKeeper را در system.logs گزارش می کنند

پیغام خطا

موارد زیر نمونه‌هایی از پیام‌های خطایی را ارائه می‌دهد که ممکن است هنگام قطع اتصال به گره(های) ZooKeeper مشاهده شوند.

  1. هنگامی که استقرار پروکسی 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
    
  2. در طول راه اندازی، روترها و پردازشگرهای پیام به 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]
    
  3. رابط کاربری 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

  1. برای تعمیر مشکل اتصال شبکه بین مراکز داده با مدیران شبکه خود کار کنید.
  2. هنگامی که مجموعه ZooKeeper قادر به برقراری ارتباط بین مراکز داده و انتخاب یک رهبر ZooKeeper باشد، گره ها باید سالم شوند و بتوانند درخواست ها را پردازش کنند.

راه حل شماره 2

  1. اگر تعمیر اتصال شبکه به زمان نیاز دارد، راه‌حل این است که گره‌های ZooKeeper را در منطقه‌ای که در آن خاموش هستند پیکربندی مجدد کنید. به عنوان مثال، خوشه ZooKeeper را در DC-2 مجدداً پیکربندی کنید تا 3 گره ZooKeeper در این منطقه همه رای دهندگان باشند و server.# را در zoo.cfg ZooKeepers از منطقه DC-1 حذف کنید.
    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
      
    2. با استفاده از کد با پیکربندی ، یک فایل /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 به رای دهندگان ارتقا می یابند.

  2. /opt/apigee/apigee-zookeeper/conf/zoo.cfg و /opt/apigee/customer/application/zookeeper.properties قدیمی را پشتیبان بگیرید.

    هنگامی که اتصال شبکه بین مراکز داده پشتیبان گیری می شود، از این فایل ها برای بازیابی پیش فرض ها استفاده می شود.

  3. نماد ناظر را برای گره ناظر غیرفعال کنید. برای انجام این کار، پیکربندی زیر را به بالای /opt/apigee/customer/application/zookeeper.properties اضافه کنید:

    conf_zoo_peertype=
  4. فایل /opt/apigee/data/apigee-zookeeper/data/myid به صورت زیر ویرایش کنید:

    • برای server.1 ورودی myid را از 4 به 1 تغییر دهید.
    • برای server.2 ، myid از 5 به 2 تغییر دهید.
    • برای server.3 myid از 6 به 3 تغییر دهید.
  5. گره های ZooKeeper را در منطقه ای که خوشه ZooKeeper را مجدداً پیکربندی کرده اید، راه اندازی مجدد کنید.
  6. پیکربندی بالا را از مرحله #1b تا مرحله #5 در تمام گره های ZooKeeper در DC-2 تکرار کنید.
  7. اعتبار سنجی نودها با یک رهبر:
    $ 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

  1. اگر گره(های) ZooKeeper در خوشه شروع نشده است، آن را مجددا راه اندازی کنید.
  2. گزارش های 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
    
  3. با پشتیبانی Apigee تماس بگیرید و گزارش های ZooKeeper را برای عیب یابی علت هر گره ZooKeeper که ممکن است متوقف شده باشد ارائه دهید.

گره ZooKeeper درخواست ها را ارائه نمی دهد

یک گره ZooKeeper در مجموعه ممکن است ناسالم شود و نتواند به درخواست های مشتری پاسخ دهد. این می تواند به این دلیل باشد که:

  1. گره بدون راه اندازی مجدد متوقف شد.
  2. گره بدون فعال کردن شروع خودکار راه اندازی مجدد شد.
  3. بار سیستم روی گره باعث پایین آمدن یا ناسالم شدن آن شد.

تشخیص

  1. دستورات بررسی سلامت ZooKeeper زیر را در هر یک از گره های ZooKeeper اجرا کنید و خروجی را بررسی کنید:
    1. $ echo "ruok" | nc localhost 2181
      

      خروجی نمونه:

      $ echo "ruok" | nc localhost 2181
      imok
      
    2. 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
      
    3. $ 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
      
    4. $ 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
      
    5. $ 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 خاص درخواست ها را ارائه نمی دهد.

  2. گزارش‌های 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
    

وضوح

  1. تمام گره های دیگر ZooKeeper در خوشه را یکی یکی مجدداً راه اندازی کنید.
  2. دوباره دستورات بررسی سلامت ZooKeeper را در هر گره اجرا کنید و ببینید آیا خروجی مورد انتظار را دریافت می کنید یا خیر.

با پشتیبانی Apigee تماس بگیرید تا علت بارگذاری سیستم را در صورت تداوم آن یا راه اندازی مجدد مشکل برطرف نکرد، عیب یابی کنید.