コンテンツにスキップ

デプロイとメンテナンス / スタンドアロンデプロイ

本記事では、サーバーに 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 ダウンロードオプション

ダウンロードスクリプトを実行するときに、ダウンロードオプションを指定して、個々のニーズに応じたカスタマイズができます。

例は以下の通りです:

注意:指定されたダウンロードオプションの前には --(ハイフン2つ)が必要です

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;
    }
}