superset 基于 docker-compose的高可用实践

  • Post author:
  • Post category:其他



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代替前端的配置。修改页面的默认超时时间



版权声明:本文为h952520296原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。