跳轉到

部署和維護 / 單機部署

本文主要介紹如何在伺服器上直接安裝、部署單機版 DataFlux Func。

有關在 k8s 中使用 Helm 安裝 DataFlux Func,請參考 部署和維護 / 安裝部署 / Helm 部署

1. 下載安裝包

DataFlux Func 支援將所需安裝檔案下載後,透過 U 盤等移動裝置帶入無公網環境安裝的「安裝包」。

下載的「安裝包」本身附帶了自動安裝指令碼、Docker 等,執行即可進行安裝(詳情見下文)

1.1 一鍵命令下載

對於 Linux、macOS 等系統,推薦使用官方提供的 shell 命令下載安裝包。

執行以下命令,即可自動下載 DataFlux Func 所需安裝檔案,下載指令碼會自動根據當前環境選擇下載 x86_64aarch64 架構版本:

安裝前請確認系統要求和伺服器配置

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

如需要下載架構與最終安裝的伺服器架構不相同,可以增加架構選項指定架構:

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

命令執行完成後,所有安裝檔案都儲存在自動建立的 dataflux-func-portable-{架構}-{版本號} 目錄下。

  • 對於需要將 DataFlux Func 安裝到無公網的伺服器時,可以先在本機下載,之後將整個目錄透過 U 盤等移動儲存裝置,或 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.tar.gz 下載 下載
4 Redis 映象 redis.tar.gz 下載 下載
5 Docker 服務配置檔案 docker.service 下載 下載
6 DataFluxFunc 安裝指令碼 run-portable.sh 下載 下載
7 Docker Stack 配置檔案模板 docker-stack.example.yaml 下載 下載
8 映象列表 image-list 下載 下載
9 版本資訊 version 下載 下載

手工下載所有安裝檔案後,放入同一個目錄下即可。

1.3 下載選項

在執行下載指令碼時,可以指定下載選項以滿足個性化需求。

示例如下:

注意:在指定的下載選項之前,存在一個 --(兩個中橫線)

Bash
1
/bin/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
/bin/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 /bin/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 /bin/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 /bin/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 /bin/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 /bin/bash {安裝檔案所在目錄}/run-portable.sh --no-mysql --no-redis

安裝完成後,在首次執行介面,點選「顯示更多配置」,修改 MySQL、Redis 配置即可。

有關 MySQL、Redis 的配置要求,請參考 部署和維護 / 系統要求

如果需要將現有 DataFlux Func 的資料庫遷移至外部,請參考 部署和維護 / 日常維護 / 遷移資料庫