
# ModelArts推理服务访问公网方案
本章节提供了推理服务访问公网的方法。
#### 应用场景
推理服务访问公网地址的场景，如：
- 输入图片，先进行公网OCR服务调用，然后进行NLP处理；
- 进行公网文件下载，然后进行分析；
- 分析结果回调给公网服务终端。
 
#### 方案设计
从推理服务的算法实例内部，访问公网服务地址的方案。如下图所示：
图1推理服务访问公网   
![](https://support.huaweicloud.com/bestpractice-modelarts/figure/zh-cn_image_0000001475058529.png "点击放大")
#### 步骤一：ModelArts专属资源池打通VPC
1. 创建好VPC和子网，具体步骤请参考[创建虚拟私有云和子网](https://support.huaweicloud.com/usermanual-vpc/zh-cn_topic_0013935842.html)。
2. 创建ModelArts专属资源池网络。
   1. 登录[ModelArts管理控制台](https://console.huaweicloud.com/modelarts/)，在左侧导航栏中选择"资源管理 \> 网络管理"。
   
   2. 单击"创建网络"，弹出"创建网络"页面。
   
   3. 在"创建网络"弹窗中填写网络信息。
   
   4. 确认无误后，单击"确定"。
    
3. ModelArts专属资源池网络打通VPC。
   1. 在控制台左侧导航栏中选择"资源管理 \> 网络管理"。
   
   2. 选择上一步骤创建的网络，单击操作列的"打通VPC"。
      图2打通VPC   
      ![](https://support.huaweicloud.com/bestpractice-modelarts/figure/zh-cn_image_0000002111775066.png) 
   
   3. 在打通VPC弹框中，打开"打通VPC"开关，在下拉框中选择提前创建好的VPC和子网。
      ![](https://support.huaweicloud.com/bestpractice-modelarts/public_sys-resources/note_3.0-zh-cn.png)
      需要打通的对端网络不能和当前网段重叠。
      
    
4. 创建ModelArts专属资源池。
   1. 在控制台左侧导航栏中选择"资源管理 \> 专属资源池"。
   
   2. 单击"购买专属资源池"，进入购买界面填写参数。 "作业类型"包括推理服务。"网络"选择上文中已打通VPC的网络。
      图3作业类型   
      ![](https://support.huaweicloud.com/bestpractice-modelarts/figure/zh-cn_image_0000002162552161.png "点击放大")
      ![](https://support.huaweicloud.com/bestpractice-modelarts/figure/zh-cn_image_0000002127390846.png "点击放大")
      
   
   3. 单击"立即购买"确认规格。产品规格和协议许可确认无误后，单击"提交"，即可创建专属资源池。
    
 
 #### 步骤二：使用Docker安装和配置正向代理
1. 购买弹性云服务器ECS，详情请见[购买ECS](https://support.huaweicloud.com/usermanual-ecs/ecs_03_7002.html)。镜像可选择Ubuntu最新版本。虚拟私有云选择提前创建好的VPC。
2. 申请弹性公网IP EIP，详情请见[申请弹性公网IP](https://support.huaweicloud.com/usermanual-eip/eip_0008.html)。
3. 将弹性公网IP绑定到ECS，详情请见[将弹性公网IP绑定至实例](https://support.huaweicloud.com/usermanual-eip/eip_0009.html)。
4. 登录ECS，执行如下命令进行Docker安装。如已安装，请直接进入下一步。
   ```
   curl -sSL https://get.daocloud.io/docker | sh
   ```
   
5. 执行如下命令安装Squid容器。
   ```
   docker pull ubuntu/squid
   ```
   
6. 创建主机目录。
   ```
   mkdir –p /etc/squid/
   ```
   
7. 打开并配置whitelist.conf文件。
   ```
   vim whitelist.conf
   ```
   配置内容为安全控制可访问的地址，支持配置通配符，例如：
   ```
   .apig.cn-east-3.huaweicloudapis.com
   ```
   ![](https://support.huaweicloud.com/bestpractice-modelarts/public_sys-resources/note_3.0-zh-cn.png)
   如果地址访问不通，请在浏览器配置访问域名。
   
8. 打开并配置squid.conf文件。
   ```
   vim squid.conf
   ```
   配置内容如下。
   ```
   # An ACL named 'whitelist'
   acl whitelist dstdomain '/etc/squid/whitelist.conf'
    
   # Allow whitelisted URLs through
   http_access allow whitelist
    
   # Block the rest
   http_access deny all
    
   # Default port
   http_port 3128
   ```
   
9. 设置主机目录和配置文件权限如下。
   ```
   chmod 640 -R /etc/squid
   ```
   
10. 执行如下命令启动Squid实例。
    ```
    docker run -d --name squid -e TZ=UTC -v /etc/squid:/etc/squid -p 3128:3128 ubuntu/squid:latest
    ```
    
11. 进入docker刷新Squid。
    ```
    docker exec –it squid bash
    root@{container_id}:/# squid -k reconfigure
    ```
    
#### 步骤三：设置DNS代理和调用公网地址
1. 在自定义模型镜像时设置代理指向代理服务器私有IP和端口，如下所示。
   ```
   proxies = {
     "http": "http://{proxy_server_private_ip}:3128",
     "https": "http://{proxy_server_private_ip}:3128"
   }
   ```
   代理服务器IP即[步骤二：使用Docker安装和配置正向代理]中创建的ECS私有IP，获取方式请见[查看弹性云服务器详细信息](https://support.huaweicloud.com/usermanual-ecs/ecs_03_0122.html)。
   图4ECS私有IP   
   ![](https://support.huaweicloud.com/bestpractice-modelarts/figure/zh-cn_image_0000002111934830.png "点击放大") 
2. 调用公网地址时，使用服务URL进行业务请求，如：
   ```
   https://e8a048ce25136addbbac23ce6132a.apig.cn-east-3.huaweicloudapis.com
   ```
   
 
