大数跨境

DolphinScheduler 登陆 AWS AMI 应用市场!

DolphinScheduler 登陆 AWS AMI 应用市场! 海豚调度
2022-12-01
0
导读:如果你想要在AWS中使用或者体验 DolphinScheduler,可以直接使用EC2的AMI 启动DolphinScheduler 服务。

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

https://github.com/apache/dolphinscheduler

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。
Launch instance
  Browse more AMI
Search for DolphinScheduler
   Launch instance based on DolphinSchduler AMI

实例的启动需要一点时间, 我们可以这时去查看 network 配置,需要确保开启了 12345 和 22 端口,分别是 DolphinScheduler 服务的端口和 ssh 端口。
等待大概 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 点

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.shwget 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 仅仅用于测试和体验;
  • 如果对项目感兴趣应该如何贡献。

< 🐬🐬 >
活动推荐


海豚调度&Linkis强强结合

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


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

扫码报名


添加小助手入交流群



点击阅读原文报名!
我知道你在看

【声明】内容源于网络
0
0
海豚调度
Apache DolphinScheduler是一个分布式、去中心化、易扩展的可视化DAG工作流任务调度系统,其致力于解决数据处理流程中错综复杂的依赖关系,使调度系统在数据处理流程中开箱即用。
内容 667
粉丝 0
海豚调度 Apache DolphinScheduler是一个分布式、去中心化、易扩展的可视化DAG工作流任务调度系统,其致力于解决数据处理流程中错综复杂的依赖关系,使调度系统在数据处理流程中开箱即用。
总阅读167
粉丝0
内容667