通过专属APIG&WAF&VPC&ELB连接内网访问在线服务
方案概述
为了确保外网用户能够安全、高效地访问ModelArts提供的在线服务,并更灵活地整合ModelArts提供的预测服务,
本方案将详细描述如何通过专属API Gateway(APIG)、Web应用防火墙(WAF)、虚拟私有云(VPC)和弹性负载均衡(ELB)连接内网访问ModelArts在线服务。
流量访问说明如下:
- 用户在浏览器输入域名后,客户端会向DNS发送请求,查询域名解析地址。
- DNS返回域名解析地址。
- DNS返回的域名解析地址为ELB的公网IP地址,客户端通过该公网IP访问ELB。
- ELB将流量传给WAF。
- 经过WAF检测后,异常请求将被拦截,正常请求会通过WAF独享引擎回源IP转发到在线服务。
约束限制
|
约束限制 |
备注 |
规避方案 |
|---|---|---|
|
域名 |
提前准备好ICP备案的公网域名,申请、备案等需要三到五天。 域名申请、备案等流程请参考流程指引_快速入门_域名注册服务 Domains-华为云。 |
使用ELB的IP进行访问。 |
|
响应超时时间 |
APIG限制后端服务最大响应超时时间为5分钟。 |
如果需要更大的超时时间,可以考虑去掉APIG。 |
资源和成本规划
本示例中的规格只是访问链路搭建使用,QPS低,最终的推理性能受限于各个组件的性能规格,请结合自身业务需要,购买性能匹配的组件。
|
资源 |
规格说明(参考) |
数量 |
|---|---|---|
|
API网关(APIG) |
规格购买请参考: |
1 |
|
弹性公网IP |
规格购买请参考: |
1 |
|
弹性负载均衡(ELB) |
规格购买请参考: |
1 |
|
Web应用防火墙(WAF) |
规格购买请参考: |
1 |
|
VPC终端节点 |
规格购买请参考: |
1 |
权限说明
|
组件 |
权限(创建组件所需权限) |
官方链接 |
|---|---|---|
|
VPC |
VPC FullAcces或者VPC Administrator |
|
|
EIP |
VPC FullAcces或者VPC Administrator |
|
|
APIG |
|
|
|
ELB |
ELBFullAccess或者ELB Administrator |
|
|
WAF |
WAF Administrator或者WAF FullAccess |
用户在使用内网接入功能时,要保证拥有以下权限。
|
权限名 |
action |
使用场景 |
|---|---|---|
|
查询工作空间详情 |
modelarts:workspace:get |
访问工作空间 |
|
查询模型服务列表 |
modelarts:service:list |
查询服务列表 |
|
查询专属资源池列表 |
modelarts:pool:list |
查询资源池列表 |
|
查询虚拟私有云列表 |
vpc:vpcs:list |
内网接入界面和创建内网接入申请使用 |
|
查询子网列表或详情 |
vpc:subnets:get |
内网接入界面和创建内网接入申请使用 |
|
查询内网访问列表 |
modelarts:intranetConnection:list |
查询内网接入列表 |
|
变更内网访问 |
modelarts:intranetConnection:update |
修改内网访问 |
|
创建内网访问 |
modelarts:intranetConnection:create |
创建内网访问 |
|
删除内网访问 |
modelarts:intranetConnection:delete |
删除内网访问 |
用户还需赋予ModelArts服务以下委托权限。ModelArts添加授权授权操作请参见快速配置ModelArts委托授权。
|
权限名 |
action |
使用场景 |
|---|---|---|
|
创建终端节点 |
vpcep:endpoints:create |
创建内网接入、变更内网接入 |
|
删除终端节点 |
vpcep:endpoints:delete |
删除内网接入 |
|
查询终端节点详情 |
vpcep:endpoints:get |
创建内网接入、变更内网接入 |
|
查询终端节点列表 |
vpcep:endpoints:list |
创建内网接入、变更内网接入 |
操作流程
|
操作步骤 |
说明 |
|---|---|
|
介绍如何创建VPC。 |
|
|
介绍如何创建一个服务的内网连接。 |
|
|
介绍如何购买APIG。 |
|
|
介绍如何创建API。 |
|
|
介绍如何创建负载均衡。 |
|
|
介绍如何添加监听器,打通负载均衡到WAF的链路。 |
|
|
接入waf,打通waf到APIG的链路。 |
|
|
公网访问在线服务。 |
步骤二:创建内网连接
- 登录ModelArts管理控制台,在左侧导航栏中选择“模型推理 > 在线推理”,默认进入“在线推理”列表。
- 单击“内网接入管理”,切换至“内网接入管理”页面。
- 在“我的申请”页签下,单击“创建”。
- 在“创建申请”弹框中填写参数,单击“确定”。
在“我的申请”查看申请状态,待申请状态为“接入成功”,即申请审批通过。
表4 内网接入申请参数说明 参数
说明
本案例推荐值
服务ID
需要内网访问的推理服务ID。
在推理服务列表单击服务名称,进入服务详情页获取在线服务ID。
申请场景
申请打通内网的VPC场景。
- 用户网络:打通当前用户指定VPC与推理服务的内网连接。
- 资源池网络:打通已创建的资源池与推理服务的内网连接。
用户网络。
VPC
当申请场景选择“用户网络”时,选择待打通内网连接的VPC。
选择步骤一:创建VPC创建的VPC。
子网
当申请场景选择“用户网络”时,选择待打通内网连接的子网。
选择步骤一:创建VPC创建的子网。
资源池
当申请场景选择“资源池网络”时,选择待打通内网连接的资源池。
不涉及。
自定义访问地址
放通用户域名,允许用户通过公网域名经过负载均衡连接内网访问在线服务。
用户提供的域名。
步骤四:通过APIG创建API
- 获取内网连接访问地址。
- 登录ModelArts管理控制台,在左侧导航栏中选择“模型推理 > 在线推理”,默认进入“在线推理”列表。
- 单击“内网接入管理”,切换至“内网接入管理”页面。
- 单击“我的申请”,找到步骤二:创建内网连接创建的内网连接,拷贝访问地址列的值,以“https://1xx.xxx.xxx.xxx/v2/infer/xxx-xxxx-xxxxxxx”为例,创建API接口。
图3 内网连接访问地址
- 创建API的负载通道。
- 登录APIG控制台,左上角下拉列表选择步骤三:购买APIG创建好的APIG实例,在左侧导航栏中选择“API管理>API策略”。
- 单击“负载通道”,进入到负载通道列表页面。
- 单击“创建负载通道”,配置基本信息。表5为部分参数说明。
更多参数说明请见创建API的负载通道。
表5 创建负载通道参数说明 参数
说明
本案例推荐值
通道名称
根据自身业务需要,选择APIG服务计费方式。
VPC_xxxx
端口
根据内网连接地址填写:
HTTP填80
HTTPS填443
443
分发算法
通过分发算法确定请求被发送到哪台主机。
分发算法包含如下几种:
- 加权轮询:结合弹性服务器权重值,将请求轮流转发到每一台服务器。
- 加权最少:结合弹性服务器权重值,将请求转发到具有最少活跃连接数的那台服务器。
- 源地址哈希:由请求的来源IP地址决定请求被转发到哪一台云服务器,相同源地址的请求始终会转发到同一台服务器,除非该云服务器不可用。
- URI哈希:由请求的路径决定请求被转发到哪一台云服务器,相同路径的请求始终会转发到同一台服务器,除非该云服务器不可用。
加权轮询
通道类型
- 选择服务器类型,API的请求将被分发到通道中的弹性云服务器或指定的服务器IP。
- 选择微服务类型,API的请求将被分发到通道中的微服务IP。
- 选择引用负载通道,可以引用其他已有的负载通道。
服务器
服务器添加方式
选择通道类型为服务器时,配置通道内服务器。
指定服务器地址
- 单击“创建服务器分组”,在弹窗中填写服务器分组信息,单击“确定”。更多参数说明请见创建API的负载通道。
- 单击“添加后端服务器地址”,根据下表中部分参数说明,在列表中填写后端服务器地址。
参数
说明
配置值
后端服务器地址
内网连接地址的IP部分,如访问连接https://192.xxx.xxx.122
/v2/infer/xxx-xxxx-xxxxxxx,则填写192.xxx.xxx.122
192.xxx.xxx.122
端口
根据内网连接地址请求协议填写:
HTTP填80
HTTPS填443
443
- 单击“完成”,完成负载通道的创建。
- 创建API。
- 在APIG控制台左上角下拉列表选择步骤三:购买APIG创建好的APIG实例,在左侧导航栏中选择“API管理>API列表”。
- 单击“创建API”,根据下表配置信息,表6为部分参数说明。更多参数说明请见通过APIG创建REST API。
表6 API参数说明 参数
说明
配置值
API名称
支持中文、英文、数字、中划线、下划线、点、斜杠、中英文格式下的小括号和冒号、中文格式下的顿号,且只能以英文、中文或数字开头,3-255个字符。
API_xxxx
所属分组
下拉选择或者新建API分组
DEFAULT
URL
示例链接https://192.xxx.xxx.122
/v2/infer/xxx-xxxx-xxxxxxx提供了POST /v1/sse接口
请求方法:选择与接口匹配的方法
请求协议:选择与接口匹配的协议
路径:请求path可以包含请求参数,请求参数使用{}标识,例如/a/{b},绝对匹配模式可以通过配置'+'号做前缀匹配,例如:/a/{b+}
POST
HTTPS
/v2/infer/xxxxx/v1/sse
网关响应
default
default
类型
公开类型,且在RELEASE环境上发布的API可以上架售卖。
私有类型API不会被上架售卖。
公开
安全认证
APP认证:使用AppKey & AppSecret认证
IAM认证:只允许用户能访问
自定义认证:使用自定义认证来控制API的访问
无认证:所有用户均可访问,不推荐使用。
注意事项:若请求链接中已包含有效的认证信息,可选择“无认证”选项,以避免API网关与后端服务重复验证,从而提升接口响应效率。
无认证
- 单击“下一步”按钮,进入接口后端配置。
根据下表配置信息,表7为部分参数说明。更多参数说明请见通过APIG创建REST API。
表7 后端配置参数说明 参数
说明
配置值
后端服务类型
选择API后端服务类型。
HTTP&HTTPS
负载模式
单模后端
DEFAULT
URL
示例链接https://192.xxx.xxx.122/v2/infer/xxx-xxxx-xxxxxxx提供了POST /v1/sse接口
请求方法:选择与接口匹配的方法
请求协议:选择与接口匹配的协议
负载通道:选择之前创建好的通道
路径:请求path可以包含请求参数,请求参数使用{}标识,例如/a/{b},绝对匹配模式可以通过配置'+'号做前缀匹配,例如:/a/{b+}
POST
HTTPS
VPC_xxxx
/v2/infer/xxxxxx/v1/sse
后端超时 (ms)
APIG限制了最大响应时间为5分钟,如果业务需要更大的响应时间,需要避开APIG链路,请求不走APIG。单位:毫秒。
5000
- 单击“完成”,等待页面跳转到API调试页面。
- 在API调试页面,单击右上角的“调试”,使用APIG提供的默认域名,接口响应200则表示API配置成功了。
图4 API调试
- 接口调试成功后,单击右上角的“发布最新版本”按钮,在发布API对话框中选择发布环境,单击“确定”。
本案例“发布环境”选择“RELEASE”。图5 发布新版本
图6 发布API
步骤六:添加监听器
- 进入“负载均衡实例”详情页面,在“负载均衡实例”详情页面,单击“监听器”页签,单击“添加监听器”按钮。
- 在添加监听器对话框中配置参数,需要配置的参数请参见表9,其他配置按需进行配置,更多参数说明请见添加HTTPS监听器。
- 单击“下一步:配置后端分配策略”,配置“配置后端分配策略”参数,需要配置的参数详情请参见表10。更多参数说明请见创建后端服务器组。
表10 配置后端分配策略参数说明 参数
说明
配置值
后端服务器组
参考创建后端服务器组创建。
新创建
名称
待创建的后端服务器组的名称。
server_group-best-0829
服务器组类型
指定后端服务器组的类型。
混合类型
后端协议
根据步骤二:创建内网连接中的内网连接决定:
例如:内网连接是https://1xx.xxx.xx.xxx:443/v2/infer/xxxx,则选择HTTPS
HTTPS
- 单击右下角的“下一步:添加后端服务器”,本案例在此页面可不做任何操作。
- 单击“下一步:确认配置”,确认配置无误后,单击“提交”。
步骤七:使用WAF对APIG进行安全防护
- 登录Web应用防火墙控制台,在页面右上角,单击“购买WAF实例”。
- 在“购买Web应用防火墙”界面,“WAF模式”选择“独享模式”。
- 在“购买Web应用防火墙”页面,按需配置参数。
本案例中,网络配置的“虚拟私有云”、“子网”和“安全组”要选择步骤一:创建VPC创建的VPC、子网和安全组,更多参数说明请见购买WAF。
- 确认参数配置无误后,在页面右下角单击“立即购买”。
- 在“确认配置”页面,确认订单详情无误后,仔细阅读并勾选“我已经阅读并同意《Web应用防火墙免责声明》”、“我同意WAF(Web应用防火墙)获取访问我的云资源权限”,单击“去支付”。
- 在WAF应用防火墙控制台左侧导航栏中,选择“网站设置”,进入“网站设置”页面。
- 在网站列表左上角,单击“添加防护网站”,选择“独享模式接入”,单击“开始配置”。
- 在添加防护网站对话框中,本案例中需要配置的参数详情请参见表11,其余参数请按需配置参数,更多参数说明请见添加防护网站。
表11 添加防护网站 参数
说明
配置值
防护对象
防护的域名或IP,域名支持单域名和泛域名
填写准备好的域名即可。
www.xxxx.com
服务器配置
端口、协议根据内网连接地址填写:
HTTP填80。
HTTPS填443。
VPC为步骤一:创建VPC创建的VPC。
内网IP地址:apig的IP地址。跳转到APIG页面,单击之前创建的APIG,进入到详细页面,找到“虚拟私有云访问地址”,如图7所示。
HTTPS
HTTPS
vpc-xxxx
443
192.xxx.xxx.xxx(APIG的内网地址)
已使用七层代理
七层代理:使用了DDoS高防(七层代理)、CDN、云加速等Web代理产品。注:设置七层代理后,WAF将从Header头中的相关字段获取用户真实访问IP。
否
- 单击“确定”后返回到列表页面。单击上一步骤“防护对象”参数添加的域名,进入到详细配置页面。
- 验证WAF是否正常,详情请见验证WAF独享引擎实例转发正常。
步骤八:公网访问在线服务
浏览器或者PostMan工具访问在线服务,如果API接口配置了安全认证,请求时需要加上相应的安全认证。本案例以无认证为例。
|
地址 |
说明 |
|---|---|
|
www.地址.com |
步骤七:使用WAF对APIG进行安全防护中添加的防护域名。 |
|
/v2/infer/xxx-xxxx-xxxxxxx |
步骤四:通过APIG创建API中创建的API接口。 |
