**Apache DolphinScheduler** 是一个分布式、可扩展的开源工作流编排平台,拥有强大的DAG可视化界面。DolphinScheduler 3.2.2 版本于2024年7月23号正式发布,您可以通过查阅官方文档来深入了解 DolphinScheduler 的架构和技术细节。本文重点介绍如何在Amazon Web Services 使用Terraform 脚本一键快速部署DolphinScheduler的**生产可用环境**。您可以联系亚马逊云科技或DolphinScheduler社区,加入 ***海豚调度&AWS用户交流群*** 联系管理员获取免费的AWS Workshop账号,体验完整的部署流程,并快速获取一个Dophinscheduler集群进行测试体验。
#### 部署脚本的核心架构细节:
整体架构:部署基于 EKS 容器化,部署完成后会提供一个公开可访问的 ELB 代理域名进行用户访问。
![1280X1280.PNG](https://dev-media.amazoncloud.cn/af66983b21434f8d8410dac8620936e6_1280X1280.PNG "1280X1280.PNG")
部署用于DolphinScheduler 的核心服务组件(全部由Terraform脚本进行部署):
- Serverless数据库:采用 [Amazon Aurora Serverless v2](https://aws.amazon.com/cn/rds/aurora/serverless/),支持弹性伸缩范围配置,默认范围为 2-16 ACUs,为系统提供弹性数据库能力。
- 持久化存储:使用[Amazon EFS](https://aws.amazon.com/cn/efs/) 提供[无服务器](https://aws.amazon.com/cn/serverless/?trk=cndc-detail)、弹性的持久化存储。
- 任务日志:默认启用远程任务日志存储,日志保存在 [Amazon S3](https://aws.amazon.com/cn/s3/) 中,支持任务级别日志的审阅。
- 依赖和文件管理:依赖项和文件管理存储在 S3 中。
- 命名空间管理:DolphinScheduler 的命名空间和节点扩展由 [Karpenter ](https://karpenter.sh/)自动管理。
以下详细说明如何快速进行DolphinScheduler部署
基础环境准备
- 获取Amazon Workshop 账户,进入workshop链接后点击OTP 输入个人邮箱进行登陆
![1280X1280 (1).PNG](https://dev-media.amazoncloud.cn/ede2b1655177490a92bbda2ade41e82a_1280X1280%20%281%29.PNG "1280X1280 (1).PNG")
![1280X1280 (2).PNG](https://dev-media.amazoncloud.cn/472ef14d71d84c40b56efb9e56ac0571_1280X1280%20%282%29.PNG "1280X1280 (2).PNG")
![1280X1280 (3).PNG](https://dev-media.amazoncloud.cn/4ab550dd77c84cb9bfb9c0cd9ebdb0e3_1280X1280%20%283%29.PNG "1280X1280 (3).PNG")
##### 创建EC2虚拟机进行部署准备
![2828247d-b7df-44ce-8f0b-e3c4698feb72.png](https://dev-media.amazoncloud.cn/d8da5d9616744272820bcba66435e2be_2828247d-b7df-44ce-8f0b-e3c4698feb72.png "2828247d-b7df-44ce-8f0b-e3c4698feb72.png")
![7a8f3aad-3964-447e-af93-0aa8dae37916.png](https://dev-media.amazoncloud.cn/9e59e608839d470fbccbdefa7ec32cdf_7a8f3aad-3964-447e-af93-0aa8dae37916.png "7a8f3aad-3964-447e-af93-0aa8dae37916.png")
![499b3e5e-2fcc-45e7-a016-bb2e20029521.png](https://dev-media.amazoncloud.cn/1e67eefe4acf493cb48b1d32adf84c9d_499b3e5e-2fcc-45e7-a016-bb2e20029521.png "499b3e5e-2fcc-45e7-a016-bb2e20029521.png")
![48820435-b997-4a1a-91d3-cd9129b444cd.png](https://dev-media.amazoncloud.cn/9feedf86f5a34d36a040ac9f4a2ab345_48820435-b997-4a1a-91d3-cd9129b444cd.png "48820435-b997-4a1a-91d3-cd9129b444cd.png")
![836cdbed-9fb6-467a-9595-65fede06f788.png](https://dev-media.amazoncloud.cn/aa04874618fb496fa0937135994be610_836cdbed-9fb6-467a-9595-65fede06f788.png "836cdbed-9fb6-467a-9595-65fede06f788.png")
- 为EC2 关联IAM 权限,为后续创建资源
![67b6fa25-e9e3-4cbb-a7ca-1af066a145f7.png](https://dev-media.amazoncloud.cn/dfb4dbe6fc9e4f68984ea8eadaf61169_67b6fa25-e9e3-4cbb-a7ca-1af066a145f7.png "67b6fa25-e9e3-4cbb-a7ca-1af066a145f7.png")
![930f565a-4813-499a-aece-a4f9fb859161.png](https://dev-media.amazoncloud.cn/64babd9c3d914e25b2e3944ac7c786db_930f565a-4813-499a-aece-a4f9fb859161.png "930f565a-4813-499a-aece-a4f9fb859161.png")
![18071e69-943f-45ba-afa9-0beb507c24f1.png](https://dev-media.amazoncloud.cn/0b4e45238feb42418d9b518b9d6491df_18071e69-943f-45ba-afa9-0beb507c24f1.png "18071e69-943f-45ba-afa9-0beb507c24f1.png")
![73f157e5-a333-4aad-b080-7e6b7db6ef9d.png](https://dev-media.amazoncloud.cn/6b9fc4b216bb48c0b070512aef64acbd_73f157e5-a333-4aad-b080-7e6b7db6ef9d.png "73f157e5-a333-4aad-b080-7e6b7db6ef9d.png")
![f76fc1a5-ccf9-4dc7-84bd-d0831d797e80.png](https://dev-media.amazoncloud.cn/3215391f681949b3833575485bfbf511_f76fc1a5-ccf9-4dc7-84bd-d0831d797e80.png "f76fc1a5-ccf9-4dc7-84bd-d0831d797e80.png")
![b1f02d4b-489b-49fe-8ed9-c9a3a6399d65.png](https://dev-media.amazoncloud.cn/5dd3606d4cca4bc18c30957c1ee98a80_b1f02d4b-489b-49fe-8ed9-c9a3a6399d65.png "b1f02d4b-489b-49fe-8ed9-c9a3a6399d65.png")
![e856b837-9390-4fd2-b3f1-0a9fc7adfe31.png](https://dev-media.amazoncloud.cn/c48d9c08224e4be7bb3ae1576c902964_e856b837-9390-4fd2-b3f1-0a9fc7adfe31.png "e856b837-9390-4fd2-b3f1-0a9fc7adfe31.png")
- 更新EC2 IAM role
![46445236-ed01-4135-859a-0b0426d2a72d.png](https://dev-media.amazoncloud.cn/cabde76bb5924366ad4a09eb4e65e91f_46445236-ed01-4135-859a-0b0426d2a72d.png "46445236-ed01-4135-859a-0b0426d2a72d.png")
![5c85a67a-6d38-4aae-ac08-bb81a618e2dd.png](https://dev-media.amazoncloud.cn/95070a1092604590bb96e60477bcefb3_5c85a67a-6d38-4aae-ac08-bb81a618e2dd.png "5c85a67a-6d38-4aae-ac08-bb81a618e2dd.png")
##### 进行部署前的环境准备
![ec21cc34-6ea8-4b9d-badf-1c42cb7f5e18.png](https://dev-media.amazoncloud.cn/d4ac9ce46204462d8b2c611346e31236_ec21cc34-6ea8-4b9d-badf-1c42cb7f5e18.png "ec21cc34-6ea8-4b9d-badf-1c42cb7f5e18.png")
- 安装terraform
参考: https://developer.hashicorp.com/terraform/install#
```
sudo yum install -y yum-utils shadow-utils
sudo yum-config-manager --add-repo https://rpm.releases.hashicorp.com/AmazonLinux/hashicorp.repo
sudo yum -y install terraform
```
- 安装helm
参考:https://docs.aws.amazon.com/zh_cn/eks/latest/userguide/helm.html
```
curl https://raw.githubusercontent.com/helm/helm/master/scripts/get-helm-3 > get_helm.sh
chmod 700 get_helm.sh
./get_helm.sh
helm version | cut -d + -f 1
```
- 安装kubectl EKS(版本1.30)
参考:https://docs.aws.amazon.com/zh_cn/eks/latest/userguide/install-kubectl.html
```
curl -O https://s3.us-west-2.amazonaws.com/amazon-eks/1.30.0/2024-05-12/bin/linux/amd64/kubectl
chmod +x ./kubectl
mkdir -p \$HOME/bin && cp ./kubectl \$HOME/bin/kubectl && export PATH=\$HOME/bin:\$PATH
kubectl version --client
```
#### 安装部署
- 下载部署源码并执行部署脚本:
```
cd /opt/
# clone source code
git clone https://github.com/SEZ9/terraform-dolphinscheduler.git
# update helm dependency
cd /opt/terraform-dolphinscheduler/helm-values/dolphinscheduler/
helm repo add bitnami https://charts.bitnami.com/bitnami
helm dependency update .
# Execute deployment
cd /opt/terraform-dolphinscheduler/
sh install.sh
```
![a18f7f92-a417-409b-801b-f0f1c4ad7531.png](https://dev-media.amazoncloud.cn/830f73109622407e9236a0b6397583da_a18f7f92-a417-409b-801b-f0f1c4ad7531.png "a18f7f92-a417-409b-801b-f0f1c4ad7531.png")
等待执行完成 大约30-50分钟
#### 即刻体验
执行输出的kubectl 配置命令
![e3b8f77f-93d3-45aa-9352-234de0d35a42.png](https://dev-media.amazoncloud.cn/fb633cf206dc4145b84c2e30ba3b129c_e3b8f77f-93d3-45aa-9352-234de0d35a42.png "e3b8f77f-93d3-45aa-9352-234de0d35a42.png")
获取dolphinscheduler访问地址
```
kubectl get ingress -n dolphinscheduler
NAME CLASS HOSTS ADDRESS PORTS AGE
dolphinscheduler alb * xxx.elb.amazonaws.com 80 89s
访问地址为:xxx.elb.amazonaws.com:12345/dolphinscheduler
```
![954f9138-a1b3-44a4-9ab6-2ee9b1c2aeea.png](https://dev-media.amazoncloud.cn/cd1ce4522ccc43a886085f2d2c5aa805_954f9138-a1b3-44a4-9ab6-2ee9b1c2aeea.png "954f9138-a1b3-44a4-9ab6-2ee9b1c2aeea.png")