콘텐츠로 이동
📣 인포그랩에서 OpenAI 기술 기반으로 자체 개발한 자동화 번역 프로그램을 통해 n8n 공식 문서의 한글판을 국내 최초로 제공합니다.

작업 실행기#

작업 실행기는 안전하고 성능이 뛰어난 방법으로 작업을 실행하기 위한 일반 메커니즘입니다. 이는 Code node에서 사용자 제공 JavaScript 코드를 실행하는 데 사용됩니다.

이 문서에서는 작업 실행기가 작동하는 방식과 이를 구성하는 방법을 설명합니다.

실험적 기능

작업 실행기는 현재 공개 베타 테스트 중이며 발견되지 않은 문제가 있을 수 있습니다. 비즈니스에 중요한 워크플로우와 함께 사용하는 것은 권장하지 않습니다.

작동 방식#

작업 실행기 기능은 작업 실행기, 작업 브로커 및 작업 요청자라는 세 가지 구성 요소로 이루어져 있습니다.

작업 실행기 개요

작업 실행기는 웹소켓 연결을 사용하여 작업 브로커에 연결됩니다. 작업 요청자는 사용 가능한 작업 실행기가 실행을 위해 작업 요청을 수령할 수 있도록 브로커에 작업 요청을 제출합니다.

작업 실행기는 작업을 실행하고 결과를 작업 요청자에게 제출합니다. 작업 브로커는 실행기와 요청자 간의 통신을 조정합니다.

n8n 인스턴스(메인 및 작업자)는 브로커 역할을 합니다. 이 경우 Code node는 작업 요청자입니다.

작업 실행기 모드#

작업 실행기를 내부 모드와 외부 모드의 두 가지 다른 모드에서 사용할 수 있습니다.

내부 모드#

내부 모드에서는 n8n 인스턴스가 작업 실행기를 자식 프로세스로 시작합니다. n8n 프로세스는 작업 실행기의 생명 주기를 모니터링하고 관리합니다. 작업 실행기 프로세스는 n8n과 동일한 uidgid를 공유합니다.

외부 모드#

외부 모드에서는 외부 오케스트레이터(예: Kubernetes)가 n8n 대신 작업 실행기를 시작합니다. 일반적으로, 이는 작업 실행기가 n8n 옆의 사이드카 컨테이너로 실행되도록 구성해야 함을 의미합니다.

작업 실행기가 사이드카 컨테이너로 배포됨

이 모드에서는 오케스트레이터가 작업 실행기 컨테이너의 생명 주기를 모니터링하고 관리합니다. 작업 실행기는 n8n 인스턴스와 완전히 격리되어 있습니다.

Queue mode를 사용할 때는 각 n8n 컨테이너(메인 및 작업자)가 자체 작업 실행기를 가져야 합니다.

외부 모드 설정#

다음 세부정보를 사용하여 작업 실행기를 외부 모드로 구성합니다.

외부 모드에서 n8n 인스턴스 구성#

다음 환경 변수를 설정하여 n8n이 외부 작업 실행기를 사용하도록 구성할 수 있습니다:

환경 변수 설명
N8N_RUNNERS_ENABLED=true 작업 실행기를 활성화합니다.
N8N_RUNNERS_MODE=external 외부 모드에서 작업 실행기를 사용합니다.
N8N_RUNNERS_AUTH_TOKEN=<random secure shared secret> 작업 실행기가 브로커에 연결하는 데 사용하는 공유 비밀번호입니다.
N8N_RUNNERS_BROKER_LISTEN_ADDRESS=0.0.0.0 기본적으로 작업 브로커는 로컬호스트만 수신합니다. 여러 컨테이너(예: Docker Compose)를 사용하는 경우 외부 연결을 수신할 수 있어야 합니다.

전체 환경 변수 목록은 작업 실행기 환경 변수를 참조하세요.

외부 모드에서 작업 실행기 구성#

작업 실행기는 n8n Docker 이미지에 번들로 포함되어 있습니다. Docker 이미지에는 작업 실행기 시작기도 포함되어 있습니다.

시작기는 필요한 경우 실행기를 온디맨드로 시작할 수 있으므로 작업이 필요 없을 때 메모리 사용량이 낮아지지만 콜드 스타트 시 짧은 지연(수백 ms)이 발생합니다. 시작기는 또한 실행기를 모니터링하고 무한 루프나 기타 문제 발생 시 재시작합니다.

다음 속성을 설정하여 n8n Docker 이미지에서 작업 실행기 컨테이너를 실행합니다:

구성 설명
command ["/usr/local/bin/task-runner-launcher", "javascript"]
livenessProbe GET /healthz, 포트 5680

다음 환경 변수를 컨테이너에 맞게 조정하여 설정합니다:

환경 변수 설명
N8N_RUNNERS_AUTH_TOKEN=<random secure shared secret> 작업 실행기가 브로커에 연결하는 데 사용하는 공유 비밀번호입니다.
N8N_RUNNERS_MAX_CONCURRENCY=5 실행기가 동시에 실행할 수 있는 작업의 수입니다.
N8N_RUNNERS_TASK_BROKER_URI=localhost:5679 n8n 인스턴스 내 작업 브로커 서버의 주소입니다.
N8N_RUNNERS_AUTO_SHUTDOWN_TIMEOUT=15 작업 실행기 프로세스를 종료하기 전에 대기할 비활동 초 수입니다. 새로운 작업이 실행될 때 시작기가 자동으로 실행기를 다시 시작합니다. 자동 종료를 비활성화하려면 0으로 설정하세요.
NODE_OPTIONS=--max-old-space-size=<limit> 작업 실행기 Node.js 프로세스의 메모리 제한입니다. 이 값은 컨테이너의 제한보다 낮아야 하며, 그렇게 하면 실행기가 컨테이너보다 메모리가 부족해질 수 있습니다. 이렇게 하면 시작기가 실행기를 모니터링할 수 있습니다.
GENERIC_TIMEZONE n8n 인스턴스에 대해 구성된 동일한 기본 시간대입니다.

전체 환경 변수 목록은 작업 실행기 환경 변수를 참조하세요.

인포레터에서 최신 DevOps 트렌드를 격주로 만나보세요!