Hadoop,  Operation

DolphinScheduler 测试/生产部署实例

由于官方指引相对以轻量简单为主,但真实的企业级部署往往情况复杂(如多种混杂环境交错、集成已有DevOps、PaaS平台需统一认证等等),操作过程中可能存在一些问题,因此实战总结了以下操作笔记,以供不时之需。

1. Deploy on Docker

先决条件: (Docker 1.13.1+、Docker Compose 1.11.0+)

此方案仅推荐用于测试,生产环境建议使用 集群模式Kubernetes 模式

alias docker='nerdctl'

1.1 环境配置

  • 查看容器默认配置

可选,由于 dolphinscheduler 采用 springboot 开发,因此查看容器内默认配置文件就知道所有支持的环境变量名。

docker run --rm \
--entrypoint /bin/sh \
apache/dolphinscheduler:2.0.5 -c "cat /opt/apache-dolphinscheduler-*-bin/conf/application-postgresql.yaml"
cat <<-EOF>config.env.sh
DOLPHINSCHEDULER_OPTS=

REGISTRY_PLUGIN_NAME=zookeeper
REGISTRY_SERVERS=dolphinscheduler-zookeeper:2181

DATABASE_TYPE=postgresql
DATABASE_USERNAME=root
DATABASE_PASSWORD=root
DATABASE_HOST=dolphinscheduler-postgresql
DATABASE_PARAMS="characterEncoding=utf8"

# for compatibility, invalid?
#SPRING_DATASOURCE_URL="jdbc:postgresql://${DATABASE_HOST}:5432/dolphinscheduler"
#SPRING_DATASOURCE_USERNAME="${DATABASE_USERNAME}"
#SPRING_DATASOURCE_PASSWORD="${DATABASE_PASSWORD}"
EOF

1.2 使用 compose 运行容器 (使用内置 postgresql)

注:目前亲测发现,使用 nerdctl 0.20.0 可能存在如启动容器 cni 插件版本不支持错误、12345 端口映射错误,前者可通过手动修改 /etc/cni/dolphinscheduler-* 配置中的 version 字段为 MARKDOWN_HASH9eac01120a372609e0afa3b236d9ed2dMARKDOWNHASH 即可,但后者暂未找到解决方法,此时建议使用如下 1.3#直接运行容器。

curl -L -O https://raw.githubusercontent.com/apache/dolphinscheduler/2.0.5/docker/docker-swarm/docker-compose.yml

# 【注】当前 2.0.5 版本官方配置错误,需手动替换为 2.0.5
sed -i 's/2.0.4/2.0.5/g' docker-compose.yml

# 启动前清空主机上的环境变量,否则它会此 java 路径(no such)会导致启动失败。
export JAVA_HOME=

# If the engine is dockerd.
docker-compose up -d

# If the engine is containerd.
nerdctl compose --env-file ./config.env.sh up -d

1.3 (可选)直接运行容器 (使用外部 MySQL)

export ds_servers=(master worker api alert python-gateway)

for dss in ${ds_servers[@]}; do
docker run -d \
  --name ds-${dss} \
  --network host \
  --restart always \
  -e DATABASE_TYPE=mysql \
  -e DATABASE_HOST="172.29.235.101" \
  -e DATABASE_PORT="3306" \
  -e DATABASE_DATABASE="dolphinscheduler" \
  -e DATABASE_USERNAME="dolphinscheduler" \
  -e DATABASE_PASSWORD="dolphinscheduler" \
  -e DATABASE_PARAMS='useunicode=true&serverTimezone=Asia/Shanghai&characterEncoding=utf-8&useSSL=false&autoReconnect=true' \
  -e ZOOKEEPER_QUORUM="172.29.235.101:2181" \
  apache/dolphinscheduler:2.0.5 ${dss}-server
done
  • 由于许可证限制默认未包含 mysql-connector.jar,需手动拷贝进所有容器。
# 注意版本
#curl -OL 'https://repo1.maven.org/maven2/mysql/mysql-connector-java/8.0.16/mysql-connector-java-8.0.16.jar'
curl -OL 'https://repo1.maven.org/maven2/mysql/mysql-connector-java/5.1.48/mysql-connector-java-5.1.48.jar'

# 将驱动拷贝进容器
for dss in ${ds_servers[@]}; do docker cp ./mysql-connector-*.jar ds-${dss}:/opt/apache-dolphinscheduler-2.0.5-bin/lib/; echo $dss; done

# jar 文件授权
for dss in ${ds_servers[@]}; do docker exec -it ds-${dss} /bin/bash -c "chown -R 1005:1005 /opt/apache-dolphinscheduler-2.0.5-bin/lib/; echo $dss"; done
  • 重启所有容器
for dss in ${ds_servers[@]}; do docker restart ds-${dss}; done
  • 查看日志
docker logs -f --tail 10 ds-master # ds-api ds-worker ds-alert ds-python-gateway

1.5 登录系统

2. Deploy on Host (Distributed Cluster)

TODO

3. Deploy on Kubernetes (Distributed Cluster)

TODO

4. Integration with SSO

TODO

  • LDAP

TODO

留言

您的电子邮箱地址不会被公开。