DolphinScheduler 登陆 AWS AMI 应用市场!

本文介绍 Apache DolphinScheduler 正式登陆 AWS EC2 AMI 应用市场,用户可通过 EC2 快速启动 DolphinScheduler 服务进行体验。文章详细解释了如何使用 DolphinScheduler AMI 启动单个实例及搭建集群的过程。

点亮 ⭐️ Star · 照亮开源之路

https://github.com/apache/dolphinscheduler

56432c7cd83f4277ba7cbfcf313c1778.png

1

简介

好消息,ApacheDolphinScheduler正式登陆AWS EC2 AMI应用市场了!

这意味着如果你想要在 AWS 中使用或者体验 DolphinScheduler,可以直接使用 EC2 的 AMI 启动 DolphinScheduler 服务。当启动完成后,你的 EC2 instance 会启动一个 DolphinScheduler 的 Standalone 服务,这是完整的 DolphinScheduler 组件,可以执行 DolphinScheduler 的各种任务。

需要注意的是,不要将Standalone用于生产环境,因为其全部服务都是在一个进程中,并且默认是将元数据存储在内存中,当服务终止数据也不复存在。但是它依旧非常有用,因为我们可以快速启动一个服务,进行体验的快速验证。如果你想要启动一个 DolphinScheduler 的集群,可以参考本文的 Launch Cluster 章节。想了解更多 AMI 相关信息,请查看 https://aws.amazon.com/marketplace/pp/prodview-cbwnzxolq46yo

2

为什么要登陆AWS?

Amazon Web Services (AWS) 是全球最全面、应用最广泛的云平台,从全球数据中心提供超过 200 项功能齐全的服务。数百万客户(包括增长最快速的初创公司、最大型企业和主要的政府机构)都在使用 AWS 来降低成本、提高敏捷性并加速创新。拥有非常多实用的 SaaS 服务,包括 EC2,EMR,Redshift,SageMaker,DMS等,除了提供的服务数量多外,AWS 还在全球有多机房,向全球开发者和用户提供了方便、高效,安全的服务。

3

EC2是什么?

Amazon Elastic Compute Cloud (Amazon EC2) 在 Amazon Web Services (AWS) 云中提供可扩展的计算容量。使用AmazonEC2可避免前期的硬件投入,因此能够快速开发和部署应用程序。你可以使用 Amazon EC2 启动所需数量的虚拟服务器,配置安全性和联网以及管理存储。AmazonEC2 可扩展或缩减以处理需求变化或使用高峰,从而减少预测流量的需求。用户可以在 EC2 上选择适合自己需求的服务,可以选择任务容量, CPU,内存的机型。在 launch EC2 instance 之前,用户可以选择不同的操作系统,例如 windows,linux, mac,这些操作系统在 EC2 中被称为 Amazon Machine Images (AMI)。

4

EC2 AMI是什么?

上面所说的,启动EC2instance时,可以指定一个镜像,这就是Amazon Machine Image(AMI)。AMI 是由 AWS 或者社区提供的支持和维护映像,后者提供启动实例所需的信息。在启动实例时,必须指定 (AMI)。在需要具有相同配置的多个实例时,我们可以从单个 AMI 启动多个实例。在需要不同的配置的实例时,可以使用其他 AMI 启动实例。

AMI 包括以下内容:

  • 一个或多个 Amazon Elastic Block Store (Amazon EBS) 快照;对于由实例存储支持的 AMI,包括一个用于实例(例如,操作系统、应用程序服务器和应用程序)根卷的模板。

  • 控制可以使用 AMI 启动实例的 AWS 账户的启动许可。

  • 数据块设备映射,指定在实例启动时要附加到实例的卷。

AWS 官方提供的 AMI 都是基础镜像,一般只含有操作系统,如 Windows,Linux,Mac。AMI 另一个强大的功能是,允许用户基于基础镜像自定义 AMI,意味着用户可以运行的 EC2 intance 中安装任意的软件,最后将 instance 的内容进行快照,就能定义一个 AMI 了。

5

使用

Launch Single Instance

通过 DolphinScheduler AMI launch EC2 instance 的方式非常简单, 只需要在 EC2 页面点击 launch instance,然后点击browsemoreAMIs,在输入框输入DolphinScheduler。然后选择 AMI 后填写 instance type,key pair,network 之后点击 launch instance 就能启动 instance。

ba749669bac0732de9e3a59fa7423288.png

Launch instance

7d4ec1edc7c07682bce27c093249b4ea.png

  Browse more AMI

d5629839b2c3aec9e30db2548006e3e8.png

Search for DolphinScheduler

e6718044565a2d6a5bb09b88a03c1d70.png

   Launch instance based on DolphinSchduler AMI

实例的启动需要一点时间, 我们可以这时去查看 network 配置,需要确保开启了 12345 和 22 端口,分别是 DolphinScheduler 服务的端口和 ssh 端口。

32e29f7cc2a00115e1581bf4d8062a65.png

等待大概 3-5 分钟,就可以通过 EC2 instance 的 public DNS 或者 public IPv4 加上 12345 端口访问 DolphinScheduler 服务了, 登录 DolphinScheduler 服务的用户名和密码分别为 user 以及当前 EC2 实例 ID。

注意:DolphinScheduler的密码是动态的,它会在EC2实例启动后自动更改,以确保你的服务安全。你可以在 EC2 控制台主页中找到它。有关 AWS 对 AMI 提供商的请求的更多详细信息,请参阅 AMI 容器产品。

6

Launch Cluster

https://github.com/WhaleOps/packer_tmpl/blob/main/aws/ami/dolphinscheduler/README.md#cluster-server

上面教程告诉我们如何启动单个实例,那如果用户想要启动一个 DolphinScheduler 集群应该怎么办呢?

01

为集群添加新的密钥对

下一步,我们将使用 ssh 连接到现有的 EC2 实例,目前我们的 cluster.sh 脚本仅支持一个密钥对。所以我们需要创建一个新的,在启动实例时使用。步骤是 EC2 -> 网络和安全 -> 密钥对 -> 创建密钥对。请小心保存,否则将无法登录你的实例。

02

为集群添加新的安全组

通过 EC2 -> Network & Security -> Security Groups -> Create Security Group 来创建新的安全组,你应该为这个安全组的入站规则添加以下几点:

  • 22:默认ssh点

  • 2181:Zookeeper 连接点

  • 5432:Postgresql 连接点

  • 1234: DolphinScheduler 的 MasterServer 点

  • 5678: DolphinScheduler 的 WorkerServer 点

  • 12345: DolphinScheduler 的 web UI 点

1aace670fce206739220e745537a9e0f.png

03

启动多个 EC2 实例

目前,这个 AMI 需要用户自己构建,然后从 EC2 -> Images -> AMI 侧边栏路径启动新的 EC2 实例,选择你构建的 AMI,单击 Launch instance from AMI bottom,在 EC2 -> Instances -> 登录一个实例页面,你应该选择你在集群部分的新密钥对中创建的现有密钥对,它可以在密钥对 - >选择密钥对中找到。你还需要选择你集群部分的新安全组中创建的现有安全组,它可以在网络设置中找到: - >选择现有安全组 - >选择安全组。最后,基于你的需要启动多个实例,在EC2 启动页面的 “Number of instances” 中输入你想要的数量。(这个例子中我们启动了8个实例)

04

获取 cluster.sh 和 cluster_env.sh 脚本

如果你已经克隆了这个项目,那么你可以在目录 packer_tmpl/aws/ami/dolphinscheduler/bin 看到两个名为 cluster.sh 和 cluster_env.sh 的脚本。如果不从 GitHub 克隆此存储库,则可以通过以下命令获取这两个脚本:

wget https://raw.githubusercontent.com/WhaleOps/packer_tmpl/main/aws/ami/dolphinscheduler/bin/cluster.sh
wget https://raw.githubusercontent.com/WhaleOps/packer_tmpl/main/aws/ami/dolphinscheduler/bin/cluster_env.sh

注意:如果你的网络无法连接到 GitHub,上述命令将失败并显示错误日志,例如 Connecting to raw.githubusercontent.com (raw.githubusercontent.com)|0.0.0.0|:443... failed: Connection refused.. 你得想办法让你的网络可接到主机 raw.githubusercontent.com 或从 GitHub 网站下载这两个脚本。

05

修改 cluster_env.sh 脚本

用户需要修改 cluster_env.sh 脚本,包括密钥对和 EC2 实例 IPv4 地址或 IPv4 DNS。例如我们启动 8 个 EC2 实例,我们要部署 2 个master-server,3 个 worker-server,1 个 API-server,1 个 Alert-server,1 个database 和 Zookeeper server,每个实例的IPv4地址如下:

  • 192.168.1.1:主服务器

  • 192.168.1.2:主服务器

  • 192.168.1.3:工作服务器

  • 192.168.1.4:工作服务器

  • 192.168.1.5:工作服务器

  • 192.168.1.6: API 服务器

  • 192.168.1.7:警报服务器

  • 192.168.1.8:元数据数据库(postgresql),Zookeeper

我们需要将部署计划传递给 cluster_env.sh,否则,它将永远不知道如何进行部署(这里我们只显示一些必要的无注释的更改内容)。

export ips="192.168.1.1,192.168.1.2,192.168.1.3,192.168.1.4,192.168.1.5,192.168.1.6,192.168.1.7,192.168.1.8"
export masters="192.168.1.1,192.168.1.2"
export workers="192.168.1.3:default,192.168.1.4:default,192.168.1.5:default"
export alertServer="192.168.1.6"
export apiServers="192.168.1.7"
export DATABASE_SERVER="192.168.1.8"
export REGISTRY_SERVER="192.168.1.8"

还应该添加你在集群的新密钥对中创建的密钥对位置,推荐使用绝对路径(这里我们只显示一些必要的更改内容,不做评论)。

# 如果使用此 AMI 启动实例,请不要更改此设置
导出 INSTANCE_USER=${INSTANCE_USER:-"ubuntu"}
# 必须更改为自己的密钥对路径
export INSTANCE_KEY_PAIR="/change/to/your/personal/to/key/pair"

06

执行 cluster.sh 脚本

修改cluster_env.sh 后可以通过命令执行脚本

./cluster.sh start

它会根据你的网络速度执行一些任务,完成后,你的 EC2 实例将合并到 DolphinScheduler 集群。

07

执行cluster.sh后接着怎么做?

之后,你可以通过实例的 [API-SERVER-Public-IPv4-address]:12345/dolphinscheduler/ui 或 [API-SERVER-Public-IPv4-DNS]:12345 使用 user/EC2_DYNAMIC_INSTANCE_ID 作为默认用户名/密码登录 DolphinScheduler 服务/海豚调度程序/用户界面。

DolphinScheduler 的使用方法详见DolphinScheduler 函数(https://dolphinscheduler.apache.org/en-us/docs/dev/user_doc/guide/homepage.html)。

注意:DolphinScheduler 的密码是动态的,它会在 EC2 实例启动后自动更改,以确保服务安全。你可以在 EC2 控制台主页中找到它。有关 AWS 对 AMI 提供商的请求的更多详细信息,请参阅 AMI 容器产品。

7

注意

需要注意的是不要将 Standalone 用于生产环境,因为全部服务都是在一个进程中,并且默认是将元数据存储在内存中,当服务终止数据也不复存在。但是 Standalone 依旧非常有用,因为我们可以快速启动一个服务,进行体验的快速验证。如果你想要启动一个 DolphinScheduler 的集群,可以参考本文的 Launch Cluster 章节。

8

贡献

我们通过 packer 构建 AMI 并将它完全开源,并非常欢迎对项目感兴趣的小伙伴查看、贡献代码,DolphinSchedulerAMI源码可以在ami-dolphinscheduler(https://github.com/WhaleOps/packer_tmpl/blob/main/aws/ami/dolphinscheduler/README.md)查看,构建关于如何贡献代码,可以通过查如何贡献(https://github.com/WhaleOps/packer_tmpl/blob/main/aws/ami/dolphinscheduler/README.md#contributing)了解。

9

总结

  • 简单介绍了下 AWS、EC2、EC2 AMI 分别是什么,以及如何通过 AMI 创建一个 EC2 的 instance;

  • 介绍了如果使用 DolphinScheduler AMI 镜像,如何启动单个实例,以及组建集群;

  • 再次强调 Standalone 仅仅用于测试和体验;

  • 如果对项目感兴趣应该如何贡献。

< 🐬🐬 >

活动推荐

aea0b9e98057ac9fbdf950443a895e76.png

海豚调度&Linkis强强结合

探索计算治理难题的终极密码

就在今晚!2022 年12月1日 晚 20:00-21:30,Apache DolphinScheduler&Apache Linkis(Incubating) 线上Meetup活动即将来袭!来自DolphinScheduler和Linkis社区的核心贡献者将带来两个项目整合的技术分享,聚焦解决计算治理难题的方法,干货满满,欢迎报名参加!

00be7309ee100b545d6a21de93d3fd61.png扫码报名

6ae50fe27f27fdd88dfbf2f059b74b59.jpeg

添加小助手入交流群

点击阅读原文报名!

我知道你在看b3fd5017988852936308c25dedd2d734.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

DolphinScheduler社区

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值