在 AWS 上部署无服务器 Apache DolphinScheduler 任务调度系统

2023-01-15 0 508

https://github.com/apache/dolphinscheduler

在 AWS 上部署无服务器 Apache DolphinScheduler 任务调度系统

1. 大背景如是说

在数仓 ETL、app及动态排序的情景下,统计数据各项任务的倚赖运维亲密关系愈来愈繁杂。在AWS网络平台上提供更多了代销的 Apache Airflow(MWAA)与 Step function、Glue Workflow 等具备很大运维选曲各项任务的辅助工具,但在建模多功能管理工作操作形式上的全力支持都有很大的管制缺位。Apache DolphinScheduler 意在化解繁杂的大统计数据各项任务倚赖亲密关系,并为插件提供更多统计数据和各种 OPS 选曲中的亲密关系,以及化解统计数据研制 ETL 倚赖错综繁杂,难以监视各项任务身心健康状况的问题。

为导入 Apache DolphinScheduler,同时考量生产的易用性及保护固定式性,责任编辑提供更多了在 AWS 网络平台上使用全然无服务项目器的 EKS on Fargate 罐子服务项目及 Aurora Serverless PostgreSQL 统计资料库展开布署的计划,并得出详尽的布署关键步骤及保护手册。

1.1 DolphinScheduler 如是说

Apache DolphinScheduler 是一个分布式控制系统和可扩充的开放源码工作流协调网络平台,具备强悍的 DAG 建模介面。DolphinScheduler 以 DAG(Directed Acyclic Graph,DAG)INS13ZD形式装配各项任务,可以及时处置监视各项任务的继续执行状况,全力支持重传、选定结点恢复正常失利、中止、恢复正常、中止各项任务等操作形式。

DolphinScheduler 构架主要就包涵 MasterServer、WorkerServer、AlertServer、ApiServer、ZooKeeper 与 UI。其中 MasterServer 与WorkerServer 选用分布式控制系统无服务中心结构设计经营理念依次负责管理工作各项任务重新组合、各项任务递交监视及各项任务的继续执行和提供更多笔记服务项目。AlertServer 主要就负责管理工作处置后端 UI 层的允诺。该服务项目标准化提供更多 RESTful api 向内部提供更多允诺服务项目。AlertServer 提供更多监视系统服务项目。控制系统中的 MasterServer 和 WorkerServer 结点都通过 ZooKeeper 来展开软件产业管理工作和纠错。构架草图如下表所示:

在 AWS 上部署无服务器 Apache DolphinScheduler 任务调度系统

1.2 AWS 无服务项目器罐子 EKS on Fargate 如是说

AWS Fargate 是一种为罐子按需提供更多大小合适的排序容量的技术。使用 AWS Fargate,用户不必再自己预置、配置或扩充虚拟机组即可运行罐子。也无需再选择服务项目器类型、确定扩充结点组的时间和优化软件产业打包。用户可以控制要在 Fargate 上启动的 pods,以及它们如何利用Fargate 配置文件运行。Fargate 配置文件被定义为 Amazon EKS 软件产业的一部分。

Amazon EKS 使用由 AWS 构建的控制器(使用 Kubernetes 提供更多的上游可扩充模型)将 Kubernetes 与 AWS Fargate 集成。这些控制器作为 Amazon EKS 代销 Kubernetes 控制面板的一部分运行,负责管理工作将本机 Kubernetes pods 安排到 Fargate 上。除了若干转换和验证准入控制器外,Fargate 控制器还包括一个与默认 Kubernetes 运维器一起运行的新运维器。当您启动满足 Fargate 上的运行条件的 pod 时,软件产业中运行的 Fargate 控制器会识别、更新 pod 并将其安排到 Fargate 上。

1.3 AWS 无服务项目器统计资料库 Aurora Serverless 如是说

Amazon Aurora Serverless 是 Amazon Aurora 的一种按需自动扩充配置版本。Amazon Aurora Serverless 会根据插件的需求自动启动、关闭以及扩充或缩减容量。用户可以在 AWS 上运行统计资料库,而无需管理工作统计资料库容量。借助 Aurora Serverless,用户可以创建统计资料库,选定所需的统计资料库容量范围,然后连接到插件。只需在统计资料库处于活动状况期间按照每秒使用的统计资料库容量展开付费,并且只需在 Amazon Relational Database Service(Amazon RDS)控制台中继续执行几个关键步骤即可在标准配置和无服务项目器配置之间展开迁移。

2. 布署说明

2.1 整体布署构架

在 AWS 上部署无服务器 Apache DolphinScheduler 任务调度系统

EKS 软件产业位于两个可用区,布署在私有子网内,使用 ECR 镜像仓库管理工作 DolphinScheduler 镜像;

EKS 使用 fargate 结点,持久化存储挂载在 EFS,资源存储使用 S3 对象存储服务项目,使用 Aurora Serverless pgsql 提供更多元统计资料库;

DolphinScheduler api、worker 及 master 结点通过跳板机 kubectl 命令展开扩缩容;

使用 aws load balancer controller 布署 internet-facing 负载均衡,代理api ui 对外提供更多访问。

2.2 准备工作

网络规划,以美东 1(us-east-1)为例,创建 vpc 网络:10.9.0.0/16 ,其中公有网段处于两个 AZ,10.9.1.0/24 与 10.9.2.0/24 ,Pod 网段 10.9.10.0/24 与 10.9.11.0/24,Node 网段 10.9.20.0/24 与 10.9.21.0/24,服务项目网段由EKS软件产业生成为虚拟网段,不在VPC子网里。在VPC中创建互联网网关,在公有子网中创建NAT网关,并创建一台跳板机服务项目器展开命令行管理工作。添加路由表,公有子网关联互联网网关,其它子网默认通过NAT网关访问互联网服务项目。

EKS 软件产业创建

方便的,使用 AWS console 创建 EKS 软件产业,关联上述 VPC 及子网(参考:https://docs.aws.amazon.com/zh_cn/eks/latest/userguide/create-cluster.html),并在跳板机中配置与软件产业通信。责任编辑使用 EKS 1.24 版本。

统计资料库及存储服务项目

同样使用 AWS console 在 VPC 私有子网中创建无服务项目器Aurora PostgreSQL 统计资料库软件产业(参考:https://docs.aws.amazon.com/zh_cn/AmazonRDS/latest/AuroraUserGuide/aurora-serverless-v2.create-cluster.html)。责任编辑使用 aurora-postgresql 14.4 版本。

构建 DolphinScheduler 自定义镜像

为了后续基于官方开放源码镜像做定制化,使用 AWS ECR 展开镜像管理工作,依次创建 DolphinScheduler 镜像 ECR 仓库,将官方镜像 push 上去(参考:https://docs.aws.amazon.com/zh_cn/AmazonECR/latest/userguide/docker-push-ecr-image.html)。责任编辑使用 DolphinScheduler 3.1.2版本。

2.3 安装AWS load balancer controller

在 EKS 软件产业关联 OIDB 身份提供更多商。Amazon EKS 全力支持使用 OpenID Connect (OIDC) 身份提供更多商作为对您的软件产业的用户展开身份验证的方法。EKS 软件产业具备与其关联的 (OIDC)颁发者 URL。要将 AWS Identity and Access Management(IAM)角色用于服务项目账户,软件产业必须存在 IAM OIDC 提供更多商。使用  或 AWS Management Console 为软件产业创建 OIDC 提供更多商。(参考:https://docs.aws.amazon.com/zh_cn/eks/latest/userguide/enable-iam-roles-for-service-accounts.html)

按官方文档关键步骤,创建 IAM 角色,在 AWS Load Balancer Controller 的 kube-system 命名空间中创建名为 aws-load-balancer-controller 的 Kubernetes 服务项目账户,并使用 IAM 角色的名称注释 Kubernetes 服务项目账户。使用helm 安装AWS Load Balancer Controller。(参考:https://docs.aws.amazon.com/zh_cn/eks/latest/userguide/aws-load-balancer-controller.html)

2.4 使用helm布署Dolphinscheduler

1. 下载源码包 apache-dolphinscheduler–src.tar.gz 3.1.2 版本(https://dolphinscheduler.apache.org/zh-cn/download/3.1.2)。解压到跳板机上。

2. 修改配置文件 values.yaml 

3. 设置 alert、api、worker、master 服务项目资源需求:

4. 创建命名空间 dolphinscheduler

5. 创建 fargate 配置文件,依次定义关联命名空间 dolphinscheduler 与 kube-system 的 Fargate 配置文件,以选定在启动时哪些 pods 使用 Fargate,然后在软件产业中的 Fargate 上安排 pods。(参考:https://docs.aws.amazon.com/zh_cn/eks/latest/userguide/fargate-profile.html)

6. 将dolphinscheduler发布到dolphinscheduler的命名空间中

7. 创建网络负载均衡器,提供更多内部访问 uri

访问 dolphinscheduler 地址:http://k8s-nlbsampl-nlbsampl-xxxxxxxxxx-xxxxxxxxxxxxxxxx.elb.region-code.amazonaws.com:12345/dolphinscheduler/ui

在 AWS 上部署无服务器 Apache DolphinScheduler 任务调度系统

在 AWS 上部署无服务器 Apache DolphinScheduler 任务调度系统

2.5 连接Amazon Athena 统计数据源测试

1. 安装 Athena JDBC 驱动到 api server 与 worker server,创建 DockerFile 重新 build 镜像并推送到 ECR 仓库中。

2. 更新 dolphinscheduler

3. 创建 Athena 连接并测试

在 AWS 上部署无服务器 Apache DolphinScheduler 任务调度系统

4. 继续执行工作流查看笔记

在 AWS 上部署无服务器 Apache DolphinScheduler 任务调度系统

3. FAQ

3.1 如何安装倚赖包及插件?

通过重新编辑镜像展开倚赖包安装,通常仅需更新 worker server 镜像即可。示例参考责任编辑 2.5 章节。

3.2 如何进行结点扩缩容?

在跳板机继续执行 kubectl 命令展开扩缩容

3.3 如何持久化服务项目存储?

1. 安装EFS CSI 驱动程序(参考:https://docs.aws.amazon.com/zh_cn/eks/latest/userguide/efs-csi.html)

2. 创建 efs 文件控制系统及接入点(参考:https://docs.aws.amazon.com/zh_cn/efs/latest/ug/creating-using.html)

3. 创建 PersistentVolume

4. 修改 values.yaml 及 template/pvc-xx.yaml 文件,开启服务项目持久化存储并关联 PersistentVolume

5. 使用 helm 布署或更新。

3.4 如何寻求全力支持帮助?

1. 有关 AWS 网络平台服务项目通过 AWS Support 寻求专家指导 https://aws.amazon.com/cn/premiumsupport/

2. 有关 DolphinScheduler 通过 GitHub issue 展开交流 https://github.com/apache/dolphinscheduler

4. 参考链接

Dolphinschduler构架结构设计:https://DolphinScheduler.apache.org/zh-cn/docs/3.1.2/architecture/design

EKS 子网tag 计划:https://aws.amazon.com/cn/premiumsupport/knowledge-center/eks-load-balancer-controller-subnets/

Running stateful workloads with Amazon EKS on AWS Fargate using Amazon EFS:https://aws.amazon.com/blogs/containers/running-stateful-workloads-with-amazon-eks-on-aws-fargate-using-amazon-efs/

AWS 上的无服务项目器:https://aws.amazon.com/cn/serverless/

参与 DolphinScheduler 社区有非常多的参与贡献的形式,包括:

贡献第一个PR(文档、代码) 我们也希望是简单的,第一个PR用于熟悉递交的流程和社区协作以及感受社区的友好度。

社区汇总了以下适合新手的问题列表:https://github.com/apache/dolphinscheduler/issues/5689

非新手问题列表:https://github.com/apache/dolphinscheduler/issues?q=is%3Aopen+is%3Aissue+label%3A%22volunteer+wanted%22

如何参与贡献链接:https://dolphinscheduler.apache.org/zh-cn/community/development/contribute.html

来吧,DolphinScheduler开放源码社区需要您的参与,为中国开放源码崛起添砖加瓦吧,哪怕只是小小的一块瓦,汇聚起来的力量也是巨大的。

参与开放源码可以近距离与各路高手切磋,迅速提升自己的技能,如果您想参与贡献,我们有个贡献者种子孵化群,可以添加社区小助手微信(Leonard-ds) ,手把手教会您( 贡献者不分水平高低,有问必答,关键是有一颗愿意贡献的心 )。

添加社区小助手微信(Leonard-ds)

添加小助手微信时请说明想参与贡献。

来吧,开放源码社区非常期待您的参与。

相关文章

发表评论
暂无评论
官方客服团队

为您解决烦忧 - 24小时在线 专业服务