集群

January 10, 2022 · View on GitHub

1 创建集群

基本信息

项目说明
端点/products/{product_name}/clusters
动作POST
含义创建产品的集群-

输入参数

URI 参数

参数名类型参数含义必填补充描述
product_namestring产品线名字Y-

Body参数

参数名类型参数含义必填补充描述
namestring集群名Y集群名必须全局唯一
descriptionstring集群描述信息N
basicobject基本参数Y
basic.connectionobject连接管理Y内容见 表:连接设置
basic.retriesobject重试次数Y内容见 表:重试设置
basic.buffersobject缓冲设置Y
basic.buffers.req_write_buffer_sizestring接受请求的缓冲字节数Y
basic.timeoutsobject超时设置Y内容见 表:超时设置
sticky_sessionsobject会话保持Y内容见 表:会话保持
sub_clusters[]string集群中挂载的子集群Y
schedulerobject内网流量配置Y具体说明见 调度说明
passive_health_checkobject被动健康检查Y具体字段见 表:被动健康检查

表:连接设置

参数名类型参数含义必填补充描述
max_idle_conn_per_rsint连接池Y每个BFE实例,为集群中每个RS维持的空闲长连接数。一般情况下,无需特别维持,设置为0 。
设置为非0时,可以提升转发性能
cancel_on_client_closestring连接是否级联关闭Y设置为true时,当客户端关闭连接后,BFE同时关闭对应RS的连接
设置为false时,当客户端关闭连接后,BFE按默认策略关闭对应RS的连接

表: 重试设置

参数名类型参数含义必填补充描述
max_retry_in_subclusterstring同一个子集群内重试次数Y
max_retry_cross_subclusterstring跨子集群重试次数Y-

表:会话保持

参数名类型参数含义必填补充描述
session_sticky_typestring会话保持的粒度YINSTANCE,实例级会话保持
SUB_CLUSTER,子集群级别会话保持
hash_strategystring会话保持策略NCLIENT_IP_ONLY,根据client ip做会话保持
CLIENT_ID_ONLY,根据请求中header做会话保持(默认值)
CLIENT_ID_PERFERED,优先基于特定header,如果请求中没有对应header,则使用client ip
hash_headerstring指定CLIENT_ID使用的headerN当使用cookie作为会话保持的哈希key时,数据格式为Cookie:${key}

表:超时设置

参数名类型参数含义必填补充描述
timeout_conn_servstring连接后端超时(ms)Y
timeout_response_headerstring读后端响应头部超时(ms)Y
timeout_readbody_clientstring读请求body超时(ms)Y
timeout_read_client_againstring与用户的长连接超时(ms)Y
timeout_write_clientstring写响应超时(ms)Y-

表: 被动健康检查

参数名类型参数含义必填补充描述
failnumint进入健康检查的失败次数阈值Y连续转发失败多次后,BFE进入健康检查状态,对下游RS发起探活
intervalint连续健康检查的时间间隔Y单位ms
hoststring健康检查请求的域名Y域名后的部分
uristring健康检查请求的URIY
statuscodeint期望的健康检查返回码Y如果需要忽略返回码,此处可以填0

HTTP BODY中参数示例

{
    "name": "news_static",
    "description": "新闻静态页面集群",
    "basic": {
        "connection": {
            "max_idle_conn_per_rs": 0,
            "cancel_on_client_close": false
        },
        "retries": {
            "max_retry_in_subcluster": 2,
            "max_retry_cross_subcluster": 0
        },
        "buffers": {
            "req_write_buffer_size": 512
        },
        "timeouts": {
            "timeout_conn_serv": 50000,
            "timeout_response_header": 50000,
            "timeout_readbody_client": 30000,
            "timeout_read_client_again": 30000,
            "timeout_write_client": 60000
        }
    },
    "sticky_sessions": {
        "session_sticky_type": "INSTANCE",
        "hash_strategy": "CLIENT_ID_ONLY",
        "hash_header": "Cookie:USERID"
    },
	"sub_clusters": [
		"sub_cluster_1",
		"sub_cluster_2"
    ],
	"passive_health_check": {
		"interval": 1000,
		"failnum": 10,
		"host": "news.bfe-networks.com",
		"uri": "/index.html",
		"statuscode": 200,
	}
}

返回数据(Data内容)

同请求参数

2 集群列表

基本信息

项目说明
端点/products/{product_name}/clusters
动作GET
含义产品线的所有集群列表-

输入参数

URI 参数

参数名类型参数含义必填补充描述
product_namestring产品线名称Y-

返回数据(Data内容)

数组,单元素同创建接口

3 集群详情

基本信息

项目说明
端点/products/{product_name}/clusters/{cluster_name}
methodGET
含义产品线的单个集群详情-

输入参数

URI 参数

参数名类型参数含义必填补充描述
product_namestring产品线名称Y
cluster_namestring集群名字Y-

返回数据(Data内容)

同创建接口

4 更新集群基本配置

基本信息

项目说明
含义更新集群基本信息可编辑描述信息, Basic配置段, sticky_sessions配置段, healthcheck配置段
端点/products/{product_name}/clusters/{cluster_name}
methodPATCH-

输入参数

URI 参数

参数名类型参数含义必填补充描述
product_namestring产品线名称Y
cluster_namestring集群名字Y-

Body参数

可修改字段含义同创建接口。示例如下:

{ 
	"name": "news_static", 
	"description": "新闻静态页面集群", 
	"ready": false,
	"basic": {
		"connection": {
	 		"max_idle_conn_per_rs": 0,
			"cancel_on_client_close": false
		},
		"retries": {
			"max_retry_in_subcluster": 2,
			"max_retry_cross_subcluster": 0
		},
		"buffers": {
				"req_write_buffer_size": 512
		},
		"timeouts": {
			"timeout_conn_serv": 50000, 
			"timeout_response_header": 50000, 
			"timeout_readbody_client": 30000, 
			"timeout_read_client_again": 30000, 
			"timeout_write_client": 60000
		},
	},
	"sticky_sessions": {
		"session_sticky_type": "INSTANCE",
		"hash_strategy": "CLIENT_ID_ONLY",
		"hash_header": "Cookie:USERID"
	},
	"passive_health_check": {
		"interval": 1000,
		"failnum": 10,
		"host": "news.bfe-networks.com",
		"uri": "/index.html",
		"statuscode": 200,
	}
}

返回数据(Data内容)

同创建接口

5 更新集群的子集群

基本信息

项目说明
端点/products/{product_name}/clusters/{cluster_name}/sub-clusters
methodPATCH
含义在集群上,更新挂载的子集群列表-

输入参数

URI 参数

参数名类型参数含义必填补充描述
product_namestring产品线名称Y
cluster_namestring集群名字Y-

Body 参数

参数名类型参数含义必填补充描述
namestring集群名字Y
sub_clusters[]string子集群名字列表Y-
  • 新增子集群时,集群的流量调度默认执行以下处理:
    • 将子集群的流量分流比例设置为0
  • 摘除一个子集群时,必须先调用流量调度接口,将子集群上的流量切走:
    • 将子集群的流量分流比例为0
  • 挂载的子集群,必须满足以下条件
    • 子集群必须没有被其他集群挂载: cluster_name字段是空串
    • 子集群的必须已经就绪: ready字段是true

HTTP BODY中参数示例

{ 
	"name": "news_static", 
	"sub_clusters": [ 
		"sub_cluster_1",
		"sub_cluster_2"
	]
}

返回数据(Data内容)

同创建接口

6 删除集群

基本信息

项目说明
含义删除产品线的集群
端点/products/{product_name}/clusters/{cluster_name}
methodDELETE-

输入参数

URI 参数

参数名类型参数含义必填补充描述
product_namestring产品线名称Y
cluster_namestring集群名字Y-

返回数据(Data内容)

同创建接口

7 集群就绪状态获取

基本信息

项目说明
端点/products/{product_name}/clusters/{cluster_name}/ready
methodGET
含义获取集群是否就绪的状态(可以承接线上流量)当前,集群默认是就绪的

输入参数

URI 参数

参数名类型参数含义必填补充描述
product_namestring产品线名称Y
cluster_namestring集群名字Y-

返回数据(Data内容)

{ 
	"name": "news_static", 
	"ready": false
}