Superset
是一款由 Airbnb 开源的“现代化的企业级 BI(商业智能) Web 应用程序”,其通过创建和分享 dashboard,为数据分析提供了轻量级的数据查询和可视化方案。
笔者所在的公司在试用了一段时间后决定迁移到生产环境 ,但是官方文档对高可用方案语焉不详,网上也没有相关的文档 ,踩了一些坑。记录一些免得大家继续踩坑
首先准备3台服务器
2台superset 1台安装中间件 mysql +redis
跟着官方文档把docker-compose 的环境安装好 。无坑 复制命令即可
搭建好mysql 之后 添加superset库 然后给库赋权
修改容器配置文件
笔者是这个路径
/data/superset/docker
下面有两个配置文件
.env .env-non-dev
一个给开发环境一个给非开发环境
修改 .env-non-dev
修改
# database configurations (do not modify)
这一行下面的数据库基本信息
DATABASE_DB=superset
DATABASE_HOST=192.168.44.109
DATABASE_PASSWORD=superset
DATABASE_USER=superset
再修改
# database engine specific environment variables
这一行下面的数据基本信息
注意如果你不是pg的话
需要把关于pg的注释
把mysql的打开
DATABASE_PORT=3306
DATABASE_DIALECT=mysql
#POSTGRES_DB=superset
#POSTGRES_USER=superset
#POSTGRES_PASSWORD=superset
MYSQL_DATABASE=superset
MYSQL_USER=superset
MYSQL_PASSWORD=superset
MYSQL_RANDOM_ROOT_PASSWORD=yes
像这样
然后修改redis 相关的配置
PYTHONPATH=/app/pythonpath:/app/docker/pythonpath_dev
这一行的下面
修改完了之后退到根目录
/data/superset
修改docker-compose-non-dev.yml
去掉其中关于redis 和 pg 的容器编排信息
x-superset-image: &superset-image apache/superset:latest-dev
x-superset-volumes: &superset-volumes
# /app/pythonpath_docker will be appended to the PYTHONPATH in the final container
- ./docker:/app/docker
- superset_home:/app/superset_home
version: "3.7"
services:
superset:
env_file: docker/.env-non-dev
image: *superset-image
container_name: superset_app
command: ["/app/docker/docker-bootstrap.sh", "app-gunicorn"]
user: "root"
restart: unless-stopped
ports:
- 8088:8088
volumes: *superset-volumes
superset-init:
image: *superset-image
container_name: superset_init
command: ["/app/docker/docker-init.sh"]
env_file: docker/.env-non-dev
user: "root"
volumes: *superset-volumes
superset-worker:
image: *superset-image
container_name: superset_worker
command: ["/app/docker/docker-bootstrap.sh", "worker"]
env_file: docker/.env-non-dev
restart: unless-stopped
user: "root"
volumes: *superset-volumes
superset-worker-beat:
image: *superset-image
container_name: superset_worker_beat
command: ["/app/docker/docker-bootstrap.sh", "beat"]
env_file: docker/.env-non-dev
restart: unless-stopped
user: "root"
volumes: *superset-volumes
volumes:
superset_home:
external: false
删成这样就行了 。然后启动
docker-compose -f docker-compose-non-dev.yml up
初始的数据结构会在启动后自动生成 ,如果之前配的有问题那可能会不完整 删库重启启动即可
有个superset.ab_permission_view_role这个表初始化不出来是因为之前初始化过 把/tmp下清空 ,把之前失败的容器删掉 就可以了
不需要执行数据库初始化的命令
之后拿这个配置就可以在任意机器上再启动一个web界面了
用后端的config.py的配置项
SUPERSET_WEBSERVER_TIMEOUT代替前端的配置。修改页面的默认超时时间