节点智能调度

此功能为商业版功能。在v1.1.0版本加入。

从 GoEdge v1.1.0 开始,可以为节点设置智能调度动作,以便于节点在满足条件的情况下可以切换到备用节点、备用IP等。

原理

Schedule1.png

可以看到,管理员为节点设置调度条件后,当满足调度条件后,会自动执行调度动作,调度动作中会自动调整节点的DNS解析记录,以便于让用户访问到不同的节点或者IP,同时也会发送消息通知。

节点智能调度设置

可以在单个节点设置中”智能调度”中设置当前节点智能调度信息:

Schedule2.png

基础设置

可以在节点设置 – “智能调度”页面中设置一些当前节点的基础信息:

  • 当前节点租期结束日期 - 当然节点的租期结束日期,比如某个服务器的租期到2023-12-31日结束,那么此节点的IP会在此日期后从DNS记录中删除
  • 当前节点为集群备用节点 - 设置当前节点是否为所在集群的备用节点,设置为集群备用节点后,同集群的其他节点可以通过调度动作切换到此节点
  • 当前节点为分组备用节点 - 设置当前节点是否为所在节点分组的备用节点,设置为节点分组备用节点后,同分组的其他节点可以通过调度动作切换到此节点
  • 当前节点备用IP - 当前节点的备用IP,可以通过调度动作切换到这些备用IP

调度动作

可以在节点设置 – “智能调度”页面中添加一些调度动作,当执行条件满足时就会触发调度动作,从而可以实现切换节点和IP等。

添加调度动作

在节点设置 – “智能调度”页面 – 调度动作标题中点击”添加”:

Schedule4.png

其中:

  • 执行条件 - 触发调度动作需要的条件,通常由”参数”、”操作符”、”对比值(带宽、流量等)”组成,设置后别忘记点击”确定”按钮保存设置
  • 执行动作 - 满足执行条件后执行的动作
  • 持续时间 - 触发后保持状态的时间,超出此时间后,系统自动还原节点执行前的状态;但是如果节点没有可以访问的IP(比如全都离线),那么将不会恢复节点状态,并在下次循环后再次检查

添加后的显示类似于:

Schedule5.png

如果单个节点添加了多个调度动作,那么系统会按照添加顺序依次检查是否匹配,并只执行第一个匹配的调度动作。

复制到分组

可以在节点设置 – “智能调度”页面中 – 调度动作标题 – 更多操作 点击 “复制到分组xxx”。

此功能可以使用的前提是当前节点在节点分组中。

复制到集群

可以在节点设置 – “智能调度”页面中 – 调度动作标题 – 更多操作 点击 “复制到集群xxx”。

集群统一管理

可以在集群设置 – “智能调度”中管理当前集群下的所有节点的智能调度:

Schedule3.png

调度参数

节点出口带宽

当前节点当前时间点的出口平均带宽(从节点服务器发送到客户端)。

带宽单位为比特(bit),是字节的八分之一。

节点入口带宽

当前节点当前时间点的入口平均带宽(从客户端发送到节点服务器)。

带宽单位为比特(bit),是字节的八分之一。

节点当月流量

当前节点在当月的出口流量,即从节点服务器发送到客户端的当月流量总和。

流量单位为字节,为比特的八倍。

节点当日流量

当前节点在当天的出口流量,即从节点服务器发送到客户端的当天流量总和。

流量单位为字节,为比特的八倍。

节点CPU利用率

节点当前CPU利用率,取值范围为0-100。

节点内存利用率

节点当前内存利用率,取值范围为0-100。

节点负载

节点当前负载,取值范围为0-∞,通常超过10表示系统负载较重。

节点健康检查失败

当前节点任一IP健康检查失败,此功能需要在集群设置中开启 健康检查 功能。

节点UDP数据报发送速率

在Goedge v1.2.0中加入,当前节点当前时间点的UDP数据报发送速率,比如超过100000/秒可以认为正在被攻击。

节点UDP数据报接收速率

在Goedge v1.2.0中加入,当前节点当前时间点的UDP数据报接收速率,比如超过比如超过100000/秒可以认为正在被攻击。

调度动作

注意:调度动作对备用节点不会起作用。

上线当前节点

将当前节点状态设置为在线。

此动作相当于恢复当前节点的状态,上线后的节点的所有IP都会自动创建为DNS解析记录,所以用户可以正常访问。

下线当前节点

将当前节点状态设置为离线。

此时当前节点的所有IP都会从DNS解析记录里删除,这样用户就无法通过域名解析访问到此节点。

切换到集群备用节点

下线当前节点并启用节点所在集群备用节点。

前提条件是集群下已经设置了一些集群备用节点(参考本文中的 基础设置),如果当前集群没有设置集群备用节点,则不会发生任何变化;如果当前集群中已经有一些备用节点,那么此动作会在DNS解析记录中删除当前节点的IP解析记录,并添加集群备用节点的IP解析记录,这样用户通过域名解析访问到的节点就是集群备用节点。

如果多个节点同时设置并触发了当前动作,那么只会添加一组集群备用节点的IP解析记录,不会重复添加。

切换到分组备用节点

下线当前节点并启用节点所在分组备用节点。

前提条件是当前节点已经在某个节点分组下,而且此节点分组下也已经设置了一些分组备用节点(参考本文中的 基础设置),如果当前节点没有在节点分组,或者当前所在的节点分组下没有设置分组备用节点,则不会发生任何变化;如果当前节点所在节点分组中已经有一些备用节点,那么此动作会在DNS解析记录中删除当前节点的IP解析记录,并添加节点分组下的备用节点的IP解析记录,这样用户通过域名解析访问到的节点就是节点分组下的备用节点。

如果节点所在节点分组下的多个节点同时设置并触发了当前动作,那么只会添加一组节点分组备用节点的IP解析记录,不会重复添加。

切换到备用IP

将当前节点的IP切换到当前节点配置的备用IP。

前提条件是当前节点已经设置了备用IP(参考本文中的 基础设置),如果没有设置备用IP,则不会发生任何变化;如果已经设置了备用IP,那么此动作会在DNS解析记录中删除当前节点的IP解析记录,并添加备用IP的解析记录,这样用户通过域名解析访问到的节点使用的就是备用IP。

启用集群备用节点

保持当前节点并启用节点所在集群备用节点。

同本文中的 切换到集群备用节点 类似,只不过仍然保留当前节点的IP解析记录。

启用分组备用节点

保持当前节点并启用节点所在分组备用节点。

同本文中的 切换到分组备用节点 类似,只不过仍然保留当前节点的IP解析记录。

启用备用IP

保持当前节点的IP并启用当前节点配置的备用IP。

同本文中的 切换到备用IP 类似,只不过仍然保留当前节点的IP解析记录。

WebHook

通过WebHook发送通知到URL。

在动作被触发时,会以GET的方式调用你填入的WebHook URL,并传入节点角色(role)、集群ID(clusterId)、节点ID(nodeId)等参数,比如你填入的WebHook为:

https://example.com/notify

那么调用时的完整URL就是:

https://example.com/notify?role=node&clusterId=集群ID&nodeId=节点ID

URL里也可以使用参数:

https://example.com/notify?name=monitor&v=1

那么调用时的完整URL就是:

https://example.com/notify?name=monitor&v=1&role=node&clusterId=集群ID&nodeId=节点ID
可以看到保留了原来的URL参数。

场景演示

服务器租期到后自行下线

比如某台服务器租用期限在2023年12月31日,那么可以在节点”智能调度”–“基础设置”中设置”当前节点租期结束日期为”2023-12-31”,这样到此日期时会自动将此服务器对应的IP从域名解析中移除。

在实际操作中,设置的结束日期最好提前几天,以便于DNS解析记录可以及时生效,比如实际结束日期为”2023-12-31”,表单里的结束日期就可以设置为”2023-12-29”。

服务器流量满时自行下线

比如某台服务器限制每个月流量为500GB,那么可以在节点”智能调度”添加调度动作”节点当月流量 大于 450GB”时执行”下线当前节点”动作,这样当节点超过450GB时就自动从DNS域名解析中移除节点的IP。之所以是450GB而不是500GB,是为了留有余量,一方面统计方法可能不同,另外一方面域名解析生效需要时间。

服务器被攻击时自动切换到高防

不需要新部署高防节点的情形:为服务器对应的节点设置备用IP(节点”智能调度”–“基础设置”–“当前节点备用IP”选项),这些IP为高防实例的IP,然后添加调度动作”节点入口带宽 大于 100Mpbs”,动作为”切换到备用IP”,持续时间”60分钟”,这样当节点上行带宽超过100Mbps时会自动将域名解析中的节点IP切换到备用IP(高防实例IP),并且在60分钟后自动恢复。

需要部署高防节点的情形:为集群或者节点分组设置一些备用节点,备用节点的IP为高防实例的IP,选中备用节点的”智能调度”–“基础设置”–“当前节点为集群备用节点”或者”当前节点为分组备用节点”,然后添加调度动作”节点入口带宽 大于 100Mpbs”,动作为”切换到集群备用节点”或者”切换到分组备用节点”,持续时间”60分钟”,这样当节点上行带宽超过100Mbps时会自动将域名解析中的节点IP切换到备用节点的IP(高防实例IP),并且在60分钟后自动恢复。

节点无法访问时下线节点

首先在集群中启用健康检查,然后增加调度执行条件”健康检查失败”,执行动作为”下线当前节点”,这样在健康检查失败时会从DNS域名解析中自动下线当前节点下的所有IP。

GoEdge文档