部署和維護 / 單機部署
本文主要介紹如何在伺服器上直接安裝、部署單機版 DataFlux Func。
有關在 k8s 中使用 Helm 安裝 DataFlux Func,請參考 部署和維護 / 安裝部署 / Helm 部署
1. 下載安裝包
DataFlux Func 支援將所需安裝檔案下載後,透過 U 盤等移動裝置帶入無公網環境安裝的「安裝包」。
下載的「安裝包」本身附帶了自動安裝指令碼、Docker 等,執行即可進行安裝(詳情見下文)
1.1 一鍵命令下載
對於 Linux、macOS 等系統,推薦使用官方提供的 shell 命令下載安裝包。
執行以下命令,即可自動下載 DataFlux Func 所需安裝檔案,下載指令碼會自動根據當前環境選擇下載 x86_64
或 aarch64
架構版本:
安裝前請確認系統要求和伺服器配置
Bash | |
---|---|
1 |
|
如需要下載架構與最終安裝的伺服器架構不相同,可以增加架構選項指定架構:
Bash | |
---|---|
1 |
|
Bash | |
---|---|
1 |
|
命令執行完成後,所有安裝檔案都儲存在自動建立的 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 |
|
支援的下載選項如下:
--arch={架構}
指定架構
下載指令碼預設下載與本機相同架構的安裝包檔案,如果需要下載不同架構的安裝檔案,可以指定此引數。
可選的架構如下:
架構 | 說明 | 引數示例 |
---|---|---|
Intel | Intel / AMD 64 位處理器 | --arch=x86_64 |
ARM | ARM64v8 處理器 | --arch=aarch64 |
--download-dir={下載目錄}
指定下載目錄
於 2.6.1 版本新增
本引數適合用於自動化指令碼方式部署 DataFlux Func
下載指令碼預設會新建 / 清空當前目錄下的 dataflux-func-portable-{架構}-{版本號}
目錄,並將安裝檔案下載至此。
如果需要下載到指定的目錄,可以指定此引數,如:
Bash | |
---|---|
1 |
|
2. 執行安裝
進入在上文中下載的安裝包目錄,執行一鍵安裝指令碼 run-portable.sh
即可:
安裝前請確認系統要求和伺服器配置
DataFlux Func 不支援 macOS、Windows,請複製到 Linux 系統下再執行安裝
Bash | |
---|---|
1 |
|
使用自動安裝指令碼可以實現幾分鐘內快速安裝執行,自動配置的內容如下:
- 執行 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 命令確認所有元件成功啟動後,方可訪問(見以下列表)
dataflux-func_server
dataflux-func_worker-0
dataflux-func_worker-1
dataflux-func_worker-2
dataflux-func_worker-3
dataflux-func_worker-5
dataflux-func_worker-6
dataflux-func_beat
dataflux-func_mysql
dataflux-func_redis
dataflux-func_server
dataflux-func_worker-0
dataflux-func_worker-1-6
dataflux-func_worker-7
dataflux-func_worker-8-9
dataflux-func_beat
dataflux-func_mysql
dataflux-func_redis
2.1 安裝選項
在執行安裝指令碼時,可以指定安裝選項以滿足個性化需求,如:
Bash | |
---|---|
1 |
|
--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 |
|
此外,在開啟 --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 |
|
3. 驗證安裝
DataFlux Func 預設安裝完成後,就已經附帶了一些示例指令碼。
依次執行以下操作,即可驗證安裝:
- 點選頂部導航條的「指令碼編輯器」,在左側欄依次選擇「指令碼庫」-「示例」-「基礎演示」
- 在右側指令碼編輯器頂部,點選「編輯」進入編輯模式,選擇「hello_world」函式並點選「執行」按鈕執行函式
- 此時,如果在底部「指令碼輸出」中,能夠正常看到函式的返回值
至此,驗證安裝完畢
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 |
|
安裝完成後,在首次執行介面,點選「顯示更多配置」,修改 MySQL、Redis 配置即可。
有關 MySQL、Redis 的配置要求,請參考 部署和維護 / 系統要求
如果需要將現有 DataFlux Func 的資料庫遷移至外部,請參考 部署和維護 / 日常維護 / 遷移資料庫