내용으로 건너뛰기

Amazon MWAA에서 스케줄러와 관련된 일반적인 문제를 해결하려면 어떻게 해야 합니까?

3분 분량
0

Amazon Managed Workflows for Apache Airflow(Amazon MWAA)에서 스케줄러와 관련된 일반적인 문제를 해결하려고 합니다.

간략한 설명

스케줄러는 무한 루프로 실행되며, 모든 작업과 DAG를 모니터링하고, 종속 항목이 완료되면 작업 인스턴스를 호출합니다. 스케줄러의 상태를 확인하기 위해 Apache Airflow는 스케줄러 상태 엔드포인트를 확인합니다. scheduler_health_check_threshold에 대한 하트비트가 없는 경우 스케줄러는 비정상 상태입니다. scheduler_health_check_threshold의 기본값은 30초입니다. 값은 Amazon MWAA 환경을 구성할 때 수정할 수 있습니다.

스케줄러에 문제가 있는 경우 다음 오류 메시지 또는 유사한 메시지가 표시될 수 있습니다.

"The scheduler does not appear to be running. Last heartbeat was received (example time period) ago. The DAGs list may not update and new tasks will not be scheduled."

이 오류가 발생하는 일반적인 이유는 다음과 같습니다.

  • 네트워킹 문제
  • 호환되지 않는 모듈
  • 스케줄러 과부하
  • 손상된 DAG

해결 방법

네트워킹 문제

네트워킹 문제로 인해 발생할 수 있는 스케줄러 문제를 해결하려면 다음 항목을 확인하십시오.

  • 보안 그룹을 확인합니다. 보안 그룹 중 하나에 포트 443 및 포트 5432에 대한 자체 참조 규칙이 있는지 확인합니다. 보안 그룹에서 트래픽을 허용하려면 이러한 포트 중 하나에 이 규칙이 있어야 합니다. 이러한 포트 중 하나에 자체 참조 규칙이 없는 경우 Amazon MWAA 보안 그룹에 대한 새로운 인바운드 규칙을 생성합니다. 그런 다음, 필요한 포트에 대한 자체 참조 규칙을 생성합니다. 또한 네트워크 액세스 제어 목록(네트워크 ACL)이 포트 443과 포트 5432에 대한 트래픽을 차단하지 않는지 확인하십시오.
  • Amazon MWAA 엔드포인트를 확인합니다. Amazon MWAA 환경을 만들면 Amazon Virtual Private Cloud(Amazon VPC) 인터페이스 엔드포인트가 생성됩니다. 인터페이스 엔드포인트는 Apache Airflow 웹 서버와 Amazon Aurora PostgreSQL 호환 버전 메타데이터 데이터베이스를 위해 생성됩니다. 이러한 엔드포인트 중 하나가 삭제되면 Amazon MWAA 환경이 손상되고 스케줄러에 오류가 발생합니다. 이러한 엔드포인트는 다시 생성할 수 없으므로 이 문제를 해결하려면 새 Amazon MWAA 환경을 생성하십시오. 자세한 내용은 Amazon MWAA에서 자체 Amazon VPC 엔드포인트 관리를 참조하십시오.

호환되지 않는 모듈

Amazon MWAA 환경에 아직 설치되지 않은 추가 Python 모듈이 필요한 경우, Python 모듈이 포함된 제약 조건 파일을 requirements.txt 파일에 추가하십시오. 그러면 Amazon MWAA 구성 요소가 프로비저닝될 때 해당 모듈을 설치할 수 있습니다. 지정된 Apache Airflow 버전에 대해 호환되지 않는 버전의 Python 모듈을 설치하면 환경이 손상되어 스케줄러 오류가 발생할 수 있습니다.

Amazon MWAA 환경에서 호환되지 않는 모듈 및 버전이 있는지 확인하려면 워커 및 스케줄러의 requirements_install 로그를 확인합니다. 다음 오류 또는 유사한 오류가 표시되는지 확인하십시오.

"ERROR: You need to upgrade the database. Please run "airflow db upgrade"."

"ERROR: Cannot install (example-package-name and example-version) because these package versions have conflicting dependencies.
The conflict is caused by:
The user requested (example-package-name and example-version).
The user requested (constraint-example-package-name and constraint-example-version)."

위 오류를 해결하려면 다음 작업을 완료하십시오.

  • upgrade the database 오류 메시지가 표시되면 메타데이터 데이터베이스가 손상된 것입니다. 올바른 모듈 버전을 사용하여 새 환경을 생성해야 합니다.
  • package versions have conflicting dependencies 오류 메시지가 표시되면 올바른 모듈 버전으로 환경을 업데이트하십시오.

참고: Apache Airflow 버전 2.7.2부터는 제약 조건 파일이 requirements.txt에 포함되어야 합니다. aws-mwaa-local-runner와 올바른 Apache Airflow 버전을 사용하여 요구 사항을 테스트하는 것이 가장 좋습니다. 자세한 내용은 GitHub 웹사이트에서 aws-mwaa-local-runner를 참조하십시오.

스케줄러 과부하

스케줄러가 과부하되지 않았는지 확인하려면 스케줄러 CPU 및 메모리 사용률이 90%를 초과하지 않는지 확인하십시오. .airflowignore 파일과 DAG 개체를 생성하지 않는 모든 폴더 및 파일을 DAG 폴더에 배치하는 것이 가장 좋습니다. 이렇게 하면 스케줄러가 이러한 파일 및 폴더를 구문 분석하지 않도록 할 수 있습니다. 자세한 내용은 Apache Airflow 웹사이트에서 .airflowignore를 참조하십시오. 또한 스케줄러 구성이 최대값을 초과하지 않도록 하십시오. 예를 들어 AIRFLOW_SCHEDULER_PARSING_PROCESSES를 최대 vCPU 코어 수보다 높은 값으로 설정하면 스케줄러의 성능이 저하되거나 스케줄러가 중단됩니다.

손상된 DAG

손상된 DAG가 있으면 스케줄러가 중단됩니다. 이 문제를 해결하려면 새로운 DAG 또는 최근에 추가한 DAG를 모두 삭제하십시오. 그런 다음, 결함이 있는 DAG를 확인할 때까지 한 번에 하나씩 다시 추가합니다오. DAG를 테스트하려면 aws-mwaa-local runner를 사용하십시오. 자세한 내용은 GitHub 웹사이트에서 aws-mwaa-local-runner를 참조하십시오.

관련 정보

VPC 보안 그룹