토리맘의 한글라이즈 프로젝트 logo 토리맘의 한글라이즈 프로젝트

스프링 클라우드 데이터 플로우 공식 레퍼런스를 한글로 번역한 문서입니다.

전체 목차는 여기에 있습니다.

목차


Did the Task Launch?

태스크가 제대로 실행됐는지 확인하려면 UI에서는 Task Execution 페이지로 들어가고, 쉘에서는 task execution list를 입력하면 된다. 확인하고 싶은 태스크의 실행 내역을 찾으면 된다.

다음은 태스크 실행 에러를 해결하는 방법을 보여주는 다이어그램이다:

launch-errors


What To Check If a Task Failed To Launch

태스크가 실행되지 않을 때는:

태스크 실행은 SCDF가 담당한다. 태스크 실행 실패 메세지는 보통 SCDF 애플리케이션 로그에서 찾을 수 있다.


Platforms

이 섹션에선 특정 플랫폼에서 발생하는 문제를 해결하는 방법을 다룬다:

Local

이 섹션에선 로컬 환경에서 애플리케이션을 실행할 때 발생하는 문제를 디버깅하는 방법을 설명한다.

다음은 로컬 태스크 실행 에러를 해결하는 방법을 보여주는 다이어그램이다:

local

애플리케이션 로그 파일은 애플리케이션별로 검사할 수 있다. 모든 애플리케이션 로그를 하나로 집계하려면 deployer 프로퍼티 inheritLogging=true를 설정하면 된다. 자세한 내용은 “로컬 배포 내역을 단일 로그로 집계할 수 있나요?”를 참고하고, 더 많은 로그를 활성화하는 방법은 “플랫폼 배포 로그를 DEBUG 레벨로 바꾸려면 어떻게 해야 하나요?”를 참고해라.

deployer 프로퍼티 debugPort를 설정하면 애플리케이션을 JDWP로 디버깅할 수 있다. 자세한 내용은 “배포한 애플리케이션을 원격에서 디버깅하려면 어떻게 해야 하나요?”를 참고해라.

Docker Compose - Startup

다음은 Docker compose 기동 이슈와 관련해서 로컬 태스크 실행 에러를 해결하는 방법을 보여주는 다이어그램이다:

docker-compose-startup

환경 변수 DATAFLOW_VERSIONSKIPPER_VERSIONexport하거나 docker-compose 명령어 뒤에 명시하는 식으로, 현재 터미널 환경에서 사용할 수 있게 만들어야 한다. 자세한 내용은 Docker Compose 시작하기를 참고해라.

Docker Compose - Runtime

다음은 Docker compose 런타임 이슈와 관련해서 로컬 태스크 실행 에러를 해결하는 방법을 보여주는 다이어그램이다:

docker-compose-runtime

기본적으로 도커에 할당되는 메모리로는 부족할 수도 있다. 권장 할당량은 8GB다. docker stats 명령어는 리소스 사용과 관련해서 유용한 정보를 제공해줄 거다. 리소스 제약으로 인해 애플리케이션 기동에 실패했다면 리소스 할당을 늘려라. 도커 문서에서 사용하는 플랫폼에 대한 설명을 읽어봐라.

SCDF를 통해 태스크를 실행하면, 해당 태스크 정의에 속해있는 애플리케이션들은 SCDF 컨테이너에서 자바 프로세스로 기동된다. 태스크 정의를 구성하는 요소마다 애플리케이션이 하나씩 실행된다. 도커에 제공하는 전체적인 리소스 할당량(메모리, CPU 등)은 실행하는 애플리케이션 수를 고려해야 한다.

Cloud Foundry

이 섹션에선 클라우드 파운드리 애플리케이션에서 발생할 수 있는 문제를 디버깅하는 방법을 설명한다.

Startup Failures

다음은 클라우드 파운드리에서 애플리케이션이 실행되지 않을 때 해결 방법을 보여주는 다이어그램이다:

cloud-foundry-startup

Application Failures

다음은 클라우드 파운드리에서 애플리케이션이 실패할 때 해결 방법을 보여주는 다이어그램이다:

cloud-foundry-application

배포 이슈를 디버깅할 때는 deployer와 클라우드 파운드리 관련 로그 레벨을 높이는 것도 도움이 될 수 있다. 자세한 내용은 “플랫폼 배포 로그를 DEBUG 레벨로 바꾸려면 어떻게 해야 하나요?”를 참고해라.

Kubernetes

이 섹션에선 쿠버네티스 애플리케이션에서 발생할 수 있는 문제를 디버깅하는 방법을 설명한다.

Distributed Deployment Files

다음은 쿠버네티스에서 애플리케이션을 실행할 때 분산 deployment 파일로 인한 문제를 해결하는 방법을 보여주는 다이어그램이다:

kubernetes-deployment-files

Helm Chart

다음은 쿠버네티스에서 애플리케이션을 실행할 때 헬름 차트로 인한 문제를 해결하는 방법을 보여주는 다이어그램이다:

kubernetes-helm-chart

An empty task execution id record is created before the task execution id

kubernetes-helm-chart

태스크가 정상적인 프로퍼티로도 실행되지 않을 땐 이 결정 트리를 참고하면 된다.

General

다음은 쿠버네티스에서 애플리케이션을 실행할 때 발생할 수 있는 전반적인 이슈를 보여주는 다이어그램이다:

kubernetes-general

포드의 세부 정보를 조회할 때는 events 테이블 섹션이 디버깅에 유용한 정보를 제공하며, 다음과 같이 실행할 수 있다:

kubectl describe po/pod_name

예를 들어 정상적으로 실행된 timestamp-batch-task 애플리케이션의 이벤트는 다음과 같이 조회된다:

Events:
  Type    Reason     Age   From               Message
  ----    ------     ----  ----               -------
  Normal  Scheduled  15s   default-scheduler  Successfully assigned default/timestamp-7138z511d8 to minikube
  Normal  Pulled     15s   kubelet, minikube  Container image "springcloudtask/timestamp-batch-task:latest" already present on machine
  Normal  Created    14s   kubelet, minikube  Created container
  Normal  Started    14s   kubelet, minikube  Started container

애플리케이션 로그는 다음 명령어를 사용하면 로그가 도착하는 즉시 확인할 수 있다:

kubectl logs -f po/pod_name

Troubleshooting Help

여기 있는 트러블슈팅 테크닉으로는 해결되지 않아 여전히 도움이 필요하다면, StackOverflow에 관련 세부 정보와 함께 올려달라 (Wiki 참고). 우리는 포럼 스레드를 활발하게 모니터링하고 있다.


Next :
Feature guides
Data Flow 기능 셋 가이드

전체 목차는 여기에 있습니다.

<< >>

TOP