跳转至

部署和维护 / 单机部署

本文主要介绍如何在服务器上直接安装、部署单机版 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 func.guance.com/portable-download)" -- --for=GSE
Bash
1
/bin/bash -c "$(curl -fsSL func.guance.com/portable-download)"

GSE 版和旧版

如需要下载架构与最终安装的服务器架构不相同,可以增加架构选项指定架构:

Bash
1
/bin/bash -c "$(curl -fsSL func.guance.com/portable-download)" -- --for=GSE --arch=x86_64
Bash
1
/bin/bash -c "$(curl -fsSL func.guance.com/portable-download)" -- --for=GSE --arch=aarch64
Bash
1
/bin/bash -c "$(curl -fsSL func.guance.com/portable-download)" -- --arch=x86_64
Bash
1
/bin/bash -c "$(curl -fsSL func.guance.com/portable-download)" -- --arch=aarch64

命令执行完成后,所有安装文件都保存在自动创建的dataflux-func-portable-{架构}-{版本号}目录下。

  • 对于需要将 DataFlux Func 安装到无公网的服务器时,可以先在本机下载,之后将整个目录通过 U 盘等移动存储设备,或scp工具等复制到目标机器中
  • 对于需要将 DataFlux Func 安装到可以访问公网的服务器,直接在服务器上下载即可

1.2 手工下载

对于不便使用 shell 命令的系统,可手工下载所需安装文件。

如需要手工下载,以下是所有的文件列表:

# 内容 文件名 x86_64 架构(GSE 版) aarch64 架构(GSE 版)
1 Docker 二进制程序 docker-23.0.6.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 下载 下载
# 内容 文件名 x86_64 架构(原版) aarch64 架构(原版)
1 Docker 二进制程序 docker-23.0.6.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 下载 下载

GSE 版和旧版

手工下载所有安装文件后,放入同一个目录下即可。

1.3 下载选项

在执行下载脚本时,可以指定下载选项以满足个性化需求。

示例如下:

注意:在指定的下载选项之前,存在一个 --(两个中横线)

Bash
1
/bin/bash -c "$(curl -fsSL func.guance.com/portable-download)" -- --for=GSE --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 func.guance.com/portable-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 工作单元。
主要处理一般用途的用户函数任务
dataflux-func_worker-2 监听 #2 队列的 Python 工作单元。
主要处理自动触发的用户函数任务
dataflux-func_worker-3 监听 #3 队列的 Python 工作单元。
主要处理批处理的用户函数任务
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 工作单元。
主要处理同步任务(授权链接)
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. 用户信息、授权链接配置、自动触发配置、批处理配置
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 的数据库迁移至外部,请参考 部署和维护 / 日常维护 / 迁移数据库