ข้อผิดพลาดการสูญเสียการเชื่อมต่อ Zookeeper

คุณกำลังดูเอกสารประกอบ 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. ในระหว่างการเริ่มต้น เราเตอร์และ 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]
    
  3. 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

  1. ประสานงานกับผู้ดูแลเครือข่ายเพื่อซ่อมแซมปัญหาการเชื่อมต่อเครือข่ายระหว่าง ศูนย์ข้อมูลของเรา
  2. เมื่อชุดของ Zookeeper สามารถสื่อสารผ่านศูนย์ข้อมูลต่างๆ และเลือก ผู้นำ ZooKeeper โหนดควรมีประสิทธิภาพดีและดำเนินการตามคำขอได้

โซลูชันที่ 2

  1. หากการเชื่อมต่อเครือข่ายต้องใช้เวลาในการซ่อมแซม วิธีแก้ปัญหาเบื้องต้นคือการกำหนดค่าใหม่ โหนด Zoo Keeper ในภูมิภาคที่หยุดทำงาน ตัวอย่างเช่น กำหนดค่า ZooKeeper ใหม่ คลัสเตอร์ใน DC-2 เพื่อให้โหนด ZooKeeper ทั้ง 3 โหนดในภูมิภาคนี้เป็นผู้ลงคะแนนเสียงทั้งหมด และนำ 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-EST จะถูกนำออก และโหนด 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" ตามด้วย "ผู้นำ" ถ้า เป็นผู้นำหรือ "ผู้ติดตาม" หากเป็นผู้ติดตาม

    เมื่อมีการสร้างเครือข่ายระหว่างศูนย์ข้อมูลขึ้นอีกครั้ง การกำหนดค่า 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 ในโหนดนั้นและพยายามหาข้อผิดพลาดที่ทําให้เกิด 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
    

ความละเอียด

  1. รีสตาร์ทโหนด ZooKeeper อื่นๆ ทั้งหมดในคลัสเตอร์ทีละรายการ
  2. เรียกใช้คำสั่งตรวจสอบประสิทธิภาพการทำงานของ ZooKeeper อีกครั้งในแต่ละโหนดและดูว่าคุณได้รับ เอาต์พุต

ติดต่อทีมสนับสนุนของ Apigee เพื่อแก้ปัญหาสำหรับ การโหลดระบบหากปัญหายังคงอยู่หรือหากการรีสตาร์ทไม่ช่วยแก้ปัญหา