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

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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值