<ph type="x-smartling-placeholder"></ph>
현재 Apigee Edge 문서를 보고 있습니다.
Apigee X 문서. 정보
증상
주키퍼 연결 문제는 다음과 같은 다양한 증상으로 나타날 수 있습니다.
- API 프록시 배포 오류
- 5XX 오류와 함께 Management API 호출 실패
- 라우터 또는 메시지 프로세서 시작 실패
- 애널리틱스 구성요소에서 system.logs에서 주키퍼 연결 끊김이 보고됨
오류 메시지
다음은 주키퍼 노드에 대한 연결 끊김
- API 프록시 배포 시 Management Server 로그에 다음 오류가 반환됩니다.
동물원 연결 끊김으로 인한 실패:
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
- 시작 시 라우터와 메시지 프로세서는 주키퍼에 연결됩니다. 만약
연결 문제가 있는 경우 이러한 구성요소가 다음과 같이 시작되지 않습니다.
오류:
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 UI에 다음을 확인할 수 없다는 오류가 표시될 수 있습니다.
API 프록시의 배포 상태:
Error Fetching Deployments Error while checking path existence for path: path
가능한 원인
다음 표에는 이 문제의 가능한 원인이 나와 있습니다.
원인 | 대상: |
---|---|
여러 데이터 센터 간 네트워크 연결 문제 | Edge 프라이빗 클라우드 사용자 |
ZooKeeper 노드에서 요청을 처리하지 않음 | Edge 프라이빗 클라우드 사용자 |
표에 있는 링크를 클릭하여 원인에 대한 가능한 해결 방법을 확인하세요.
여러 데이터 센터의 네트워크 연결 문제
진단
주키퍼 클러스터에는 여러 리전/데이터 센터에 걸쳐 있는 노드가 있을 수 있습니다(예: DC-1과 DC-2가 있습니다. 일반적인 Apigee Edge 2 DC 토폴로지는 다음과 같습니다.
- DC-1에서 유권자로 동물원 1, 2, 3 서버
- 주키퍼 4와 5는 유권자로, 주키퍼 6는 DC-2의 관찰자 역할을 합니다.
DC-1 리전이 다운되거나 DC-1과 DC-2 간의 네트워크 연결이 끊어지는 경우 주키퍼 노드는 DC-2에서 새 리더를 선택할 수 없으며 리더와 통신하지 못합니다. 노드입니다 주키퍼 관찰자는 새로운 리더를 선택할 수 없으며 DC-2에 남아 있는 두 유권자는 새 리더를 선택할 수 없습니다. 새 리더를 선출할 투표자 노드 수가 최소 3개인 쿼럼을 확보해야 합니다. 따라서 DC-2의 주키퍼는 요청을 처리할 수 없습니다. DC-2의 나머지 주키퍼 노드는 계속 순환됩니다. 주키퍼를 찾기 위해 주키퍼 유권자에게 다시 연결을 다시 시도하고 있습니다.
해상도
다음 해결책을 적용하여 이 문제를 지정된 순서대로 해결하세요.
이러한 방법으로도 문제가 해결되지 않으면 Apigee 지원팀에 문의하세요.
해결 방법 1
- 네트워크 관리자와 협력하여 장치 간 네트워크 연결 문제를 복구하십시오. 데이터 센터도 있습니다
- 주키퍼 앙상블이 데이터 센터 전체에 걸쳐 통신하고 ZaKeeper 리더가 되면 노드가 정상 상태가 되고 요청을 처리할 수 있게 됩니다.
해결 방법 2
- 네트워크 연결을 복구하는 데 시간이 걸리는 경우 문제를 해결하려면
주키퍼 노드가 다운된 리전의 가능합니다. 예를 들어 주키퍼를 재구성할 수 있습니다.
이 지역의 3개의 주키퍼 노드가 모두 투표자가 되도록 하고
DC-1 리전의 주키퍼
zoo.cfg
에 있는server.#
입니다.- 다음 예시에서
zoo.cfg
는 DC-1이us-ea
를 사용하는 리전 2개에 노드를 구성합니다. US-East 리전을 나타내는 호스트 이름이고 DC-2는 US-West 리전을 나타내는 호스트 이름us-wo
개를 사용합니다. (참고: 관련 구성만 표시됩니다.)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으로 변경합니다.
- 주키퍼를 재구성한 리전에서 동물원키퍼 노드를 다시 시작합니다. kube-APIserver입니다
- 1b단계부터 5단계까지 위 구성을 모든 주키퍼 노드에서 반복합니다. 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' 만약 리더 또는 '팔로어' 확인할 수 있습니다
데이터 센터 간 네트워크가 다시 설정되면 ZooKeeper에서 네트워크가 다시 구축됩니다. DC-2의 주키퍼 노드에서 변경사항을 되돌릴 수 있습니다.
해결 방법 3
- 클러스터의 ZooKeeper 노드가 시작되지 않은 경우 노드를 다시 시작합니다.
- 주키퍼 로그를 확인하여 주키퍼 노드가 다운된 이유를 파악합니다.
동물원Keeper 로그는 다음 디렉터리에서 확인할 수 있습니다.
$ 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 노드의 원인을 해결하기 위해 로그를 보냅니다.
주키퍼 노드에서 요청을 처리하지 않음
앙상블의 주키퍼 노드가 비정상 상태가 되어 클라이언트에 응답할 수 없음 요청을 처리합니다 다음과 같은 이유로 발생할 수 있습니다.
- 노드가 다시 시작되지 않고 중지되었습니다.
- 자동 시작을 사용 설정하지 않고 노드가 재부팅되었습니다.
- 노드의 시스템 부하로 인해 노드가 다운되었거나 비정상 상태가 되었습니다.
진단
- 각 주키퍼 노드에서 다음 주키퍼 상태 점검 명령을 실행하고
출력을 확인합니다.
<ph type="x-smartling-placeholder">
- </ph>
-
드림$ echo "ruok" | nc localhost 2181
출력 예시:
$ echo "ruok" | nc localhost 2181 imok
-
echo srvr | nc localhost 2181
모드를 확인하여 주키퍼 노드가 리더인지 팔로어인지 확인합니다.
올인원, 단일 ZaKeeper 노드에 대한 출력 예:
$ 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
이 명령은 주키퍼 클러스터에서 실행되었습니다
출력 예시:
드림$ 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
이 명령어는 동물원 Keeper 연결에 관한 자세한 정보를 제공합니다.
출력 예시:
드림$ 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 로그를 확인하고
주키퍼가 다운됩니다. 동물원Keeper 로그는 다음 디렉터리에서 확인할 수 있습니다.
$ 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 지원팀에 문의하여 계속 표시되거나 다시 시작해도 문제가 해결되지 않는 경우