Skip to content

배포 및 유지보수 / 단일 머신 배포

이 문서에서는 서버에 DataFlux Func 단일 머신 버전을 직접 설치하고 배포하는 방법을 설명합니다.

k8s에서 Helm을 사용하여 DataFlux Func를 설치하는 방법은 배포 및 유지보수 / 설치 및 배포 / Helm 배포를 참조하십시오.

1. 설치 패키지 다운로드

DataFlux Func는 필요한 설치 파일을 다운로드한 후 USB 메모리 등의 이동식 장치를 통해 인터넷이 없는 환경으로 가져가 설치할 수 있는 '설치 패키지'를 지원합니다.

다운로드한 '설치 패키지'에는 자동 설치 스크립트, Docker 등이 포함되어 있어 실행하기만 하면 설치할 수 있습니다(자세한 내용은 아래 참조).

1.1 원클릭 명령 다운로드

Linux, macOS 등의 시스템에서는 공식 제공 shell 명령을 사용하여 설치 패키지를 다운로드하는 것이 좋습니다.

다음 명령을 실행하면 DataFlux Func에 필요한 설치 파일이 자동으로 다운로드됩니다. 다운로드 스크립트는 현재 환경에 따라 x86_64 또는 aarch64 아키텍처 버전을 자동으로 선택합니다.

설치 전에 시스템 요구 사항과 서버 구성을 확인하십시오

Bash
1
bash -c "$(curl -fsSL docs.dataflux-func.com/download)"

다운로드할 아키텍처가 최종 설치할 서버의 아키텍처와 다른 경우 아키텍처 옵션을 추가하여 지정할 수 있습니다.

Bash
1
bash -c "$(curl -fsSL docs.dataflux-func.com/download)" -- --arch=x86_64
Bash
1
bash -c "$(curl -fsSL docs.dataflux-func.com/download)" -- --arch=aarch64

명령 실행이 완료되면 모든 설치 파일은 자동으로 생성된 dataflux-func-portable-{아키텍처}-{버전 번호} 디렉터리에 저장됩니다.

  • DataFlux Func를 인터넷에 연결되지 않은 서버에 설치해야 하는 경우 먼저 로컬 컴퓨터에서 다운로드한 후 전체 디렉터리를 USB 메모리 등 이동식 저장 장치 또는 scp 도구 등으로 대상 머신에 복사할 수 있습니다.
  • DataFlux Func를 인터넷에 접속 가능한 서버에 설치해야 하는 경우 서버에서 직접 다운로드하면 됩니다.

1.2 수동 다운로드

shell 명령을 사용하기 어려운 시스템에서는 필요한 설치 파일을 수동으로 다운로드할 수 있습니다.

수동 다운로드가 필요한 경우 전체 파일 목록은 다음과 같습니다.

# 내용 파일 이름 x86_64 아키텍처(원본) aarch64 아키텍처(원본)
1 Docker 바이너리 프로그램 docker-24.0.9.tgz 다운로드 다운로드
2 DataFlux Func 이미지 dataflux-func.tar.gz 다운로드 다운로드
3 MySQL/MariaDB 이미지 mysql-5.7.26.tar.gz 다운로드 다운로드
4 Redis 이미지 redis-6.2.20.tar.gz 다운로드 다운로드
5 Docker 서비스 구성 파일 docker.service 다운로드 다운로드
6 DataFlux Func 설치 스크립트 run-portable.sh 다운로드 다운로드
7 Docker Stack 구성 파일 템플릿 docker-stack.example.yaml 다운로드 다운로드
8 이미지 목록 image-list 다운로드 다운로드
9 버전 정보 version 다운로드 다운로드

설치 파일을 모두 수동으로 다운로드한 후, 동일한 디렉터리에 넣으면 됩니다.

1.3 다운로드 옵션

다운로드 스크립트를 실행할 때 개인별 요구 사항을 충족하도록 다운로드 옵션을 지정할 수 있습니다.

예시는 다음과 같습니다.

주의: 지정된 다운로드 옵션 앞에는 --(하이픈 두 개)가 있습니다.

Bash
1
bash -c "$(curl -fsSL docs.dataflux-func.com/download)" -- --download-dir=func-download

지원되는 다운로드 옵션은 다음과 같습니다.

--arch={아키텍처} 아키텍처 지정

다운로드 스크립트는 기본적으로 로컬 컴퓨터와 동일한 아키텍처의 설치 패키지 파일을 다운로드합니다. 다른 아키텍처의 설치 파일이 필요하면 이 매개변수를 지정할 수 있습니다.

선택 가능한 아키텍처는 다음과 같습니다.

아키텍처 설명 매개변수 예시
Intel Intel / AMD 64비트 프로세서 --arch=x86_64
ARM ARM64v8 프로세서 --arch=aarch64

--download-dir={다운로드 디렉터리} 다운로드 디렉터리 지정

버전 2.6.1에서 추가됨

이 매개변수는 자동화 스크립트 방식의 DataFlux Func 배포에 적합합니다.

다운로드 스크립트는 기본적으로 현재 디렉터리의 dataflux-func-portable-{아키텍처}-{버전} 디렉터리를 새로 만들거나 비우고 설치 파일을 이 디렉터리에 다운로드합니다.

지정한 디렉터리에 다운로드해야 하는 경우 이 매개변수를 지정할 수 있습니다. 예:

Bash
1
bash -c "$(curl -fsSL docs.dataflux-func.com/download)" -- --download-dir=func-download

2. 설치 실행

위에서 다운로드한 설치 패키지 디렉터리로 이동하여 원클릭 설치 스크립트 run-portable.sh를 실행하면 됩니다.

설치 전에 시스템 요구 사항과 서버 구성을 확인하십시오

DataFlux Func는 macOS, Windows를 지원하지 않습니다. Linux 시스템에 복사한 후 설치를 실행하십시오

Bash
1
sudo bash {설치 파일이 있는 디렉터리}/run-portable.sh

자동 설치 스크립트를 사용하면 몇 분 안에 빠르게 설치하고 실행할 수 있습니다. 자동으로 구성되는 내용은 다음과 같습니다.

  • MySQL, Redis, DataFlux Func(Server, Worker, Beat 포함) 실행
  • /usr/local/dataflux-func/ 디렉터리를 자동으로 생성하고 모든 데이터를 이 디렉터리에 저장합니다(MySQL 데이터, Redis 데이터, DataFlux Func 구성, 로그 등의 파일 포함)
  • MySQL root 사용자 비밀번호와 시스템 Secret을 무작위로 생성하여 DataFlux Func 구성 파일에 저장합니다
  • Redis는 비밀번호를 설정하지 않습니다
  • MySQL, Redis는 외부 액세스를 제공하지 않습니다

실행이 완료되면 브라우저에서 http://{서버 IP 주소/도메인}:8088에 접속하여 초기화 작업 인터페이스를 이용할 수 있습니다.

실행 환경의 성능이 낮은 경우에는 docker ps 명령으로 모든 구성 요소가 성공적으로 시작되었는지 확인한 후에만 접속할 수 있습니다(아래 목록 참고)

  1. dataflux-func_server
  2. dataflux-func_worker-0
  3. dataflux-func_worker-1
  4. dataflux-func_worker-2
  5. dataflux-func_worker-3
  6. dataflux-func_worker-5
  7. dataflux-func_worker-6
  8. dataflux-func_beat
  9. dataflux-func_mysql
  10. dataflux-func_redis
  1. dataflux-func_server
  2. dataflux-func_worker-0
  3. dataflux-func_worker-1-6
  4. dataflux-func_worker-7
  5. dataflux-func_worker-8-9
  6. dataflux-func_beat
  7. dataflux-func_mysql
  8. dataflux-func_redis

2.1 설치 옵션

설치 스크립트를 실행할 때 개인 맞춤 요구 사항을 충족하도록 설치 옵션을 지정할 수 있습니다. 예:

Bash
1
sudo bash run-portable.sh --port=80

--mini 미니 버전 설치

낮은 사양 환경에서 리소스를 절약해야 할 때 사용하는 설치 모드입니다.

활성화하면:

  • 단일 Worker만 시작하여 모든 큐를 수신 대기합니다
  • 고부하 작업을 만나면 큐가 막히거나 멈추는 현상이 더 쉽게 발생합니다
  • 시스템 작업과 함수 작업이 처리 큐를 공유하므로 서로 영향을 받을 수 있습니다
  • 시스템 요구 사항이 다음과 같이 낮아집니다:
    • CPU 코어 수 >= 1
    • 메모리 용량 >= 2GB
  • 내장 MySQL, Redis를 사용하지 않는 경우 시스템 요구 사항을 더욱 낮출 수 있습니다

--port={포트 번호} 수신 포트 번호 지정

DataFlux Func는 기본적으로 8088 포트로 접속할 수 있습니다. 이 포트가 다른 프로그램에 의해 사용 중인 경우 9000과 같은 다른 포트를 선택할 수 있습니다.

--install-dir={설치 디렉터리} 설치 디렉터리 지정

기본 경로 /usr/local/dataflux-func와 다른 경로에 설치해야 하는 경우 이 매개변수를 지정할 수 있습니다.

--no-mysql 내장 MySQL 비활성화

기존 MySQL 데이터베이스를 사용해야 하는 경우 이 매개변수를 지정하여 로컬에서 MySQL을 시작하지 않도록 할 수 있습니다.

이 옵션을 활성화한 후에는 설치 완료 후 구성 페이지에서 올바른 MySQL 연결 정보를 지정해야 합니다

--no-redis 내장 Redis 비활성화

기존 Redis 데이터베이스를 사용해야 하는 경우 이 매개변수를 지정하여 로컬에서 Redis를 시작하지 않도록 할 수 있습니다.

이 옵션을 활성화한 후에는 설치 완료 후 구성 페이지에서 올바른 Redis 연결 정보를 지정해야 합니다

--auto-setup 자동 구성 실행

버전 2.6.0에서 추가됨

이 매개변수는 자동화 스크립트 방식의 DataFlux Func 배포에 적합합니다.

활성화하면 자동으로 구성하고 데이터베이스를 초기화하며, 더 이상 구성 페이지가 없습니다. 예:

Bash
1
sudo bash run-portable.sh --auto-setup

또한 --auto-setup 옵션을 활성화한 후에는 다른 --auto-setup-* 옵션을 추가하여 자동 구성을 조정할 수 있습니다. 자동 구성의 추가 옵션은 다음과 같습니다.

자동 구성 추가 옵션 기본값 설명
--auto-setup-admin-username={사용자 이름} admin 관리자 사용자 이름 지정
--auto-setup-admin-password={비밀번호} admin 관리자 비밀번호 지정
--auto-setup-ak-secret={AK Secret} 자동 생성 AK를 자동 생성하고
지정된 값을 AK Secret으로 사용합니다
--auto-setup-ak-id={AK ID} ak-auto-setup AK를 자동 생성할 때 사용하는 AK ID
(--auto-setup-ak-secret 옵션과 함께 사용해야 함)

자동 구성을 실행하고 관리자 비밀번호를 AdminPass로 지정해야 하는 경우, 전체 명령은 다음과 같습니다:

Bash
1
sudo bash run-portable.sh --auto-setup --auto-setup-admin-password='AdminPass'

3. 설치 확인

DataFlux Func 기본 설치가 완료되면, 일부 예제 스크립트가 이미 포함되어 있습니다.

다음 작업을 순서대로 수행하면 설치를 확인할 수 있습니다:

  1. 상단 내비게이션 바에서 '스크립트 편집기'를 클릭하고, 왼쪽 사이드바에서 '스크립트 라이브러리' - '예제' - '기본 데모'를 차례로 선택합니다.
  2. 오른쪽 스크립트 편집기 상단에서 '편집'을 클릭하여 편집 모드로 들어간 후, 'hello_world' 함수를 선택하고 '실행' 버튼을 클릭하여 함수를 실행합니다.
  3. 이때 하단의 '스크립트 출력'에서 함수의 반환값이 정상적으로 보이면 됩니다.

이상으로 설치 확인이 완료되었습니다.

3.1 각 서비스 설명

기본적으로 DataFlux Func가 정상적으로 시작된 후 다음 서비스가 실행됩니다:

#7, #8, #9 큐는 데이터 플랫폼 부속 버전 Func 전용 큐이며, 독립 배포 버전 Func에서는 예약 큐로 사용됩니다

이름 설명
dataflux-func_server DataFlux Func의 프론트엔드 서비스입니다.
주로 Web 인터페이스, API 인터페이스 등을 제공하는 데 사용됩니다.
dataflux-func_worker-0 #0, #4, #7, #8, #9 큐를 수신하는 Python 작업 유닛입니다.
주로 DataFlux Func의 내부 작업(#0 큐) 및 예약 큐에 잘못 들어온 기타 작업을 처리합니다.
dataflux-func_worker-1 #1 큐를 수신하는 Python 작업 유닛입니다.
주로 동기 실행되는 함수 API를 처리합니다.
dataflux-func_worker-2 #2 큐를 수신하는 Python 작업 유닛입니다.
주로 예약 작업을 처리합니다.
dataflux-func_worker-3 #3 큐를 수신하는 Python 작업 유닛입니다.
주로 비동기 실행되는 함수 API를 처리합니다.
dataflux-func_worker-5 #5 큐를 수신하는 Python 작업 유닛입니다.
주로 Web 인터페이스에서 스크립트를 실행하는 디버깅 작업을 처리합니다.
dataflux-func_worker-6 #6 큐를 수신하는 Python 작업 유닛입니다.
주로 커넥터가 메시지를 구독하여 실행하는 작업을 처리합니다.
dataflux-func_beat 예약 작업의 트리거이며, 전역에서 1개만 활성화할 수 있습니다.
dataflux-func_mysql DataFlux Func에 내장된 MySQL입니다.
dataflux-func_redis DataFlux Func에 내장된 Redis입니다.
이름 설명
dataflux-func_server DataFlux Func의 프론트엔드 서비스입니다.
주로 Web 인터페이스, API 인터페이스 등을 제공하는 데 사용됩니다.
dataflux-func_worker-0 #0 큐를 수신하는 Python 작업 유닛입니다.
주로 DataFlux Func의 내부 작업을 처리합니다.
dataflux-func_worker-1-6 #1, #2, #3, #4, #5, #6 큐를 수신하는 Python 작업 유닛입니다.
주로 동기 실행되는 함수 API를 처리합니다.
dataflux-func_worker-7 #7 큐를 수신하는 Python 작업 유닛입니다.
주로 Web 인터페이스에서 스크립트를 실행하는 디버깅 작업을 처리합니다.
dataflux-func_worker-8-9 #8, #9 큐를 수신하는 Python 작업 유닛입니다.
주로 비동기 작업(예약 작업 등)을 처리합니다.
dataflux-func_beat 예약 작업의 트리거이며, 전역에서 1개만 활성화할 수 있습니다.
dataflux-func_mysql DataFlux Func에 내장된 MySQL입니다.
dataflux-func_redis DataFlux Func에 내장된 Redis입니다.

3.2 데이터 저장 위치

DataFlux Func를 실행하기 위해서는 다양한 데이터를 저장해야 합니다. 주요 내용 및 저장 위치는 다음과 같습니다.

저장소 저장 경로 저장 내용
MySQL {설치 디렉터리}/mysql/ UI 작업에서 생성되는 대부분의 데이터(다음을 포함하되 이에 국한되지 않음):
1. 스크립트, 커넥터 구성, 환경 변수
2. 사용자 정보, 함수 API, 예약 작업
3. 작업 기록, 스크립트 실행 기록, 가져오기/내보내기 기록 등
Redis {설치 디렉터리}/redis/ 주로 캐시 및 큐에 사용되며, 다음을 포함하되 이에 국한되지 않습니다:
1. 사용자 로그인 정보
2. 스크립트 실행 시 생성되는 다양한 캐시
3. 스크립트 실행 작업 큐
4. Func 자체 모니터링 데이터 등
디렉터리 {설치 디렉터리}/data/ 주로 파일 형태로 존재해야 하는 데이터에 사용됩니다. 자세한 내용은 아래를 참조하십시오.
디렉터리 {설치 디렉터리}/data/resources/ 리소스 폴더(즉, '파일 관리자' 루트 디렉터리)
디렉터리 {설치 디렉터리}/data/resources/extra-python-packages/ PIP 도구로 설치된 서드파티 패키지
디렉터리 {설치 디렉터리}/data/resources/script-market/ 스크립트 마켓 다운로드 데이터
디렉터리 {설치 디렉터리}/data/sqldump/ 데이터베이스 자동 백업
디렉터리 {설치 디렉터리}/data/logs/ 시스템 로그
파일 {설치 디렉터리}/data/user-config.yaml DataFlux Func 시스템 구성
파일 /etc/dataflux-func DataFlux Func 설치 디렉터리 기록
업그레이드 시 현재 DataFlux Func의 설치 위치를 정확히 파악하는 데 사용됩니다.

4. 외부 데이터베이스 사용

DataFlux Func를 새로 설치할 때 외부 데이터베이스(MySQL, Redis)를 사용해야 하는 경우, 설치 스크립트 실행 시 내장 MySQL, Redis를 비활성화하도록 지정할 수 있습니다. 예:

Bash
1
sudo bash {설치 파일이 있는 디렉터리}/run-portable.sh --no-mysql --no-redis

설치가 완료된 후, 최초 실행 화면에서 '추가 구성 표시'를 클릭하여 MySQL, Redis 구성을 수정하면 됩니다.

MySQL, Redis 구성 요구 사항은 배포 및 유지보수 / 시스템 요구 사항을 참조하십시오.

기존 DataFlux Func의 데이터베이스를 외부로 마이그레이션해야 하는 경우 배포 및 유지보수 / 일상 유지보수 / 데이터베이스 마이그레이션을 참조하십시오.

4. Nginx 리버스 프록시

Nginx를 사용하여 리버스 프록시를 구성할 수 있습니다.

유의할 점은 DataFlux Func가 WebSocket 기술을 사용하므로 Nginx에 관련 구성을 추가해야 한다는 것입니다.

참고 구성은 다음과 같습니다.

Nginx 구성
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
map $http_upgrade $connection_upgrade {
    default upgrade;
    ''      close;
}

server {
    listen 80;
    server_name your-domain.com;

    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto $scheme;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection $connection_upgrade;
    proxy_http_version 1.1;

    location / {
        proxy_pass http://127.0.0.1:8088;
    }
}
Nginx 구성
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
map $http_upgrade $connection_upgrade {
    default upgrade;
    ''      close;
}

server {
    listen 443 ssl;
    server_name your-domain.com;

    ssl_certificate     /etc/nginx/ssl/your.pem;
    ssl_certificate_key /etc/nginx/ssl/your.key;

    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto $scheme;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection $connection_upgrade;
    proxy_http_version 1.1;

    location / {
        proxy_pass http://127.0.0.1:8088;
    }
}