点亮 ⭐️ Star · 照亮开源之路
https://github.com/apache/dolphinscheduler
好消息,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
Amazon Web Services (AWS) 是全球最全面、应用最广泛的云平台,从全球数据中心提供超过 200 项功能齐全的服务。数百万客户(包括增长最快速的初创公司、最大型企业和主要的政府机构)都在使用 AWS 来降低成本、提高敏捷性并加速创新。拥有非常多实用的 SaaS 服务,包括 EC2,EMR,Redshift,SageMaker,DMS等,除了提供的服务数量多外,AWS 还在全球有多机房,向全球开发者和用户提供了方便、高效,安全的服务。
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)。
上面所说的,启动EC2instance时,可以指定一个镜像,这就是Amazon Machine Image(AMI)。AMI 是由 AWS 或者社区提供的支持和维护映像,后者提供启动实例所需的信息。在启动实例时,必须指定 (AMI)。在需要具有相同配置的多个实例时,我们可以从单个 AMI 启动多个实例。在需要不同的配置的实例时,可以使用其他 AMI 启动实例。
-
一个或多个 Amazon Elastic Block Store (Amazon EBS) 快照;对于由实例存储支持的 AMI,包括一个用于实例(例如,操作系统、应用程序服务器和应用程序)根卷的模板。
-
控制可以使用 AMI 启动实例的 AWS 账户的启动许可。
-
数据块设备映射,指定在实例启动时要附加到实例的卷。
AWS 官方提供的 AMI 都是基础镜像,一般只含有操作系统,如 Windows,Linux,Mac。AMI 另一个强大的功能是,允许用户基于基础镜像自定义 AMI,意味着用户可以运行的 EC2 intance 中安装任意的软件,最后将 instance 的内容进行快照,就能定义一个 AMI 了。
通过 DolphinScheduler AMI launch EC2 instance 的方式非常简单, 只需要在 EC2 页面点击 launch instance,然后点击browsemoreAMIs,在输入框输入DolphinScheduler。然后选择 AMI 后填写 instance type,key pair,network 之后点击 launch instance 就能启动 instance。
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 容器产品。
https://github.com/WhaleOps/packer_tmpl/blob/main/aws/ami/dolphinscheduler/README.md#cluster-server
上面教程告诉我们如何启动单个实例,那如果用户想要启动一个 DolphinScheduler 集群应该怎么办呢?
下一步,我们将使用 ssh 连接到现有的 EC2 实例,目前我们的 cluster.sh 脚本仅支持一个密钥对。所以我们需要创建一个新的,在启动实例时使用。步骤是 EC2 -> 网络和安全 -> 密钥对 -> 创建密钥对。请小心保存,否则将无法登录你的实例。
通过 EC2 -> Network & Security -> Security Groups -> Create Security Group 来创建新的安全组,你应该为这个安全组的入站规则添加以下几点:
-
-
-
-
1234: DolphinScheduler 的 MasterServer 点
-
5678: DolphinScheduler 的 WorkerServer 点
-
12345: DolphinScheduler 的 web UI 点
目前,这个 AMI 需要用户自己构建,然后从 EC2 -> Images -> AMI 侧边栏路径启动新的 EC2 实例,选择你构建的 AMI,单击 Launch instance from AMI bottom,在 EC2 -> Instances -> 登录一个实例页面,你应该选择你在集群部分的新密钥对中创建的现有密钥对,它可以在密钥对 - >选择密钥对中找到。你还需要选择你集群部分的新安全组中创建的现有安全组,它可以在网络设置中找到: - >选择现有安全组 - >选择安全组。最后,基于你的需要启动多个实例,在EC2 启动页面的 “Number of instances” 中输入你想要的数量。(这个例子中我们启动了8个实例)
获取 cluster.sh 和 cluster_env.sh 脚本
如果你已经克隆了这个项目,那么你可以在目录 packer_tmpl/aws/ami/dolphinscheduler/bin 看到两个名为 cluster.sh 和 cluster_env.sh 的脚本。如果不从 GitHub 克隆此存储库,则可以通过以下命令获取这两个脚本:
注意:如果你的网络无法连接到 GitHub,上述命令将失败并显示错误日志,例如 Connecting to raw.githubusercontent.com (raw.githubusercontent.com)|0.0.0.0|:443... failed: Connection refused.. 你得想办法让你的网络可接到主机 raw.githubusercontent.com 或从 GitHub 网站下载这两个脚本。
用户需要修改 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.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"
修改cluster_env.sh 后可以通过命令执行脚本
它会根据你的网络速度执行一些任务,完成后,你的 EC2 实例将合并到 DolphinScheduler 集群。
之后,你可以通过实例的 [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 容器产品。
需要注意的是不要将 Standalone 用于生产环境,因为全部服务都是在一个进程中,并且默认是将元数据存储在内存中,当服务终止数据也不复存在。但是 Standalone 依旧非常有用,因为我们可以快速启动一个服务,进行体验的快速验证。如果你想要启动一个 DolphinScheduler 的集群,可以参考本文的 Launch Cluster 章节。
我们通过 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)了解。
-
简单介绍了下 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社区的核心贡献者将带来两个项目整合的技术分享,聚焦解决计算治理难题的方法,干货满满,欢迎报名参加!
扫码报名

添加小助手入交流群
我知道你在看哟