Ingress 接口

1. 接口详情

1.1 GetLoadBalancers

GET /ing?Action=GetLoadBalancers[&Type=mix][&Limit=10][&Offset=20]&Version=2017-12-05

描述

获取指定用户经典负载均衡实例

参数说明

- TenantId: 租户ID  
- Namespace: 命名空间
- [Type]: 负载均衡类型,mix|tcp, 默认为全部  
- [Offset]: 起始偏移量,需要>0 ,默认值0   
- [Limit]: 获取实例数目,需要>0,<200,默认值50

返回码

- 200 成功
- 404 租户不存在
- 500 内部错误  

结果说明

- InstanceId: 实例ID
- TenantId: 租户ID
- Name: 实例名称
- Type: 实例类型
- Network: 网络类型
- Description: 用户自定义描述
- Address: 实例对应的外网ip地址
- Status: 实例状态,CREATING:创建中,WORKING:正常工作,DELETING:删除中,UPDATING: 更新中,FAILED:异常(创建或删除失败)
- SubStatus: 实例子状态,CREATE_FAILED: 创建失败, DELETE_FAILED:删除失败
- InstanceStatus: 后端服务器综合状态,只要一个端口为DOWN,则为DOWN,其余情况为UP
- Createtime: 创建时间
- Updatetime: 修改时间
- TopAzInfos: [   
&emsp;&emsp;TopAz: az信息  
&emsp;&emsp;SubNetId: 子网Id   
  ]

示例

请求:

GET /ing?Action=GetLoadBalancers&Version=2017-12-05

HEADER:

    Content-type: application/json
    X-Product-Id: ${tenantId}
    Namespace: ${namespace}

响应:

[{
    "InstanceId": "default-namespace@inglb1",
    "Name": "inglb1",
    "Namespace": "default-namespace",
    "TenantId": "86abf149903840199ffdffc86e408d74",
    "Network": "public",
    "Description": "for qa smoke create",
    "Status": "WORKING",
    "SubStatus": "WORKING",
    "Address": "115.238.125.52",
    "Createtime": 1487750503291,
    "Updatetime": 1487751710560,
    "Type": "vpc_mix",
    "InstanceStatus": "UP",
    "TopAzInfos": [
        "TopAz": "cn-eash-1a",
        "SubNetId": "01a6b5e8-5b13-49b9-8cbe-23f7cf89f124"
    ]
}]

1.2 GetLoadBalancer

GET /ing?Action=GetLoadBalancer&InstanceId=&Version=2017-12-05

描述

获取单个实例详情

参数说明

- TenantId: 租户ID  
- InstanceId: 实例Id

结果说明

- InstanceId: 实例ID
- TenantId: 租户ID
- Name: 实例名称
- Namespace: 命名空间
- Type: 实例类型
- Network: 网络类型
- Description: 用户自定义描述
- Address: 实例对应的外网ip地址
- Status: 实例状态,CREATING:创建中,WORKING:正常工作,DELETING:删除中,UPDATING: 更新中,FAILED:异常(创建或删除失败)
- SubStatus: 实例子状态,CREATE_FAILED: 创建失败, DELETE_FAILED:删除失败
- InstanceStatus: 后端服务器综合状态,只要一个端口为DOWN,则为DOWN,其余情况为UP
- InstanceNum: 后端实例数目
- Createtime: 创建时间
- Updatetime: 修改时间
- Standard: {
&emsp;&emsp;BandwidthLimit: 带宽限制
&emsp;&emsp;ChargeType: 计费类型,hour按量, month包月
emsp;&emsp;ChargeMode: 计费方式,netflow流量,bandwidth带宽
&emsp;&emsp;AutoRenewPeriod: 自动续费, 0 表示关闭,非0表示续费时间,单位为月
}
- TopAzInfos: [   
&emsp;&emsp;TopAz: az信息  
&emsp;&emsp;SubNetId: 子网Id   
  ]
- VpcId: vpc Id
- Listeners: {    
&emsp;&emsp;"ListenerId": 监听ID,      
&emsp;&emsp;"Name": 监听名字,
&emsp;&emsp;"Status": 监听状态,需要状态为ON时才允许设置    
&emsp;&emsp;"ListenerPort": 监听端口    
&emsp;&emsp;"Protocol": 监听协议    
&emsp;&emsp;"CreateTime": 创建时间    
&emsp;&emsp;"UpdateTime": 修改时间   
&emsp;&emsp;"TraceVip": vip 跟踪,在请求头中带NLB-VIP字段,用于监控统计    
&emsp;&emsp;"Balance": 负载均衡算法,目前支持  roundrobin和leastconn两种算法  
&emsp;&emsp;"Gzip": 1 代表打开gip功能,0代表关闭GZIP    
&emsp;&emsp;"CipherSuiteId": 加密套件ID, https可以指定加密套件    
&emsp;&emsp;"Cluster": 后端集群,http可以根据path/domain来分流,可以有多个,对于tcp只有一个后端集群     
&emsp;&emsp;[{    
&emsp;&emsp;&emsp;&emsp;"Id": 集群ID     
&emsp;&emsp;&emsp;&emsp;"CertId": https 证书id    
&emsp;&emsp;&emsp;&emsp;"Name": 集群名字    
&emsp;&emsp;&emsp;&emsp;"ClientTimeout": 超时时间  
&emsp;&emsp;&emsp;&emsp;"Path": 路径    
&emsp;&emsp;&emsp;&emsp;"ServerName": 域名    
&emsp;&emsp;&emsp;&emsp;"ClusterPort": 集群端口    
&emsp;&emsp;&emsp;&emsp;"CreateTime": 创建时间    
&emsp;&emsp;&emsp;&emsp;"UpdateTime": 修改时间    
&emsp;&emsp;&emsp;&emsp;"Service":  服务名字   
&emsp;&emsp;&emsp;&emsp;"Monitor": 健康检查    
&emsp;&emsp;&emsp;&emsp;{    
&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;"Protocol": 检查协议    
&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;"Fall": 失败阈值    
&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;"Rise": 健康阈值   
&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;"Url": 健康检查url, http使用    
&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;"Period": 健康检查间隔    
&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;"Rstatus": 期望返回码        
&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;"Timeout": 超时时间    
&emsp;&emsp;&emsp;&emsp;}    
&emsp;&emsp;}]  
}
- SecurityGroups: 安全组ID
- VpcIps: 实例在vpc中使用的ip地址    
- Stanard: 规格相关的信息    
- Limit: 限制信息     
&emsp;&emsp;{    
&emsp;&emsp;&emsp;&emsp;"TGroupLimit": 目标组个数限制         
&emsp;&emsp;&emsp;&emsp;"TGroupInstanceLimit": 目标组后端个数限制         
&emsp;&emsp;&emsp;&emsp;"ListenerLimit": 监听器个数限制         
&emsp;&emsp;&emsp;&emsp;"PathLimit": 单个监听器Path限制         
&emsp;&emsp;&emsp;&emsp;"DomainLimit": 单个监听器域名限制         
&emsp;&emsp;}   

返回码

- 204 查询成功
- 404 实例不存在
- 403 权限错误
- 500 内部错误

示例

请求:

GET /ing?Action=GetLoadBalancer&InstanceId=default-namespace@inglb1&Version=2017-12-05

HEADER:

    Content-type: application/json
    X-Product-Id: ${tenantId}

响应:

{
    "InstanceId": "default-namespace@inglb1",
    "TenantId": "34493fd33b874583ac7b24c1f60138fd",
    "Name": "inglb1",
    "Network": "public",
    "Description": "for testSmokeDescribeLodBalancer!",
    "Status": "WORKING",
    "SubStatus": "WORKING",
    "InstanceStatus": "UP",
    "Address": "60.191.87.8",
    "Createtime": 1514901357136,
    "Updatetime": 1514902499054,
    "InstanceNum": 1,
    "VpcId": "94140c56-bf1e-4b4f-9bc9-8e6cb406e638",
    "Standard": {
      "ChargeMode": "netflow",
      "ChargeType": "hour",
      "BandwidthLimit": 1000,
      "AutoRenewPeriod": 0
    },
    "Listeners": [
        {
            "Id": "5ff9f89e-62d2-4c14-b99d-91587995a02a",
            "Name": "aaa",
            "Status": "ON",
            "ListenPort": 80,
            "Protocol": "https",
            "Createtime": 1514901511282,
            "Updatetime": 1514901511282,
            "TraceVip": 1,
            "Balance": "roundrobin",
            "Gzip": 1,
            "CipherSuiteId": "707709d7-5fc9-4c87-92a4-99a7a10e316a",
            "Clusters": [
                {
                    "Id": "679fa686-eb2a-402d-9fc1-23c90c6bf637",
                    "CertId": "59ba54bf-df08-4f65-aaf7-c4c70ee64b2f",
                    "Name": "aaa",
                    "path": "/",
                    "clientTimeout": 900,
                    "serverName": "*",
                    "clusterPort": 0,
                    "Createtime": 1514901509467,
                    "Updatetime": 1514902497591,
                    "UseSamePort": 1,
                    "ServiceName": "default-service"
                    "Monitor": {
                        "Protocol": "tcp",
                        "Rise": 2,
                        "Fall": 3,
                        "Url": "",
                        "Timeout": 2000,
                        "Period": 5000,
                        "Rstatus": null
                    }
                }
            ]
        }
    ],
    "Limit": {
        "tGroupLimit": 20,
        "tGroupInstanceLimit": 50,
        "ListenerLimit": 10,
        "PathLimit": 100,
        "DomainLimit": 20
    },
    "TopAzInfos": [
        {
            "TopAz": "cn-east-1b",
            "SubNetId": "61ecc606-2cbf-4a37-ab21-35f47de4dbbe"
        }
    ],
    "SecurityGroups": [
        "62f814f5-85c0-4eab-8053-a079ff3252a2",
        "c98659bb-13ad-45dc-b2b0-da02ebebf393"
    ],
    "VpcIps": [
        "10.177.1.99"
    ]
}

1.3 CheckLoadBalancerParams

POST /ing?Action=CheckLoadBalancerParams&Version=2017-12-05

描述

检查创建参数(webConsole)

参数说明

- TenantId: 租户ID  
- Namespace: 命名空间
- Name: 负载均衡名字
- Type: 负载均衡类型,目前支持mix vpc_mix类型
- Network: 网络类型,public|private|idc
- Description: 用户描述信息
- Standard: {
&emsp;&emsp;BandwidthLimit: 带宽限制
&emsp;&emsp;ChargeType: 计费类型,hour按量, month包月
emsp;&emsp;ChargeMode: 计费方式,netflow流量,bandwidth带宽
&emsp;&emsp;AutoRenewPeriod: 自动续费, 0 表示关闭,非0表示续费时间,单位为月
&emsp;&emsp;Period: 对于包月计费类型,指定包月时长,单位为月
}
- TopAzInfos: 指定az和子网信息
- SecurityGroups: 指定安全组
- VpcId: 指定vpc Id

结果说明

返回码

- 200 检查成功
- 400 参数错误
- 403 权限错误
- 409 重复创建
- 500 内部错误

示例

请求:

POST /ing?Action=CheckLoadBalancerParams&Version=2017-12-05

HEADER:

    Content-type: application/json
    X-Product-Id: ${tenantId}
    Namespace: ${namespace}

BODY:

    {
        "Name": "lb-1",
        "Description" : "test description",
        "Type": "vpc_mix",
        "Network": "public"
        "TopAzInfos": [
            {
                "TopAz":"cn-eash-1a", 
                "SubNetId": "13f009c8-e661-41cd-bc58-1f4a79bb728c"
            }
        ],
        "SecurityGroups": [
            "92282f88-4940-4aea-8dfc-4774fe1d90df"
        ],
        "VpcId": "8d71d5e7-e621-46fa-9ab9-69844d698015",
        "Standard": {
          "ChargeType": "netflow",
          "BandwithLimit": 100,
          "ChargeMode": "month",
          "AutoRenewPeriod": 10
        }
    }

响应:

1.4 CreateLoadBalancer

POST /ing?Action=CreateLoadBalancer&Version=2017-12-05

描述

创建实例,假如指定订单创建,则实例绑定订单; 否则使用余额下订单支付, 然后绑定实例

参数说明

- TenantId: 租户ID  
- Namespace: 命名空间
- Name: 负载均衡名字
- Type: 负载均衡类型,目前支持mix vpc_mix类型
- Network: 网络类型,public|private|idc
- Description: 用户描述信息
- TopAzInfos: 指定az和子网信息
- SecurityGroups: 指定安全组
- VpcId: 指定vpc Id
- Standard: {
&emsp;&emsp;BandwidthLimit: 带宽限制
&emsp;&emsp;ChargeType: 计费类型,hour按量, month包月
emsp;&emsp;ChargeMode: 计费方式,netflow流量,bandwidth带宽
&emsp;&emsp;AutoRenewPeriod: 自动续费, 0 表示关闭,非0表示续费时间,单位为月
&emsp;&emsp;Period: 对于包月计费类型,指定包月时长,单位为月
&emsp;&emsp;OrderId: 已经支付的订单ID
}

结果说明

- InstanceId: 实例ID
- TenantId: 租户ID
- Name: 实例名称
- Type: 实例类型
- Network: 网络类型
- Description: 用户自定义描述
- Address: 实例对应的外网ip地址
- Status: 实例状态,CREATING:创建中,WORKING:正常工作,DELETING:删除中,UPDATING: 更新中,FAILED:异常(创建或删除失败)
- SubStatus: 实例子状态,CREATE_FAILED: 创建失败, DELETE_FAILED:删除失败
- InstanceStatus: 后端服务器综合状态,只要一个端口为DOWN,则为DOWN,其余情况为UP
- InstanceNum: 后端实例数目
- Createtime: 创建时间
- Updatetime: 修改时间
- Standard: {
&emsp;&emsp;BandwidthLimit: 带宽限制
&emsp;&emsp;ChargeType: 计费类型,hour按量, month包月
emsp;&emsp;ChargeMode: 计费方式,netflow流量,bandwidth带宽
&emsp;&emsp;AutoRenewPeriod: 自动续费, 0 表示关闭,非0表示续费时间,单位为月
}
- TopAzInfos: [   
&emsp;&emsp;TopAz: az信息  
&emsp;&emsp;SubNetId: 子网Id   
  ]

返回码

- 204 创建成功
- 400 参数错误
- 403 权限错误
- 409 重复创建
- 500 内部错误

示例

请求:

POST /ing?Action=CreateLoadBalancer&Version=2017-12-05

HEADER:

    Content-type: application/json
    X-Product-Id: ${tenantId}
    Namespace: ${namespace}

BODY:

    {
        "Name": "lb-1",
        "Description" : "test description",
        "Type": "vpc_mix",
        "Network": "public"
        "TopAzInfos": [
            {
                "TopAz":"cn-eash-1a", 
                "SubNetId": "13f009c8-e661-41cd-bc58-1f4a79bb728c"
            }
        ],
        "SecurityGroups": [
            "92282f88-4940-4aea-8dfc-4774fe1d90df"
        ],
        "VpcId": "8d71d5e7-e621-46fa-9ab9-69844d698015",
        "Standard": {
          "ChargeType": "netflow",
          "BandwithLimit": 100,
          "ChargeMode": "month",
          "AutoRenewPeriod": 10
          "Period": 20,
          "OrderId": "112b8749-0fdb-4add-834a-220471a64f5d"
        }
    }

响应:

    {
        "InstanceId": "default-nm1@lb-1",
        "Namespace": "default-nm1",
        "TenantId": "06358fcd-7266-4bad-a664-ab697377a48e",
        "Address": "60.191.87.55",
        "Status": "CREATING",
        "Name": "lb-1",
        "Description" : "test description",
        "Type": "vpc_mix",
        "Network": "public"
        "TopAzInfos": [
            {
                "TopAz":"cn-eash-1a", 
                "SubNetId": "13f009c8-e661-41cd-bc58-1f4a79bb728c"
            }
        ],
        "SecurityGroups": [
            "92282f88-4940-4aea-8dfc-4774fe1d90df"
        ],
        "VpcId": "8d71d5e7-e621-46fa-9ab9-69844d698015",
        "Standard": {
          "ChargeType": "netflow",
          "BandwithLimit": 100,
          "ChargeMode": "month",
          "AutoRenewPeriod": 10
        }

    }

1.5 DeleteLoadBalancer

GET /ing?Action=DeleteLoadBalancer&InstanceId=&Version=2017-12-05

描述

删除实例

参数说明

- TenantId: 租户ID  
- InstanceId: 实例Id

结果说明

- 无

返回码

- 204 删除成功
- 400 参数错误
- 403 权限错误
- 500 内部错误

示例

请求:

GET /ing?Action=DeleteLoadBalancer&InstanceId=default-nm1@lb-1&Version=2017-12-05

HEADER:

    Content-type: application/json
    X-Product-Id: ${tenantId}

响应:

1.6 UpdateLoadBalancer

POST /ing?Action=UpdateLoadBalancer&Version=2017-12-05

描述

修改实例信息,包括描述信息,安全组

参数说明

- TenantId: 租户ID  
- InstanceId: 实例Id
- SecurityGroups: 安全组
- Description: 描述信息

结果说明

- 无

返回码

- 204 修改成功
- 400 参数错误
- 403 权限错误
- 500 内部错误

示例

请求:

POST /ing?Action=UpdateLoadBalancer&Version=2017-12-05

HEADER:

    Content-type: application/json
    X-Product-Id: ${tenantId}

BODY:

    {
        "InstanceId": "default-nm1@lb1",
        "SecurityGroups": [
          "93821c129dce40c1b157734138d782d5"
        ]
    }

响应:

1.7 UpdateLoadBalancerSpec

POST /ing?Action=UpdateLoadBalancerSpec&Version=2017-12-05

描述

删除实例

参数说明

- TenantId: 租户ID  
- InstanceId: 实例Id
- Standard: {
&emsp;&emsp;BandwidthLimit: 带宽限制
&emsp;&emsp;ChargeType: 按量转包年包月
&emsp;&emsp;ChargeMode: 计费方式,流量,带宽
&emsp;&emsp;AutoRenewPeriod: 自动续费, 0 表示关闭,非0表示续费时间,单位为月
&emsp;&emsp;OrderId: 对于规格修改的,包括带宽,计费方式修改的,没有OrderId,则后台自动下单,使用余额支付,否则使用订单支付
}

结果说明

- 无

返回码

- 204 修改成功
- 400 参数错误
- 403 权限错误
- 500 内部错误

示例

请求:

POST /ing?Action=UpdateLoadBalancerSpec&Version=2017-12-05

HEADER:

    Content-type: application/json
    X-Product-Id: ${tenantId}

BODY:

    {
        "InstanceId": "default-nm1@lb1",
        "Standard": {
          "BandwidthLimit": 100
        }
    }

响应:

1.8 RenewOrder

GET /ing?Action=RenewOrder&Version=2017-12-05

描述

下续费订单,并支付, 预付费实例有效

参数说明

- TnantId: 租户ID  
- InstanceId: 实例Id
- Period: 时长,单位10

结果说明

- OrderId: 订单Id

返回码

- 204 修改成功
- 400 参数错误
- 403 权限错误
- 409 重复创建
- 500 内部错误

示例

请求:

GET /ing?Action=RenewOrder&InstanceId=default-nm1@lb1&Period=14&Version=2017-12-05

HEADER:

    Content-type: application/json
    X-Product-Id: ${tenantId}

响应:

    {
        "OrderId": "074723ee-994c-43b1-a193-86403112390d"
    }

1.9 GetLoadBalancerCount

GET /ing?Action=GetLoadBalancerCount&Version=2017-12-05

描述

获取某租户负载均衡实例的总数

示例

请求:

GET /ing?Action=GetLoadBalancerCount&Version=2017-12-05

HEADER:

    Content-type: application/json
    X-Product-Id: ${tenantId}

响应:

    {
    "Total": 8
    }

参数说明

  • 接口版本:2017-12-05
  • http header
参数参数描述是否必选类型说明
X-Product-Id租户IDstring定长32租户ID

结果说明

字段字段名称取值特征字段描述
Total总计正整数所有实例的总数

2. 监听相关接口

2.1 CreateLBListener

POST /ing?Action=CreateLBListener&Version=2017-12-05

描述

创建监听器

参数说明

- TenantId: 租户ID  
- InstanceId: 实例Id
- Name: 监听名字
- ListenPort: 监听端口
- Protocol: 监听类型
- Clusters: 后端集群
- ServerName: 域名,*代表匹配所有
- Path: 路径,支持正则表达式
- ServiceName: 服务名称
- ServicePort: 服务端口
- Policy: 会话保持策略    
&emsp;&emsp;{
&emsp;&emsp;&emsp;&emsp;"Mode": 模式, insert或者rewrite模式    
&emsp;&emsp;&emsp;&emsp;"CookieName": cookie 名字, rewrite必选,insert没有使用    
&emsp;&emsp;&emsp;&emsp;"Expire": 失效时间,单位s,默认30s    
&emsp;&emsp;}    
- Monitor: 健康检查规则  
- Balancer: 负载均衡策略
- Timeout: tcp超时时间

结果说明

- 无

返回码

- 204 修改成功
- 400 参数错误
- 403 权限错误
- 500 内部错误

示例

请求:

POST /ing?Action=CreateLBListener&Version=2017-12-05

HEADER:

    Content-type: application/json
    X-Product-Id: ${tenantId}

BODY:

    {
        "InstanceId": "default-nm1/lb1",
        "Name": "l1",
        "ListenPort": 8088,
        "Protocol": "http",
        "Balance": "leastconn",
        "Clusters": [
            {
                "ServerName": "1.com",
                "CertId":"f271a811-d277-4d23-822e-9b9e71bf05a1"(https时必选)
                "Path": "/1",
                "ServiceName": "default-service",
                "ServicePort": 80,
                "Policy": {
                    "Mode": "insert",
                    "Expire": 30000
                }
            }
        ]
    }

响应:

2.2 UpdateLBListener

POST /ing?Action=UpdateLBListener&Version=2017-12-05

描述

修改监听器

参数说明

- TenantId: 租户ID  
- InstanceId: 实例Id
- Name: 监听器名字
- Clusters: 后端集群
- Service: Service名字
- Policy: 会话保持策略    
&emsp;&emsp;{
&emsp;&emsp;&emsp;&emsp;"Mode": 模式, insert或者rewrite模式    
&emsp;&emsp;&emsp;&emsp;"CookieName": cookie 名字, rewrite必选,insert没有使用    
&emsp;&emsp;&emsp;&emsp;"Expire": 失效时间,单位s,默认30s    
&emsp;&emsp;}    
- Monitor: 健康检查规则  
- Balancer: 负载均衡策略
- Gzip:压缩
- CipherSuiteId: 加密套件Id

结果说明

- 无

返回码

- 204 修改成功
- 400 参数错误
- 403 权限错误
- 500 内部错误

示例

请求:

POST /ing?Action=UpdateLBListener&Version=2017-12-05

HEADER:

    Content-type: application/json
    X-Product-Id: ${tenantId}

BODY:

    {
        "InstanceId": "default-nm1@lb1",
        "Name": "l1",
        "Balance": "leastconn",
        "Clusters": [
            {
                "ServerName": "1.com",
                "CertId":"f271a811-d277-4d23-822e-9b9e71bf05a1"(https时必选)
                "Path": "/1",
                "ClusterPort": 80,
                "ServiceName": "default-service1",
                "ServicePort": "8080",
                "Policy": {
                    "Mode": "insert",
                    "Expire": 30000
                }
            }
        ]
    }

响应:

2.3 DeleteLBListener

GET /ing?Action=DeleteLBListener&InstanceId=&Name=&Version=2017-12-05

描述

删除监听器

参数说明

- TenantId: 租户ID  
- InstanceId: 实例Id
- Name: 监听器名字

结果说明

- 无

返回码

- 204 修改成功
- 400 参数错误
- 403 权限错误
- 500 内部错误

示例

请求:

GET /ing?Action=DeleteLBListener&InstanceId=&Name=&Version=2017-12-05

HEADER:

    Content-type: application/json
    X-Product-Id: ${tenantId}

响应: