작업 실행기#
작업 실행기는 안전하고 성능이 뛰어난 방식으로 작업을 실행하는 일반적인 메커니즘입니다. 코드 노드에서 사용자가 제공한 JavaScript 코드를 실행하는 데 사용됩니다.
이 문서에서는 작업 실행기의 작동 방식과 구성 방법을 설명합니다.
작동 방식#
작업 실행기 기능은 작업 실행기, 작업 브로커 및 작업 요청자의 세 가지 구성 요소로 구성됩니다.
작업 실행기는 웹소켓 연결을 사용하여 작업 브로커에 연결합니다. 작업 요청자는 사용 가능한 작업 실행기가 실행을 위해 선택할 수 있는 작업 브로커에 작업 요청을 제출합니다.
실행기는 작업을 실행하고 결과를 작업 요청자에게 제출합니다. 작업 브로커는 실행기와 요청자 간의 통신을 조정합니다.
n8n 인스턴스(메인 및 워커)는 브로커 역할을 합니다. 이 경우 코드 노드는 작업 요청자입니다.
작업 실행기 모드#
내부 및 외부의 두 가지 모드로 작업 실행기를 사용할 수 있습니다.
내부 모드#
내부 모드에서 n8n 인스턴스는 작업 실행기를 자식 프로세스로 시작합니다. n8n 프로세스는 작업 실행기의 수명 주기를 모니터링하고 관리합니다. 작업 실행기 프로세스는 n8n과 동일한 uid
및 gid
를 공유합니다.
외부 모드#
외부 모드에서는 n8n 대신 외부 오케스트레이터(예: Kubernetes)가 작업 실행기를 시작합니다. 일반적으로 이는 n8n 옆에 사이드카 컨테이너로 실행되도록 작업 실행기를 구성한다는 의미입니다.
이 모드에서 오케스트레이터는 작업 실행기 컨테이너의 수명 주기를 모니터링하고 관리합니다. 작업 실행기는 n8n 인스턴스에서 완전히 격리됩니다.
큐 모드를 사용하는 경우 각 n8n 컨테이너(메인 및 워커)에는 자체 작업 실행기가 있어야 합니다.
외부 모드 설정#
다음 세부 정보를 사용하여 외부 모드에서 작업 실행기를 구성합니다.
외부 모드에서 n8n 인스턴스 구성#
다음 환경 변수를 설정하여 외부 작업 실행기를 사용하도록 n8n을 구성할 수 있습니다.
환경 변수 | 설명 |
---|---|
N8N_RUNNERS_ENABLED=true |
작업 실행기를 활성화합니다. |
N8N_RUNNERS_MODE=external |
외부 모드에서 작업 실행기를 사용합니다. |
N8N_RUNNERS_AUTH_TOKEN=<임의의 보안 공유 비밀> |
작업 실행기가 브로커에 연결하는 데 사용하는 공유 비밀입니다. |
N8N_RUNNERS_BROKER_LISTEN_ADDRESS=0.0.0.0 |
기본적으로 작업 브로커는 localhost만 수신합니다. 여러 컨테이너를 사용하는 경우(예: Docker Compose 사용) 외부 연결을 수락할 수 있어야 합니다. |
전체 환경 변수 목록은 작업 실행기 환경 변수를 참조하십시오.
외부 모드에서 작업 실행기 구성#
작업 실행기는 n8n Docker 이미지 내에 번들로 제공됩니다. Docker 이미지에는 작업 실행기 시작 프로그램도 포함되어 있습니다.
시작 프로그램은 필요에 따라 실행기를 시작할 수 있습니다. 즉, 작업이 필요 없을 때는 메모리 사용량이 낮지만 콜드 스타트 시 약간의 지연(수백 ms)이 발생합니다. 시작 프로그램은 또한 실행기를 모니터링하고 무한 루프 또는 기타 문제 발생 시 다시 시작합니다.
다음 속성을 설정하여 n8n Docker 이미지에서 작업 실행기 컨테이너를 실행합니다.
구성 | 설명 |
---|---|
command |
["/usr/local/bin/task-runner-launcher", "javascript"] |
livenessProbe |
GET /healthz , 포트 5680 |
필요에 맞게 조정된 컨테이너에 대해 다음 환경 변수를 설정합니다.
환경 변수 | 설명 |
---|---|
N8N_RUNNERS_AUTH_TOKEN=<임의의 보안 공유 비밀> |
작업 실행기가 브로커에 연결하는 데 사용하는 공유 비밀입니다. |
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 인스턴스에 대해 구성된 것과 동일한 기본 시간대입니다. |
전체 환경 변수 목록은 작업 실행기 환경 변수를 참조하십시오.