DolphinScheduler 登陆 AWS AMI 应用市场!

DevOps
大数据
GitHub
Amazon Deep Learning AMI
0
0
![image.png](https://dev-media.amazoncloud.cn/3c1d8ae2e01b4a2e9a38b1d047cc27df_image.png "image.png") ## 简介 好消息,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 ## 为什么要登陆AWS? Amazon Web Services (AWS) 是全球最全面、应用最广泛的云平台,从全球数据中心提供超过 200 项功能齐全的服务。数百万客户(包括增长最快速的初创公司、最大型企业和主要的政府机构)都在使用 AWS 来降低成本、提高敏捷性并加速创新。拥有非常多实用的 SaaS 服务,包括 EC2,EMR,Redshift,SageMaker,DMS等,除了提供的服务数量多外,AWS 还在全球有多机房,向全球开发者和用户提供了方便、高效,安全的服务。 ## 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)。 ## 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 了。 ## 使用 ### Launch Single Instance 通过 DolphinScheduler AMI launch EC2 instance 的方式非常简单, 只需要在 EC2 页面点击 launch instance,然后点击browsemoreAMIs,在输入框输入DolphinScheduler。然后选择 AMI 后填写 instance type,key pair,network 之后点击 launch instance 就能启动 instance。 ![image.png](https://dev-media.amazoncloud.cn/670f7e8b30b04b38ab8b96fe65100b66_image.png "image.png") Launch instance ![image.png](https://dev-media.amazoncloud.cn/045f20a4a3444b71b4835c9546859830_image.png "image.png") Browse more AMI ![image.png](https://dev-media.amazoncloud.cn/8d43b505531b488ea5a98e0ee1ab7d4f_image.png "image.png") Search for DolphinScheduler ![image.png](https://dev-media.amazoncloud.cn/2010c0e8536b4573aa42bfbc1969c665_image.png "image.png") Launch instance based on DolphinSchduler AMI 实例的启动需要一点时间, 我们可以这时去查看 network 配置,需要确保开启了 12345 和 22 端口,分别是 DolphinScheduler 服务的端口和 ssh 端口。 ![image.png](https://dev-media.amazoncloud.cn/6d8d68541fe44c77afded58b5390b625_image.png "image.png") 等待大概 3-5 分钟,就可以通过 EC2 instance 的 public DNS 或者 public IPv4 加上 12345 端口访问 DolphinScheduler 服务了, 登录 DolphinScheduler 服务的用户名和密码分别为 user 以及当前 EC2 实例 ID。 注意:DolphinScheduler的密码是动态的,它会在EC2实例启动后自动更改,以确保你的服务安全。你可以在 EC2 控制台主页中找到它。有关 AWS 对 AMI 提供商的请求的更多详细信息,请参阅 AMI 容器产品。 ## Launch Cluster 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 来创建新的安全组,你应该为这个安全组的入站规则添加以下几点: - 22:默认ssh点 - 2181:Zookeeper 连接点 - 5432:Postgresql 连接点 - 1234: DolphinScheduler 的 MasterServer 点 - 5678: DolphinScheduler 的 WorkerServer 点 - 12345: DolphinScheduler 的 web UI 点 ![image.png](https://dev-media.amazoncloud.cn/34515b4476234e2380b62a6f0de4185d_image.png "image.png") ### 启动多个 EC2 实例 目前,这个 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 克隆此存储库,则可以通过以下命令获取这两个脚本: ``` 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 网站下载这两个脚本。 ### 修改 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" ### 执行 cluster.sh 脚本 修改cluster_env.sh 后可以通过命令执行脚本 ``` ./cluster.sh start ``` 它会根据你的网络速度执行一些任务,完成后,你的 EC2 实例将合并到 DolphinScheduler 集群。 ### 执行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 容器产品。 ## 注意 需要注意的是不要将 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 仅仅用于测试和体验; - 如果对项目感兴趣应该如何贡献。
0
目录
关闭