这是openEuler 搭建 SeaTable 小记(1)的第二篇,主要介绍如何部署 SeaTable Python 运行器。

架构

SeaTable 的 Python 脚本运行环境包括 Python Runner 和 SeaTable FAAS Scheduler。

FAAS 是调度器,主要负责调度 SeaTable 运行脚本请求、安排定时任务和保存/统计脚本运行结果等。相当于一个 master 节点。
Python Runner 是脚本的执行者,Python Runner 在收到一个脚本运行请求后,会下载脚本内容并启动一个 docker 容器来运行这个脚本。脚本运行结束后,容器自动销毁,以此保证安全性。相当于是一个 worker 节点。

Python Runner 可以和 SeaTable FAAS Scheduler 部署到一台机器上。

准备

我准备了一台最小化安装的 OpenEuler 操作系统虚拟机,并安装了 Docker,DockerCompose 以及 Python3(因为 SeaTable Python Runner 依赖 Python3)。

部署 Python Runner

准备软件包和初始化服务

下载 seatable-python-runner 软件包,并解压到 /opt/seatable-python-runner,安装相关依赖,并初始化服务。

1
2
3
4
5
6
unzip seatable-python-runner-1.x.x.zip -d /opt && cd /opt/seatable-python-runner
sudo pip3 install -r server_requirements.txt
# 拉取 SeaTable Python Runner 依赖镜像
docker pull seatable/python-runner:latest
# 初始化服务
sudo ./init.sh

配置 Python Runner

编辑配置文件。

1
vim conf/seatable_python_runner_settings.py

添加 seatable-faas-scheduler 的服务地址。

1
2
3
# seatable-faas-scheduler 的 URL, 如果使用 IP 地址的话,应为 http(s)://IP:PORT,即表示 seatable-faas-scheduler 的服务地址
SCHEDULER_URL = 'http://192.168.74.12:80' # 这是我虚拟机的IP
# 这里应该以实际域名或者IP为准。

启停服务

1
2
3
# 此时需要启动服务
sudo ./start.sh
sudo ./stop.sh

部署 FAAS Scheduler

部署目录位置 /opt/seatable-faas-scheduler,若没有该目录,需要创建目录。

拉取 SeaTable FAAS Scheduler 镜像。

1
docker pull seatable/seatable-faas-scheduler:latest

下载和修改docker-compose.yml文件。

  • MySQL 的 root 的密码(MYSQL_ROOT_PASSWORD 和 DB_ROOT_PASSWD)
  • MySQL 数据的卷目录 (volume)
  • SeaTable FAAS Scheduler 数据的卷目录(volume)
  • 主机名(SEATABLE_FAAS_SCHEDULER_SERVER_HOSTNAME),域名或者你的服务器的外部 IP
  • 时区

拉起容器docker-compose up初始化 SeaTable FAAS Scheduler 数据库。
当日志输出 This is a idle script (infinite loop) to keep container running 时,数据库已初始化成功。Ctrl+C 退出。

修改配置文件,vim /SeaTable FAAS Scheduler 数据卷目录/seatable-faas-scheduler/conf/seatable_faas_scheduler_settings.py。

1
2
3
4
5
# SeaTable 域名
DTABLE_WEB_SERVICE_URL = 'https://demo.seatable.com'
# Python 运行器域名或者IP,可以是IP,默认端口是8080,可以在 /opt/seatable-python-runner/conf/seatable_python_runner.ini 中 http 字段修改
RUNNER_URL = 'http://192.168.74.12:8080'
SEATABLE_FAAS_AUTH_TOKEN = '66666' # 仅复制此配置项,用来修改 SeaTable 配置文件

修改 SeaTable 配置文件

1
2
3
4
5
vim /SeaTable 数据卷目录/seatable/conf/dtable_web_settings.py
# seatable-faas-scheduler 的地址
SEATABLE_FAAS_URL = 'http://192.168.74.12:80'
# 与 seatable_faas_scheduler_settings.py 中的配置相同
SEATABLE_FAAS_AUTH_TOKEN = '66666'

重启服务

启动 SeaTable FAAS Scheduler 服务器

1
2
# 在Runner服务器上执行
docker-compose up -d

重启 SeaTable 服务

1
2
# 在SeaTable服务器上执行
docker exec -d seatable /shared/seatable/scripts/seatable.sh restart

验证

在 SeaTable 上创建一个 Python 脚本,应能够正常执行。

常见问题

  • 日志位置:
    • Runner 日志:/opt/seatable-python-runner/logs
    • Scheduler 日志:seatable-faas-scheduler/logs
    • Scheduler 的 Nginx 日志:nginx-logs