Skip to content

Latest commit

 

History

History
306 lines (207 loc) · 16.2 KB

File metadata and controls

306 lines (207 loc) · 16.2 KB

DataFlux Func

DataFlux Func 是一个基于Python 的类ServerLess 的脚本开发、管理及执行平台。

DataFlux Func 读作data flux function,系统内有时会缩写为DFF

前身为DataFlux 下属的一个函数计算组建,目前已成为可独立运行的系统。

本系统主要分为2个部分:

  • Server:使用Node.js + Express 构建,主要提供Web UI 客户端、对外API 接口
  • Worker:使用Python3 + Celery 构建,主要提供Python 脚本的执行环境(内含Beat模块)

本文档主要说明在线安装部署本项目的步骤。

注意:本文所有涉及到的shell命令,在root用户下可直接运行,非root用户下需要添加sudo运行

系统及环境要求

  1. 本系统使用docker stack部署, 因此要求当前系统已经安装docker,且可以正常使用docker stack

部署程序从驻云官方维护的镜像仓库拉取镜像, 进行此操作时,请确保已经使用docker login <用户名> <密码> pubrepo.jiagouyun.com进行登录。

使用docker stack需要Docker Swarm模式, 可以使用docker swarm init初始化当前节点。

如果本机存在多个网卡,需要在上述初始化命令中指定网卡, 如:docker swarm init --advertise-addr=ens33。 本机网卡列表可以通过ifconfig或者ip addr查询

  1. 运行DataFlux Func 需要满足以下条件:
  • CPU 核心数 >= 2
  • 内存容量 >= 4GB
  • 磁盘空间 >= 20GB
  • 操作系统为 Ubuntu 16.04 LTS/CentOS 7.6 以上
  • 纯净系统(安装完操作系统后,除了配置网络外没有进行过其他操作)

部署运行

用户可以选择官方提供的一键部署命令, 也可以下载相关配置文件后,调整配置文件后手动启动。

在线方式:使用基于docker stack的自动部署脚本部署

注意:需要事先登录驻云官方镜像库

确保已满足上文中的「系统及环境要求」

运行以下命令,即可自动下载配置脚本并最终启动整个DataFlux Func:

/bin/bash -c "$(curl -fsSL https://t.dataflux.cn/func-docker-stack-run)"

使用自动部署脚本可以实现几分钟内快速部署运行,自动配置的内容如下:

  • 运行MySQL、Redis、DataFlux Func(包含Server,Worker,Beat)
  • 自动创建并将所有数据保存于/usr/local/dataflux-func/目录下(包括MySQL数据、Redis数据、DataFlux Func 配置、日志等文件)
  • 随机生成MySQL root用户密码、系统Secret,并保存于DataFlux Func 配置文件中
  • Redis不设密码
  • MySQL、Redis 不提供外部访问

执行完成后,可以使用浏览器访问http://localhost:8088进行初始化操作界面。

注意:如果运行环境性能较差,应当使用docker ps命令确认所有组件成功启动后,方可访问(见以下列表)

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

安装选项

自动安装脚本支持一些安装选项,用于适应不同的安装需求

添加安装选项时,只需要在自动部署命令后添加-- --{参数}[ 参数配置(如有)]即可,如:

# 指定安装目录,同时开启MQTT组件(mosquitto)
/bin/bash -c "$(curl -fsSL https://t.dataflux.cn/func-docker-stack-run)" -- --install-dir /home/dev/datafluxfunc --mqtt

注意:参数前确实有--,表示参数传递给需要执行的脚本,此处不是笔误

具体参数详情见下文

--mini:安装迷你版

针对低配置环境下,需要节约资源时的安装模式。

开启后:

  • 仅启动单个Worker 监听所有队列
  • 遇到重负载任务更容易导致队列阻塞和卡顿
  • 系统任务和函数任务共享处理队列,相互会受到影响
  • 系统要求降低为:
    • CPU 核心数 >= 1
    • 内存容量 >= 2GB
  • 如不适用内置的MySQL、Redis,系统要求可以进一步降低
--install-dir {安装目录}:指定安装目录

需要安装到与默认路径/usr/local/dataflux-func不同的路径下时,可指定此参数

--no-mysql:禁用内置MySQL

需要使用已有的MySQL数据库时,可指定此参数,禁止在本机启动MySQL。

注意:启用此选项后,需要在安装完成后的配置页面指定正确的MySQL连接信息

--no-redis:禁用内置Redis

需要使用已有的Redis数据库时,可指定此参数,禁止在本机启动Redis。

注意:启用此选项后,需要在安装完成后的配置页面指定正确的Redis连接信息

--mqtt:启用内置MQTT Broker

需要安装后,同时在本机启动MQTT Broker时,可指定此选项。

注意:内置的MQTT Broker 为eclipse-mosquitto,并会自动生成对应的数据源

进阶方式:使用docker stack配置文件进行部署

确保已满足上文中的「系统及环境要求」

下载示例配置文件,并复制一份作为配置文件:

wget https://t.dataflux.cn/func-docker-stack -O docker-stack.example.yaml
cp docker-stack.example.yaml docker-stack.yaml

配置文件最开头标注了详细说明,可以根据说明进行修改:

grep -E '^#' docker-stack.yaml

修改完成后,即可使用docker stack进行部署:

docker pull {docker-stack.yaml中的所有镜像}
docker stack deploy dataflux-func -c docker-stack.yaml

使用进阶部署方式可以提供一定程度的个性化定制,相比推荐方式,可以方便对以下内容进行修改:

  • DataFlux Func 版本(从最新版latest改为其他)
  • 数据存储位置(从/usr/local/dataflux-func/改为其他)
  • 修改DataFlux Func运行方式(如指定既存MySQL、Redis 作为数据存储等)
  • 修改MySQL、Redis运行方式(如允许公开访问,指定密码、修改配置等。具体内容请参考对应镜像的官方说明)

执行完成后,可以使用浏览器访问http://localhost:8088进行初始化操作界面(假设使用默认端口)。

注意:如果运行环境性能较差,应当使用docker ps命令确认所有组件成功启动后,方可访问

更新部署

注意:如果最初安装时指定了不同安装目录,更新时也需要指定完全相同的目录才行

需要更新部署时,请按照以下步骤进行:

  1. 使用docker stack rm dataflux-func命令,移除正在运行的服务(此步骤可能需要一定时间)
  2. 使用docker ps确认所有容器都已经退出
  3. 参考上文,重新部署(脚本不会删除原先的数据)

重启服务

需要重新启动时,请按照以下步骤进行:

  1. 使用docker stack rm dataflux-func命令,移除正在运行的服务(此步骤可能需要一定时间)
  2. 使用docker ps确认所有容器都已经退出
  3. 使用docker stack deploy dataflux-func -c {安装目录}/docker-stack.yaml重启所有服务

查询日志

默认情况下,日志文件保存位置如下:

环境 日志文件位置
容器内 /data/dataflux-func.log
宿主机 {安装目录}/data/dataflux-func.log

数据库自动备份

默认情况下,数据库备份文件保存位置如下:

环境 日志文件位置
容器内 /data/sqldump/dataflux-func-sqldump-YYYYMMDD-hhmmss.sql
宿主机 {安装目录}/data/sqldump/dataflux-func-sqldump-YYYYMMDD-hhmmss.sql

提示:旧版本的备份文件命名可能为dataflux-sqldump-YYYYMMDD-hhmmss.sql

数据库备份文件默认默认情况下,每小时备份一次,最多保留7天(共168份)

完全卸载

某些情况无法直接升级的时候,需要先完全卸载后重新部署

需要完全卸载时,请按照以下步骤进行:

  1. 视情况需要,使用脚本集导出功能导出脚本数据
  2. 使用docker stack rm dataflux-func命令,移除正在运行的旧版本(此步骤可能需要一定时间)
  3. 使用rm -rf {安装目录}命令,移除所有相关数据

参数调整

默认的参数主要应对最常见的情况,一些比较特殊的场景可以调整部分参数来优化系统:

参数 默认值 说明
LOG_LEVEL WARNING 日志等级。
可以改为ERROR减少日志输出量。
或直接改为NONE禁用日志
_WORKER_CONCURRENCY 5 工作单元进程数量。
如存在大量慢IO任务(耗时大于1秒),可改为20提高并发量,但不要过大,防止内存耗尽
_WORKER_PREFETCH_MULTIPLIER 10 工作单元任务预获取数量。
如存在大量慢速任务(耗时大于1秒),建议改为1

版本号规则

版本号由3个部分组成:主版本号.次版本号.修订版本号

主版本号从1开始。 只有发生向下不兼容的调整,才会向上加一。

次版本号从0开始。 当发生功能新增/调整,但依然向下兼容时,才会向上加一。 每当主版本号加一后,次版本号归零。

修订版本号从0开始。 当发生问题修复时,才会向上加一。(问题修复一定向下兼容) 每当次版本号加一后,修订版本号归零。

项目介绍

主要功能

  • 脚本管理:支持草稿,脚本集,导入导出等
  • Web端简易编辑器:基于CodeMirror,支持代码高亮、函数快速跳转定位、直接指定函数运行等
  • 内置多种数据库驱动:提供统一封装的数据操作接口
  • 环境变量:方便脚本运行时获取配置
  • 授权链接:允许函数以限定的方式开放为HTTP API
  • 自动触发配置:允许函数定时自动运行,满足Crontab 语法
  • 批处理:允许函数异步运行
  • 脚本导入导出:方便备份、批量部署
  • 其他...

支持的数据库

数据库/消息队列/中间件 所用第三方库 兼容数据库
DataFlux DataWay(HTTP方式) dataway-python-sdk-nodep
InfluxDB(HTTP方式) influxdb 阿里云时序数据库InfluxDB 版
MySQL mysqlclient MariaDB
Percona Server for MySQL
阿里云PolarDB MySQL
阿里云OceanBase
阿里云分析型数据库(ADB) MySQL 版
Redis redis
Memcached python3-memcached
Clickhouse(TCP方式) clickhouse-driver
Oracle数据库 cx-Oracle
Microsoft SQL Server pymssql
PostgreSQL psycopg2-binary Greenplum Database
阿里云PolarDB MySQL
阿里云分析型数据库(ADB) PostgreSQL 版
mongoDB pymongo
elasticsearch(HTTP方式) requests
NSQ (Lookupd, HTTP方式) requests
MQTT paho-mqtt

相关链接