基于阿里云网络负载均衡(NLB),DataWorks的SSH节点能够利用NLB提供的智能负载均衡,规避单点故障风险,并显著简化任务配置与运维管理。本文将分步骤详解如何在DataWorks中部署与使用该方案,实现SSH任务的稳定执行。
背景信息
在DataWorks中,SSH数据源通常配置到固定的ECS实例主机地址。若该主机出现异常(如宕机或资源耗尽),可能导致SSH节点执行失败。为解决这一问题,您可以将多个ECS实例绑定到NLB(网络型负载均衡)的服务器组。NLB通过内部算法策略将任务分发到可用的ECS实例,并持续检测实例的健康状态:若某个ECS实例发生故障,NLB会自动将任务请求转移至其他正常运行的实例,从而避免因单个ECS实例异常导致任务中断,确保任务持续稳定执行。
如上图所示:
未配置负载均衡:DataWorks的SSH节点任务只能在当前连接的ECS实例上执行。如果该ECS实例资源占满或出现故障,任务会延迟执行或中断。
已配置负载均衡:DataWorks的SSH节点任务会根据NLB的算法策略自动分配到服务器组中的某个ECS实例上执行。同时,NLB会对服务器组进行健康检查,一旦检测到故障ECS实例,会将任务重新分配给其他正常运行的ECS实例,从而确保任务的连续性和高可用性。
这一方案解决了资源占满和单点故障问题,提高了任务执行的效率和可靠性。
前提条件
RAM账号添加至对应空间(可选)。
进行任务开发的RAM账号已被添加至对应工作空间中,并具有开发或空间管理员(权限较大,谨慎添加)角色权限。添加成员并授权,详情请参见为工作空间添加空间成员。
对应空间已绑定Serverless资源组。详情请参见:使用Serverless资源组。
使用限制
SSH节点内执行的代码长度上限为
128KB
。DataWorks的资源组、ECS实例和NLB实例必须位于同一地域的同一个VPC中。
环境准备
为了实现SSH节点的负载均衡和高可用性,您需要创建至少两个ECS实例,并在这些ECS实例上添加不同的示例数据以进行验证。
创建ECS实例
请按照以下步骤创建并购买所需的ECS实例。
准备示例数据
找到您所创建的两个ECS实例,并分别在ECS实例1和ECS实例2上填写不同的示例数据信息,以便后续进行结果比对。
进入ECS实例。
进入ECS实例管理控制台,切换地域到您创建ECS实例的所在地域,找到您创建的两个ECS实例。
单击ECS实例对应操作栏中的远程连接,在远程连接弹窗中选择立即登录。
进入登录实例页面,配置认证信息完成登录。
创建示例数据。
在ECS实例1中执行以下命令:
echo "我是第一台服务器" > /tmp/a.txt
在ECS实例2中执行以下命令:
echo "我是第二台服务器" > /tmp/a.txt
配置NLB
通过以下步骤创建NLB实例、配置后端服务器组(添加2个ECS)并配置监听器,实现流量负载均衡。
创建NLB实例
您可通过以下步骤完成NLB实例的创建,更多详情请参见创建NLB实例的前提条件和创建和管理NLB实例。
进入NLB实例购买页。
登录网络型负载均衡NLB控制台,在顶部菜单栏选择实例地域,然后在实例页面单击创建网络型负载均衡,进入云产品购买页。
重要请选择与DataWorks工作空间一致的实例地域,以避免因配置错误而需要重新购买。
配置购买NLB实例。
在云产品购买页,配置以下参数信息以创建NLB实例:
参数
说明
网络
实例网络类型
选择私网类型。
VPC
选择您创建Serverless资源组所使用的专有网络。
可用区
选择您创建Serverless资源组的交换机所在的可用区。
协议版本
选择IPv4协议。
管理设置
实例名称
自定义实例名称。
资源组
选择系统自带的默认资源组。
确认购买NLB实例。
在配置完所有参数后,单击立即创建。在确认订单页面,单击立即开通。
创建后端服务器组
等待NLB实例状态变为运行中后,您可以通过以下步骤为NLB实例创建并绑定后端服务器组。更多详情请参见创建和管理服务器组。
进入实例详情页。
登录网络型负载均衡NLB控制台,在顶部菜单栏选择实例地域,在实例列表中找到您所创建的实例。
单击实例名称,进入实例详情页。
创建后端服务器组。
单击实例详情页上方的创建后端服务器组,进入创建服务器组页面。
自定义服务器组名称为
ECS_NLB
后,然后单击创建按钮。
添加后端服务器。
在服务器组创建成功弹窗,单击添加后端服务器。
在后端服务器页签单击添加后端服务器,进入添加后端服务器页面。
勾选您所创建的2个ECS实例。
单击下一步,进入配置端口和权重步骤。
配置端口与权重。
配置端口为
22
。单击确定按钮完成创建。
等待添加成功即可。
配置监听器
等待将ECS实例绑定为NLB实例的后端服务器组后,您可以通过以下步骤为NLB实例配置监听器。更多详情请参见添加TCP监听。
进入实例详情页。
登录网络型负载均衡NLB控制台,在顶部菜单栏选择实例地域,在实例列表中找到您所创建的实例。
单击实例名称,进入实例详情页。
配置监听器。
单击实例详情页上方的创建监听,进入负载均衡业务配置向导配置页。
选择监听协议为TCP,设置监听端口为
22
。单击下一步。
选择服务器组。
在选择服务器组步骤中,基于服务器类型,选择您在创建后端服务器组中创建的服务器组
ECS_NLB
。单击下一步。
提交配置审核。
在配置审核步骤中,确认您所绑定的ECS实例和监听端口无误,单击提交按钮完成配置。
配置SSH数据源
完成以上配置后,您可以通过以下步骤将NLB实例绑定为SSH数据源。更多详情请参见创建SSH数据源。
进入管理中心页面。
登录DataWorks控制台,切换至目标地域后,单击左侧导航栏的 ,在下拉框中选择对应工作空间后单击进入管理中心。
单击左侧导航栏的
,进入数据源页面。在数据源页面,单击新增数据源,进入新增数据源页面。
在新增数据源页面选择创建的数据源类型为SSH,进入创建SSH数据源页面。您可以在该页面按照以下参数进行配置。
参数
说明
数据源名称
您可以自定义数据源名称,例如
SSH_DB
。配置模式
默认使用连接串模式。
认证模式
推荐选择DataWorks SSH公钥认证模式。
主机地址
登录网络型负载均衡NLB控制台,在顶部菜单栏选择实例地域,在实例列表中找到您所创建的实例,单击实例名称,进入实例详情页。复制DNS名称作为您的主机地址。
主机端口
服务器的主机端口为
22
。用户名
服务器的登录用户名为
root
。公钥
单击生成密钥对。平台将根据您配置的用户名随机生成公钥。
重要进行网络连通性测试前,请先将密钥对的公钥配置到您所创建的
2
个ECS实例主机的.ssh/authorized_keys
文件,以免网络无法连通。测试资源组连通性。
在连接配置区域,找到工作空间绑定的Serverless资源组,单击连通状态列的测试连通性。
执行SSH任务
您可以通过以下步骤完成SSH节点的创建与开发,并通过查看任务结果来验证其功能。
创建SSH节点
您可通过以下步骤完成SSH节点的创建。更多详情请参见创建SSH节点。
进入DataWorks工作空间列表页,在顶部切换至目标地域,找到已创建的工作空间,单击操作列的 ,进入Data Studio。
在左侧导航栏单击
,单击项目目录右侧的
,选择 节点,进入新建节点弹窗。
在新建节点弹窗中自定义SSH节点名称。
单击确认按钮,进入节点编辑页面。
开发SSH节点
在节点编辑页面,您可以添加以下示例代码信息并配置代码执行环境。
编写SSH节点代码。
在节点编辑页代码区域输入以下示例命令:
cat /tmp/a.txt
配置执行环境。
数据源选择:在节点编辑页面上方的选择数据源位置,选择您所配置的SSH数据源
SSH_DB
。资源组配置:单击节点编辑页面右侧的调试配置,将资源组配置为您所创建的Serverless资源组。
单击节点上方工具栏的保存按钮,保存SSH节点任务。
查看任务结果
执行SSH节点代码时,您可以通过对比多次执行的打印结果,来验证配置生效。
执行SSH节点任务。
单击节点上方工具栏的运行按钮。等待结果输出后再次执行节点任务。
查看任务结果。
说明任务提交执行后,NLB(网络负载均衡器)会通过逻辑算法将任务随机分配给其中一个ECS实例。因此,您在多次执行该任务后,可能会看到不同的结果,因为每次任务都可能被分配到不同的ECS实例上。
执行结果1:
执行结果2:
附录:实现原理说明
以下是如何在DataWorks中利用阿里云网络负载均衡器(NLB)实现高并发SSH任务的稳定执行的详细原理说明:
通过将多个ECS实例绑定至NLB服务器组,并将NLB的DNS名称配置为DataWorks的SSH数据源,配置SSH节点任务后,任务请求经数据源被NLB监听器监听到,并依据负载均衡策略分发至健康的ECS实例执行。执行结果通过NLB透传返回,并在SSH节点日志中实时展示。