通过VPC高速访问通道的方式访问在线服务
背景说明
访问在线服务的实际业务中,用户可能会存在如下需求:
- 高吞吐量、低时延
- TCP或者RPC请求
因此,ModelArts提供了VPC直连的高速访问通道功能以满足用户的需求。
使用VPC直连的高速访问通道,用户的业务请求不需要经过推理平台,而是直接经VPC对等连接发送到实例处理,访问速度更快。
![](https://support.huaweicloud.com/usermanual-standard-modelarts/public_sys-resources/note_3.0-zh-cn.png)
由于请求不经过推理平台,所以会丢失以下功能:
- 认证鉴权
- 流量按配置分发
- 负载均衡
- 告警、监控和统计
![](https://support.huaweicloud.com/usermanual-standard-modelarts/figure/zh-cn_image_0000001986182749.png)
约束限制
- 请求体的大小不超过12MB,超过后请求会被拦截。
- 因APIG(API网关)限制,平台每次请求预测的时间不超过40秒。
准备工作
使用专属资源池部署在线服务,服务状态为“运行中”。
![](https://support.huaweicloud.com/usermanual-standard-modelarts/public_sys-resources/notice_3.0-zh-cn.png)
- 需使用新版专属资源池部署服务,详情请参见ModelArts资源池管理功能全面升级。
- 只有专属资源池部署的服务才支持VPC直连的高速访问通道。
- VPC直连的高速访问通道,目前只支持访问在线服务。
- 因流量限控,获取在线服务的IP和端口号次数有限制,每个主账号租户调用次数不超过2000次/分钟,每个子账号租户不超过20次/分钟。
- 目前仅支持自定义镜像导入模型,部署的服务支持高速访问通道。
操作步骤
使用VPC直连的高速访问通道访问在线服务,基本操作步骤如下:
- 将专属资源池的网络打通VPC
登录ModelArts控制台,进入“AI专属资源池 > 弹性集群Cluster”找到服务部署使用的专属资源池,单击“名称/ID”,进入资源池详情页面,查看网络配置信息。返回专属资源池列表,选择“网络”页签,找到专属资源池关联的网络,打通VPC。打通VPC网络后,网络列表和资源池详情页面将显示VPC名称,单击后可以跳转至VPC详情页面。
图2 查看网络配置图3 打通VPC - VPC下创建弹性云服务器
登录弹性云服务器ECS控制台,单击右上角“购买弹性云服务器”,进入购买弹性云服务器页面,完成基本配置后单击“下一步:网络配置”,进入网络配置页面,选择1中打通的VPC,完成其他参数配置,完成高级配置并确认配置,下发购买弹性云服务器的任务。等待服务器的状态变为“运行中”时,弹性云服务器创建成功。单击“名称/ID”,进入服务器详情页面,查看虚拟私有云配置信息。
图4 购买弹性云服务器时选择VPC图5 查看虚拟私有云配置信息 - 获取在线服务的IP和端口号
可以通过使用图形界面的软件(以Postman为例)获取服务的IP和端口号,也可以登录弹性云服务器(ECS),创建Python环境运行代码,获取服务IP和端口号。
API接口:
GET /v1/{project_id}/services/{service_id}/predict/endpoints?type=host_endpoints
- 方式一:图形界面的软件获取服务的IP和端口号
图6 接口返回示例
- 方式二:Python语言获取IP和端口号
def get_app_info(project_id, service_id): list_host_endpoints_url = "{}/v1/{}/services/{}/predict/endpoints?type=host_endpoints" url = list_host_endpoints_url.format(REGION_ENDPOINT, project_id, service_id) headers = {'X-Auth-Token': X_Auth_Token} response = requests.get(url, headers=headers) print(response.content)
- 方式一:图形界面的软件获取服务的IP和端口号
- 通过IP和端口号直连应用
登录弹性云服务器(ECS),可以通过Linux命令行访问在线服务,也可以创建Python环境运行Python代码访问在线服务。schema、 ip、port参数值从3获取。
- 执行命令示例如下,直接访问在线服务。
curl --location --request POST 'http://192.168.205.58:31997' \ --header 'Content-Type: application/json' \ --data-raw '{"a":"a"}'
图7 访问在线服务
- 创建Python环境,运行Python代码访问在线服务。
def vpc_infer(schema, ip, port, body): infer_url = "{}://{}:{}" url = infer_url.format(schema, ip, port) response = requests.post(url, data=body) print(response.content)
由于高速通道特性会缺失负载均衡的能力,因此在多实例时需要自主制定负载均衡策略。
- 执行命令示例如下,直接访问在线服务。