작업 실행기#
작업 실행기는 안전하고 성능이 뛰어난 방법으로 작업을 실행하기 위한 일반 메커니즘입니다. 이는 Code node에서 사용자 제공 JavaScript 코드를 실행하는 데 사용됩니다.
이 문서에서는 작업 실행기가 작동하는 방식과 이를 구성하는 방법을 설명합니다.
실험적 기능
작업 실행기는 현재 공개 베타 테스트 중이며 발견되지 않은 문제가 있을 수 있습니다. 비즈니스에 중요한 워크플로우와 함께 사용하는 것은 권장하지 않습니다.
작동 방식#
작업 실행기 기능은 작업 실행기, 작업 브로커 및 작업 요청자라는 세 가지 구성 요소로 이루어져 있습니다.
작업 실행기는 웹소켓 연결을 사용하여 작업 브로커에 연결됩니다. 작업 요청자는 사용 가능한 작업 실행기가 실행을 위해 작업 요청을 수령할 수 있도록 브로커에 작업 요청을 제출합니다.
작업 실행기는 작업을 실행하고 결과를 작업 요청자에게 제출합니다. 작업 브로커는 실행기와 요청자 간의 통신을 조정합니다.
n8n 인스턴스(메인 및 작업자)는 브로커 역할을 합니다. 이 경우 Code node는 작업 요청자입니다.
작업 실행기 모드#
작업 실행기를 내부 모드와 외부 모드의 두 가지 다른 모드에서 사용할 수 있습니다.
내부 모드#
내부 모드에서는 n8n 인스턴스가 작업 실행기를 자식 프로세스로 시작합니다. n8n 프로세스는 작업 실행기의 생명 주기를 모니터링하고 관리합니다. 작업 실행기 프로세스는 n8n과 동일한 uid
와 gid
를 공유합니다.
외부 모드#
외부 모드에서는 외부 오케스트레이터(예: 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 인스턴스에 대해 구성된 동일한 기본 시간대입니다. |
전체 환경 변수 목록은 작업 실행기 환경 변수를 참조하세요.