{{i18nTranslate('_layout.t11')}} {{i18nGetLang()==='zh' ? 'EN' : '中文'}}

# 节点IP地址智能调度

> 此功能为商业版功能。在v0.3.1版本加入。

可以利用阈值和动作来实现节点和节点IP的流量调度。

## 阈值

可以在IP地址中设置一组阈值，配合”动作”，用来根据一些条件自动修改IP地址的在线状态以及备用IP。

目前支持的阈值项目有：

- `节点平均请求数` - 当前节点在单位时间内接收到的平均请求数
- `节点平均下行流量` - 当前节点在单位时间内发送的下行流量
- `节点平均上行流量` - 当前节点在单位时间内接收的上行流量
- `节点健康检查结果` - 在节点健康状态发生改变的时候触发
- `IP连通性` - 通过区域监控得到的当前IP地址的连通性数值，取值在0和100之间
- `分组平均请求数` - 当前节点所在分组在单位时间内接收到的平均请求数
- `分组平均下行流量` - 当前节点所在分组在单位时间内发送的下行流量
- `分组平均上行流量` - 当前节点所在分组在单位时间内接收的上行流量
- `集群平均请求数` - 当前节点所在集群在单位时间内接收到的平均请求数
- `集群平均下行流量` - 当前节点所在集群在单位时间内发送的下行流量
- `集群平均上行流量` - 当前节点所在集群在单位时间内接收的上行流量

其中： `下行流量`表示节点向终端用户发送的内容流量；`上行流量`表示终端用户向节点发送的内容流量。

## 动作

当满足阈值时可以触发一些动作。有些动作可以在不满足阈值时执行反向操作，比如上线、下线、切换、WebHook。

多个动作可以组合使用。

### 上线

当阈值满足时，设置当前IP地址为在线状态。当阈值不满足时，则自动设置当前IP地址为离线状态。

### 下线

当阈值满足时，设置当前IP地址为离线状态。当阈值不满足时，则自动设置当前IP地址为在线状态。

### 切换

当阈值满足时，自动切换到新的IP。当阈值不满足时，则自动恢复为原有的IP地址。

### 通知

当阈值满足时，向管理员发送通知。

### WebHook

当阈值满足或者不满足时，以`GET`方式向WebHook URL发送请求，并传递相关参数，比如：

    https://example.com/webhook/api?clusterId=[集群ID]&groupId=[节点分组ID]&nodeId=[节点ID]&addressId=[IP地址ID]&ip=[IP地址]&result=[true|false]

其中：

- `result` - 用来标识是否满足阈值，取值为`true`（满足）或者`false`（不满足）。

你可以自己添加URL参数，比如WebHook的地址你填写为：

    https://example.com/webhook/api?version=1

那么接收到的URL参数就会变成：

    https://example.com/webhook/api?version=1&clusterId=...[省略]...

由于WebHook URL调用是从API节点发出，所以请调整相关设置（比如防火墙等）确保在API节点上能成功调用WebHook。

#### 自定义动作

可以利用WebHook实现自定义动作，在WebHook的返回数据中，可以返回一个JSON：

    [
      {
    	"action": "switch",
    	"options": {
    	  "ips": ["192.168.1.100"]
    	}
      }
    ]

其中`action`的取值可以是：

- `up` - 上线
- `down` - 下线
- `switch` - 切换IP，选项有：
  - `ips` - 一个IP列表，比如`[ "192.168.1.100", "192.168.1.101" ]`，触发此动作时会自动从这个列表中取出一个IP作为备用IP
- `notify` - 通知

可以没有动作，也可以添加多个动作：

    [
      {
    	"action": "up"
      },
      {
    	"action": "notify"
      }
    ]

注意：

- WebHook的响应的状态码只支持`200`；
- 在阈值满足和不满足时都会调用WebHook，请根据`result`参数值来决定执行哪些动作。

## 应用场景示例

### 实现备用节点，当流量过大时启用

可以创建一组备用节点，节点的IP地址中设置阈值，当`分组平均上/下行流量`或者`集群平均上/下行流量`大到一定的数值时，触发`上线`动作，让备用节点上线。当分组或者集群流量下降时，会自动恢复到离线状态。

### 实现自动切换到高防IP

我们平时可以使用普通的IP来让用户正常访问，并节省流量开支，当节点流量达到一定阈值时，可以设置触发`切换`动作，自动切换到高防IP。

### 根据区域是否访问自动切换IP

如果我们的IP经常在某个区域或某个运营商的网络中发生故障，导致用户无法访问我们的服务，可以设置配合区域监控并设置连通性阈值，动作设置为`WebHook`，此时当发生不能访问的故障时，会自动调用WebHook中的URL，在这个URL中我们可以自己实现一个动态获取新IP的小程序，这样就能根据IP连通性就能实现自动切换IP。

### 根据流量自动启动云实例

可以利用`WebHook`动作自动调用你自己实现的外部的URL，在这个URL里你可以根据阈值匹配结果自动启动一个新的云实例，或者执行别的动作。

{{i18nTranslate('_layout.t27')}}
{{i18nTranslate('_layout.t12')}}