503 서비스를 사용할 수 없음

<ph type="x-smartling-placeholder"></ph> 현재 Apigee Edge 문서를 보고 있습니다.
Apigee X 문서.
정보

동영상

503 오류에 관한 자세한 내용은 다음 동영상을 참조하세요.

동영상 설명
DNS 문제로 인한 503 서비스를 사용할 수 없음 오류 문제 해결 다음에 대해 알아보세요. <ph type="x-smartling-placeholder">
    </ph>
  • Apigee Edge의 DNS 변환 및 네트워크 관련 문제로 인해 503 Service Unavailable 오류가 발생했습니다.
  • DNS 확인 문제로 인한 실시간 503 서비스를 사용할 수 없음 오류 문제 해결
네트워크 문제로 인한 503 서비스를 사용할 수 없음 오류 문제 해결 Apigee Edge의 네트워크 문제로 인한 실시간 503 서비스를 사용할 수 없음 오류 문제 해결 및 해결

증상

클라이언트 애플리케이션이 HTTP 응답 상태 503과 함께 서비스를 사용할 수 없음을 수신합니다. API 프록시 호출 후

오류 메시지

다음과 같은 오류 메시지가 표시될 수 있습니다.

HTTP/1.1 503 Service Unavailable
      

HTTP 응답에서 다음 오류 메시지도 표시될 수 있습니다.

서비스를 사용할 수 없음

{
   "fault": {
      "faultstring": "The Service is temporarily unavailable",
      "detail": {
           "errorcode": "messaging.adaptors.http.flow.ServiceUnavailable"
       }
    }
}
      

가능한 원인

HTTP 응답 503 Service Unavailable과 오류 코드 messaging.adaptors.http.flow.ServiceUnavailable Apigee Edge의 메시지 프로세서에 연결 타임아웃으로 인해 오류가 발생하면 발생합니다. 또는 백엔드 서버와 통신하는 동안 SSL 핸드셰이크 실패가 발생할 수 있습니다.

503 Service Unavailable 응답의 가능한 원인은 다음과 같습니다.

원인 설명 문제 해결 단계를 수행할 수 있는 사용자
잘못된 DNS 변환으로 인한 연결 오류 대상 서버의 DNS 변환으로 인해 IP 주소가 잘못되어 연결 오류가 발생했습니다. Edge 프라이빗 클라우드 사용자
연결 오류 네트워크 또는 연결 문제로 인해 클라이언트가 서버에 연결할 수 없습니다. Edge 프라이빗 클라우드 사용자
잘못된 대상 서버 호스트 이름 지정된 대상 서버 호스트가 잘못되었거나 불필요한 문자 (예: 공백)가 있습니다. 에지 퍼블릭 및 프라이빗 클라우드 사용자
SSL 핸드셰이크 실패 클라이언트와 서버 간에 TLS/SSL 핸드셰이크가 실패했습니다. (이 클래스의 별도의 주제에서 다룹니다.) 에지 퍼블릭 및 프라이빗 클라우드 사용자

일반적인 진단 단계

실패한 요청의 메시지 ID 확인

추적 도구

Trace 도구를 사용하여 실패한 요청의 메시지 ID를 확인하려면 다음 안내를 따르세요.

  1. 문제가 아직 활성 상태이면 영향을 받은 API에 추적 세션을 사용 설정합니다.
  2. API를 호출하여 문제를 재현합니다. - 503 서비스를 사용할 수 없음(오류 코드: messaging.adaptors.http.flow.ServiceUnavailable.)
  3. 실패한 요청 중 하나를 선택합니다.
  4. AX 단계로 이동하고 다음 그림과 같이 단계 세부정보 섹션에서 아래로 스크롤하여 요청의 메시지 ID (X-Apigee.Message-ID)를 확인합니다.

    단계 세부정보 섹션의 메시지 ID

NGINX 액세스 로그

NGINX 액세스 로그를 사용하여 실패한 요청의 메시지 ID를 확인하려면 다음 안내를 따르세요.

NGINX 액세스 로그를 참조하여 503 오류의 메시지 ID를 확인할 수도 있습니다. 이 기능은 문제가 이전에 발생했거나 간헐적인 경우 특히 유용합니다. UI에서 트레이스를 캡처할 수 없습니다. NGINX 액세스 로그에서 이 정보를 확인하려면 다음 단계를 따르세요.

  1. NGINX 액세스 로그를 확인합니다(/opt/apigee/var/log/edge-router/nginx/ <org>~ <env>.<port#>_access_log).
  2. 특정 기간 동안 특정 API 프록시에 503 오류가 발생했는지 검색합니다. (과거에 문제가 발생한 경우) 또는 여전히 503으로 실패한 요청이 있는지 확인합니다.
  3. X-Apigee-fault-codemessaging.adaptors.http.flow.ServiceUnavailable에 503 오류가 있으면 다음 예와 같이 하나 이상의 이러한 요청에 대한 메시지 ID를 기록해 두세요.

    503 오류를 보여주는 샘플 항목

    상태 코드, 메시지 ID, 오류 소스, 오류 코드를 보여주는 샘플 항목

잘못된 DNS 변환으로 인한 연결 오류

진단

  1. 실패한 요청의 메시지 ID를 확인합니다.
  2. 메시지 프로세서 로그 (/opt/apigee/var/log/edge-message-processor/logs/system.log)에서 특정 요청 메시지 ID를 검색합니다. 다음과 같은 오류가 발생할 수 있습니다.

    onConnectTimeout 오류는 메시지 프로세서가 사전 설정된 연결 제한 시간 (기본값: 3초) 내에 백엔드 서버에 연결하지 못했음을 나타냅니다.
    2019-08-14 09:11:49,314 org:myorg env:prod api:Employees rev:1 messageid:mo-96cf6757a-9401-21-1 NIOThread@0 ERROR HTTP.CLIENT - HTTPClient$Context.onTimeout() : ClientChannel[Connected:]@164162 useCount=1 bytesRead=0 bytesWritten=0 age=3001ms lastIO=3001ms .onConnectTimeout connectAddress=www.abc.com/11.11.11.11  resolvedAddress=www.abc.com/22.22.22.22
    
    2019-08-14 09:11:49,333 org:myorg env:prod api:Employees rev:1 messageid:mo-96cf6757a-9401-21-1 NIOThread@0 ERROR ADAPTORS.HTTP.FLOW - RequestWriteListener.onTimeout() : RequestWriteListener.onTimeout(HTTPRequest@6b393600)
          
  3. onConnectTimeout 오류에서 해결된 IP 주소를 확인하고 IP 주소가 백엔드 서버에 유효한지 확인합니다. IP 주소가 유효하면 연결 오류로 이동합니다.
  4. IP 주소가 잘못된 경우 DNS 변환 문제가 원인일 가능성이 높습니다.
  5. 실패한 몇 개의 API 요청에 대해 3단계와 4단계를 반복하고, 동일한 IP 주소 또는 다른 잘못된 IP 주소가 표시되는지 확인합니다.
  6. 메시지 프로세서 로그 (/opt/apigee/var/log/edge-message-processor/logs/system.log)에서 DNS Refresh라는 키워드가 포함된 메일을 검색합니다. 잘못되거나 잘못된 IP 주소가 메시지 프로세서의 DNS 캐시에 가끔씩 추가되는지 확인합니다.
    2019-08-14 09:11:49,314 org:myorg env:prod api:Employees rev:1 messageid:mo-96cf6757a-9401-21-1 NIOThread@0 INFO c.a.p.h.d.DNSCachedAddress - DNSCachedAddress.reportDifferences() : DNS Refresh for host: apitarget-uat.schemeweb.co.uk:4436. Added 2 IPs [www.abc.com/22.22.22.22, www.abc.com/33.33.33.33] Removed 1 IPs [www.abc.com/11.11.11.11]
          
  7. 이 문제는 권한 DNS 서버 또는 /etc/resolv.conf에 구성된 네임서버에 문제가 있는 경우 발생할 수 있습니다.
    를 통해 개인정보처리방침을 정의할 수 있습니다. <ph type="x-smartling-placeholder">
    </ph> 일반적으로 DNS 변환을 수행하도록 하나 이상의 권한 있는 DNS 서버가 구성되어 있을 수 있습니다. 권한 DNS 서버가 없으면 /etc/resolv.conf의 구성 설정으로 돌아가 적절하게 DNS 확인을 수행합니다. 예를 들어 /etc/resolv.conf이 특정 네임서버를 사용하도록 구성된 경우 해당 네임서버는 DNS 확인을 수행하는 데 사용됩니다.
  8. /etc/resolv.conf에 지정된 권한 DNS 서버 또는 네임서버에 문제가 있으면 백엔드 서버 호스트 이름이 잘못된 IP 주소 또는 잘못된 IP 주소로 확인됩니다. 그러면 잘못된 IP 주소와 잘못된 IP 주소가 메시지 프로세서의 DNS 캐시에 저장됩니다.
    1. /etc/resolv.conf에 지정된 권한 DNS 서버 또는 네임서버의 문제가 지속적으로 발생하는 경우 잘못된 IP 주소 또는 잘못된 IP 주소가 메시지 프로세서의 DNS 캐시에 계속 남아 있습니다. 잘못된 IP 주소가 메시지 프로세서의 DNS 캐시에 저장된 한 특정 백엔드 서버를 사용하는 모든 API에 대한 요청은 503 오류와 함께 실패합니다.
    2. /etc/resolv.conf에 지정된 권한 DNS 서버 또는 네임서버 문제가 간헐적으로 발생하는 경우 정상 IP 주소와 불량 IP 주소가 간헐적으로 DNS 캐시에 저장됩니다. 이 경우 특정 백엔드 서버를 사용하는 모든 API에서 503 오류가 간헐적으로 표시됩니다.
  9. DNS 서버 문제가 지속되는 경우 지속적인 실패가 나타납니다. DNS 서버 문제가 간헐적인 경우 간헐적인 장애가 표시됩니다. 즉, 백엔드 서버 호스트 이름이 잘못된 IP 주소로 확인될 때마다 503 오류가 발생합니다. 그리고 백엔드 서버 호스트 이름이 양호한 IP 주소로 확인되면 성공적인 응답을 볼 수 있습니다.

해상도

운영체제 관리자에게 문의하여 DNS 서버 문제를 해결하세요.

  1. /etc/resolv.conf에 지정된 권한 DNS 서버 또는 네임서버에 문제가 있다면 적절한 서버에서 문제를 해결하여 이 문제를 해결하세요.
  2. 메시지 프로세서가 있는 시스템의 /etc/resolv.conf 구성에 문제가 있는 경우 구성 문제를 해결합니다.

연결 오류

Apigee Edge 메시지 프로세서가 백엔드에 연결을 시도하면 연결 오류가 발생합니다. 다음 문제 중 하나가 발생합니다.

  • 메시지 프로세서가 미리 설정된 연결 제한 시간 내에 연결할 수 없습니다. (기본값: 3초)
  • 백엔드 서버가 연결을 거부합니다.

진단

  1. 실패한 요청의 메시지 ID를 확인합니다.
  2. 메시지 프로세서 로그 (/opt/apigee/var/log/edge-message-processor/logs/system.log)에서 특정 요청 메시지 ID를 검색합니다. 다음과 같은 오류가 발생할 수 있습니다. <ph type="x-smartling-placeholder">
      </ph>
    1. onConnectTimeout 오류는 메시지 프로세서가 사전 설정된 연결 제한 시간 내에 백엔드 서버에 연결해야 합니다.
      2016-06-23 09:11:49,314 org:myorg env:prod api:Employees rev:1 messageid:mo-96cf6757a-9401-21-1 NIOThread@2 ERROR HTTP.CLIENT - HTTPClient$Context.onTimeout() : ClientChannel[C:]@10 useCount=1 bytesRead=0 bytesWritten=0 age=3001ms lastIO=3001ms .onConnectTimeout connectAddress=www.abc.com/11.11.11.11:80 resolvedAddress=www.abc.com/11.11.11.11
      2016-06-23 09:11:49,333 org:myorg env:prod api:Employees rev:1 messageid:mo-96cf6757a-9401-21-1 NIOThread@2 ERROR ADAPTORS.HTTP.FLOW - RequestWriteListener.onTimeout() : RequestWriteListener.onTimeout(HTTPRequest@6b393600)
      
    2. java.net.ConnectException: Connection denied 오류는 연결이 거부되었음을 나타냅니다. 거부되었습니다.
      14:40:16.531 +0530
      2016-06-17 09:10:16,531 org:myorg env:prod api:www.abc.com rev:1 rrt07eadn-22739-40983870-15 NIOThread@2 ERROR HTTP.CLIENT - HTTPClient$Context.onConnectFailure() : connect to www.abc.com:11.11.11.11:443 failed with exception {}
      java.net.ConnectException: Connection refused
      at sun.nio.ch.SocketChannelImpl.checkConnect(Native Method) ~[na:1.7.0_75]
      at sun.nio.ch.SocketChannelImpl.finishConnect(SocketChannelImpl.java:739) ~[na:1.7.0_75]
      at com.apigee.nio.ClientChannel.finishConnect(ClientChannel.java:121) ~[nio-1.0.0.jar:na]
      at com.apigee.nio.handlers.NIOThread.run(NIOThread.java:108) ~[nio-1.0.0.jar:na]
      
  3. 각 백엔드 서버에서 직접 특정 백엔드 서버에 연결할 수 있는지 telnet 명령어를 사용하는 메시지 프로세서: <ph type="x-smartling-placeholder">
      </ph>
    1. 백엔드 서버가 단일 IP 주소로 확인되는 경우 다음 명령어를 사용합니다.
      telnet BackendServer-IPaddress 443
                
    2. 백엔드 서버가 여러 IP 주소로 확인되는 경우 다음과 같이 telnet 명령어에서 백엔드 서버를 설정합니다.
      telnet BackendServer-HostName 443
                
  4. 백엔드 서버에 연결할 수 있으면 Connected to backend-server과 같은 메시지가 표시될 수 있습니다. 백엔드 서버에 연결할 수 없는 경우 메시지 프로세서의 IP 주소가 특정 백엔드에서 허용되지 않습니다. 있습니다.

해상도

특정 백엔드 서버의 메시지 프로세서 IP 주소에 대한 액세스 권한을 부여하여 에지 메시지 프로세서의 트래픽을 사용하여 백엔드 서버에 액세스합니다. 예를 들어 Linux에서 메시지 프로세서의 IP 주소의 트래픽을 허용하는 iptables kube-APIserver입니다

문제가 지속되면 네트워크 관리자에게 문의하여 있습니다. Apigee의 추가 지원이 필요한 경우 Apigee 지원팀에 문의하세요.

대상 서버 호스트 이름이 잘못되었습니다.

진단

대상 서버에 지정된 호스트 이름이 잘못된 경우 오류 코드와 함께 503 Service Unavailable 응답이 표시됩니다. <ph type="x-smartling-placeholder">messaging.adaptors.http.flow.ServiceUnavailable.</ph>

추적 도구

Trace 도구를 사용하여 진단하려면 다음 안내를 따르세요.

  1. 문제가 아직 활성 상태이면 영향을 받은 API에 추적 세션을 사용 설정합니다.
  2. API를 호출하여 문제를 재현합니다. - 503 서비스를 사용할 수 없음(오류 코드: messaging.adaptors.http.flow.ServiceUnavailable.)
  3. 실패한 요청 중 하나를 선택합니다.
  4. 추적의 다양한 단계를 살펴보고 오류가 발생한 위치를 찾습니다.
  5. 오류가 있는 FlowInfo를 선택합니다. 다음 예와 같이 error.cause 필드에서 자세한 정보를 확인할 수 있으며 실패 원인을 설명합니다.

    trace에서 error.cause를 보여주는 샘플 요청

    trace에 error.cause를 보여주는 샘플 요청
  6. error.cause호스트에 연결할 수 없음이 표시되면 다음 중 하나가 오류의 원인일 수 있습니다. <ph type="x-smartling-placeholder">
      </ph>
    • 대상 서버/대상 엔드포인트 구성에 지정된 호스트 이름이 잘못되었거나 원치 않는 공백 또는 특수문자가 포함되어 있습니다.

      예를 들어 아래와 같이 호스트 이름에 원치 않는 공백이 있습니다.
      "demo-target.apigee.net "
                        
    • AssignMessage를 사용하여 API 프록시에서 target.url 변수로 덮어쓴 호스트 이름 또는 JavaScript 정책이 잘못되었거나 공백 또는 기타 원치 않는 특수문자가 포함되어 있습니다.
  7. 대상 엔드포인트 구성 또는 대상 서버 정의를 확인하여 대상 서버 호스트 이름이 잘못되었거나 원치 않는 공백이나 특수문자가 있는지 확인합니다.
  8. 대상 서버 호스트가 동적으로 생성된 경우 대상 서버 호스트를 만드는 데 사용된 적절한 정책 (예: AssignMessage/JavaScript 정책)을 확인합니다. 체크박스를 선택합니다. 대상 서버 호스트 이름이 잘못되었거나 불필요한 공백이나 특수문자가 있는지 확인하세요.
  9. 대상 서버 호스트 이름을 확인했으면 호스트 이름에서 nslookup/dig 명령어를 실행하여 확인할 수 있는지 확인합니다.

    예를 들어 호스트 이름에 불필요한 공백이 있는 nslookup 명령어를 실행하면 다음과 같은 출력이 반환됩니다.

    nslookup "demo-target.apigee.net "
    Server:	49.205.75.2
    Address:	49.205.75.2#53
    
    ** server can't find demo-target.apigee.net\032: NXDOMAIN
    
  10. 운영체제 명령어 nslookup도 호스트 이름을 확인하지 못하는 경우, 대상 서버에 잘못된 호스트 이름이 사용된 것이 문제의 원인입니다.

    Resolution(해결 방법)으로 이동합니다.

메시지 프로세서 로그

메시지 프로세서 로그를 사용하여 진단하려면 다음 안내를 따르세요.

  1. 실패한 요청의 메시지 ID를 확인합니다.
  2. 메시지 프로세서 로그에서 메시지 ID를 검색합니다. (/opt/apigee/var/log/edge-message-processor/logs/system.log)
  3. 다음 경고/오류 메시지가 표시되면 메시지 프로세서가 호스트 이름을 확인할 수 없는 것입니다. 메시지에 다시 알림이 설정되므로 이 메시지가 표시되지 않을 수도 있습니다. 경고 메시지가 표시됩니다.
    org:myorg env:prod api:TestTargetServer rev:2 messageid:<messageid>  NIOThread@0 WARN S.HTTPCLIENTSERVICE - DNSCache$2.failed() : Failed to resolve hostname www.somehost.com . Reason mocktarget.apigee.net : Name or service not known. This log message will snooze for 2 hours
        
  4. 이렇게 하면 경고 메시지가 표시됩니다. 이 메시지는 대상 서버 호스트에 연결할 수 없어 메시지 프로세서가 DNS 캐시에서 주소를 삭제합니다.
    org:myorg env:prod api:TestTargetServer rev:2 messageid:<messageid> NIOThread@0 WARN  c.a.p.h.d.DNSCachedAddress - DNSCachedAddress.addressNotReachable() : The last address has been removed from Address list null refreshing
        
  5. 그러면 메시지 프로세서에 오류가 발생했다는 메시지와 함께 '호스트에 연결할 수 없음'이라는 메시지가 표시될 수 있습니다. 오류 메시지의 일부로 호스트 이름이 표시되는 경우도 있습니다.
    org:myorg env:prod api:TestTargetServer rev:2 messageid:<messageid>  NIOThread@0 ERROR HTTP.CLIENT - HTTPClient$Context.onConnectFailure() :  connect to demo-target.apigee.net  failed with exception {}
    java.lang.RuntimeException: Host not reachable
    	at com.apigee.protocol.http.HTTPClient$Context.initConnect(HTTPClient.java:704)
    	at com.apigee.protocol.http.HTTPClient$Context.send(HTTPClient.java:675)
    	at com.apigee.messaging.adaptors.http.flow.data.TargetRequestSender.sendRequest(TargetRequestSender.java:234)
    	…<snipped>
        
  6. 아래와 같이 호스트 이름을 확인하거나 연결할 수 없기 때문에 때로는 null로 표시될 수도 있습니다. <ph type="x-smartling-placeholder">
    org:myorg env:prod api:TestTargetServer rev:2 messageid:<messageid>  NIOThread@0 ERROR HTTP.CLIENT - HTTPClient$Context.onConnectFailure() :  connect to null failed with exception {}
    java.lang.RuntimeException: Host not reachable
    	at com.apigee.protocol.http.HTTPClient$Context.initConnect(HTTPClient.java:704)
    	at com.apigee.protocol.http.HTTPClient$Context.send(HTTPClient.java:675)
    	at com.apigee.messaging.adaptors.http.flow.data.TargetRequestSender.sendRequest(TargetRequestSender.java:234)
    	…<snipped>
        
    </ph>
  7. Host not reachable 오류는 일반적으로 다음 사례 중 하나에서 발생합니다. <ph type="x-smartling-placeholder">
      </ph>
    • 대상 서버/대상 엔드포인트 구성에 지정된 호스트 이름이 잘못되었거나 원치 않는 공백 또는 특수문자가 포함되어 있습니다.

      예를 들어 호스트 이름 'demo-target.apigee.net'에 불필요한 공백이 있는 것입니다. 아래와 같은 오류 메시지가 표시됩니다.
      NIOThread@0 ERROR HTTP.CLIENT - HTTPClient$Context.onConnectFailure() :  connect to demo-target.apigee.net  failed with exception
              
    • AssignMessage 또는 JavaScript 정책을 사용하여 API 프록시에서 target.url 변수로 덮어쓴 호스트 이름이 잘못되었거나 공백이나 기타 원치 않는 특수문자가 포함되어 있습니다.
  8. 다음 중 하나를 사용하여 메시지 프로세서가 통신을 시도하는 대상 서버 호스트 이름을 확인합니다.
    1. Host not reachable 가 포함된 오류 메시지를 주의 깊게 검토합니다.
    2. 오류 메시지에 호스트 이름이 표시되면 공백이나 특수문자를 포함하여 호스트 이름을 복사합니다.
    3. 다음 오류 메시지에 표시된 것처럼 오류 메시지의 호스트 이름에 대해 null이 표시되면 <ph type="x-smartling-placeholder">
      org:myorg env:prod api:TestTargetServer rev:2 messageid:<messageid>  NIOThread@0 ERROR HTTP.CLIENT - HTTPClient$Context.onConnectFailure() :  connect to null failed with exception {}
              
      </ph>
      1. 실패한 API 프록시에 사용된 대상 서버 정의를 확인하여 호스트 이름을 확인합니다.
      2. 대상 서버 호스트가 동적으로 생성된 경우 대상 서버 호스트를 만드는 데 사용된 적절한 정책 (예: AssignMessage/JavaScript 정책)을 확인합니다.
  9. 대상 서버 호스트 이름을 확인했으면 호스트 이름에서 nslookup/dig 명령어를 실행하여 해결할 수 있는지 확인합니다.

    예를 들어 공백이 있는 호스트 이름에 nslookup 명령어를 실행합니다.

    nslookup "demo-target.apigee.net "
    Server:	49.205.75.2
    Address:	49.205.75.2#53
    
    ** server can't find demo-target.apigee.net\032: NXDOMAIN
          
  10. 운영체제 명령어 nslookup이 호스트 이름을 확인하지 못하는 경우 이 문제의 원인은 대상 서버에 잘못된 호스트 이름이 사용되었기 때문입니다.

해상도

  1. 대상 서버 호스트 이름이 대상 엔드포인트 구성 또는 대상 서버에 지정되어 있는지 확인합니다. 정의가 올바르고 원치 않는 공백이나 특수문자가 없음을 확인하세요.
  2. AssignMessage/JavaScript 정책을 사용하여 대상 서버 호스트 이름을 동적으로 생성하는 경우 정책 정의 및 코드를 조사합니다. 대상 서버 호스트 이름이 올바르게 생성되었는지 확인합니다.

SSL 핸드셰이크 실패

전체 문제 해결 플레이북은 TLS/SSL 핸드셰이크 오류에 관한 것입니다. SSL 핸드셰이크 실패를 참조하세요.

문제의 원인 파악

특정 유형의 오류는 수신 (북쪽) 또는 발신 (남쪽)에서 발생할 수 있습니다. 연결 클라이언트 애플리케이션과 Edge 간에 수신 (북쪽) 오류가 발생합니다. 에지와 백엔드 대상 서버 사이에서 발신 (남쪽 바인딩) 오류가 발생합니다. 이러한 문제를 진단하려면 가장 먼저 해야 할 일은 오류가 북쪽 경계 또는 경계 지점에서 발생하는지 또는 남쪽 방면 연결도 가능하죠

북쪽 방향 및 남쪽 방향 연결 이해

Edge에서 수신 또는 발신 연결에서 503 Service Unavailable 오류가 발생할 수 있습니다.

  • 수신 (또는 노스바운드) 연결 - 클라이언트 간의 연결입니다. 에지 라우터를 지원합니다 라우터는 라우터를 처리하는 Apigee Edge의 구성요소입니다. 할 수 있습니다.
  • 발신 (또는 남쪽) 연결 - 에지 간의 연결입니다. 메시지 프로세서 및 백엔드 서버 메시지 프로세서는 Apigee Edge의 구성요소입니다. 백엔드 대상 서버로 API 요청을 프록시하는 역할을 합니다.

Edge 퍼블릭 클라우드 사용자라면 아마도 라우터 또는 메시지 프로세서. 이러한 내부 구성요소는 다음에서 보거나 액세스할 수 없습니다. 퍼블릭 클라우드 사용자 가능한 경우 Google은 문제를 조사하는 다른 방법을 제공합니다. 이러한 구성요소에 직접 액세스할 필요가 없습니다.

다음 그림은 Apigee의 북쪽 및 남쪽 연결을 보여줍니다. Edge.

에지를 통해 백엔드 서버로 (남쪽 방향 연결) 클라이언트 애플리케이션 (북쪽 연결)의 흐름

503 서비스를 사용할 수 없음 오류가 발생한 위치 확인

다음 절차 중 하나를 사용하여 503 서비스를 사용할 수 없음 오류가 발생했는지 확인합니다. 데이터 레이크와 통신할 수 있습니다

UI 트레이스

UI Trace를 사용하여 오류가 발생한 위치를 확인하려면 다음을 실행합니다.

  1. 문제가 계속 발생하면 영향을 받는 API의 UI 트레이스를 사용 설정합니다.
  2. 실패한 API 요청의 UI trace에 503 Service Unavailable 오류가 표시되는 경우 대상 요청 흐름 중에 발생하거나 백엔드 서버에서 전송된 경우 southbound (메시지 프로세서와 백엔드 사이) 있습니다.
  3. 특정 API 호출에 대한 추적을 가져올 수 없는 경우 문제는 다음과 같습니다. 클라이언트 애플리케이션과 라우터 간의 northbound에 위치합니다.

API 모니터링

API 모니터링을 사용하면 문제 영역을 빠르게 격리하여 오류, 성능, 지연 시간 문제와 그 원인을 진단할 수 있습니다. 백엔드 타겟, API 플랫폼 등의 서비스를 정의할 수 있습니다

API Monitoring을 사용하여 API의 5xx 문제를 해결하는 방법을 보여주는 샘플 시나리오를 살펴봅니다. 예를 들어 messaging.adaptors.http.flow.ServiceUnavailable 오류 수가 특정 기준점을 초과할 때 알림을 받도록 알림을 설정할 수 있습니다.

NGINX 액세스 로그

UI Trace를 사용하여 오류가 발생한 위치를 확인하려면 다음을 실행합니다.

문제가 과거에 발생한 적이 있거나 문제가 간헐적으로 발생해 문제를 해결할 수 없는 경우 트레이스를 캡처한 후 다음 단계를 수행합니다.

  1. NGINX 액세스 로그 (/opt/apigee/var/log/edge-router/nginx/ org-env.port_access_log)를 확인합니다.
  2. 특정 API 프록시에 503 오류가 있는지 검색합니다.
  3. 특정 시점에 특정 API에서 503 오류를 식별할 수 있는 경우 남쪽 바운드 연결 (메시지 프로세서와 )합니다.
  4. 그렇지 않은 경우 북쪽 경계 연결( 클라이언트 애플리케이션과 라우터).