这一部分主要介绍远程计算服务的架构、部署与运维。

6.1. Client-Server 架构

Client-Server 架构方案主要由 Client(客户端)和 Compute Server(计算服务器)组成。我们提供了许多不同的 Client 配置选项,例如,在最基本的配置中,单个计算服务器可以接受并执行来自多个客户端的作业任务。 如图所示:

../_images/c_s_demo.jpg

在远程计算服务中,用户可以通过调用求解器的 API(接口)来编写自己的优化程序,并将作业向计算服务器进行提交与结果获取,而不必考虑为满足程序运行配备本地机器。 此外,由于客户端 SDK 具备完整的求解功能,用户也可以选择本地进行求解运算。

当计算服务器中接收的作业请求较多时,​被提交的作业任务会在任务池中排队,而后进入运算状态(我们的系统会自动优化任务的分配)。

客户端进行作业提交的方式为 非交互式,即客户端与服务器的连接将在作业任务提交后断开,待到向服务器查询作业的状态与获取计算结果时再产生连接。 在非交互式架构中存在一个集群管理器,它会负责存储需要求解的优化问题,向服务器集群提交任务,并在任务完成时存储作业的结果(包括优化问题的状态、日志、问题的解以及遇到的所有错误等)。

6.2. 部署安装

使用远程计算服务需要同时确保服务端和客户端的正确部署。服务的维护人员,需要关注 部署计算服务。作为服务的使用者,用户只需要关注 客户端 SDK 下载与安装

6.2.1. 客户端 SDK 下载与安装

用户可以根据系统(Windows/Linux/OSX)选择对应版本 Client SDK进行下载安装,若您需要的 SDK 未上线,请通过 联系我们 中的联系方式向工作人员获取。

首先,在获得 Client SDK 文件包后,需要按照 单机版 MindOpt 安装 中的方式进行本地安装。如果您不需要使用单机(本地)求解功能,则无需申请单机版许可证(license),但需要获取计算服务器的 IP 和个人 Token,并在优化程序中进行填写。

6.2.2. 部署计算服务

计算服务(Compute Server)可以安装在任意一台联网的机器上。 计算服务是通过 Docker 部署的方式,为此,需要先准备 Docker 环境、Server 镜像文件和 Server 端授权许可证(license)。

Note

客户端进行本地求解的许可证与服务器中 Server 端许可证不同,不能混用。

  • 安装 Docker 的方法可在 阿里云开发者社区 中进行搜索,如 示例 中提供的方法。

  • 获取并安装 Server 镜像文件,若您需要的 Server 镜像未上线,请通过 联系我们 中的联系方式找工作人员获取。

  • Server 的使用需要授权许可证,请通过 联系我们 中的联系方式找工作人员获取限制天数的免费试用版或商用正式版。

接下来,请按照如下步骤部署计算服务。

步骤1: 导入 Server 镜像:

docker load -i mindopt-compute-server.tar.gz

步骤2:启动容器,开启服务。以下是个示例,请根据需求修改容器名称、服务数据映射地址、镜像ID:

docker run -d --name mindopt -s -p 80:7001 -v /Users/homename/compute-server-data:/data mindopt-compute-server:20201207

步骤3:将许可证放置在步骤2关联的目录下:

cp mindopt.lic /Users/homename/compute-server-data/mindopt.lic

6.2.3. 管控 Web 验证

计算服务部署完毕后,您还可通过打开 MindOpt 网页来查看服务是否已启动或许可证是否可行。 在浏览器中输入地址:

本机安装地址:127.0.0.1
远端服务器安装地址:http://xx.xx.xx.xx:7001/

若正确安装,将显示以下页面。

../_images/web-login.jpg

输入账号密码:

默认账号:admin
默认密码:admin

登录后将显示概览欢迎页面:

../_images/web-portal.jpg

6.3. 运维

6.3.1. Compute Server 重启

您可以通过以下操作来重启或停止容器服务。

停止容器服务:

docker stop mindopt-s

重启容器服务:

docker start mindopt-s

6.3.2. 磁盘数据清理

我们在计算服务器上默认存了提交的问题、结果和日志数据,请根据数据积累情况定期进行清理。磁盘的使用情况可以在 web 页面的概览页看到。

以本机部署计算服务器为例,清理指令为:

http://127.0.0.1/api/task/clearTask?key=job_id

其中 job_id 处需要填写想要清理的作业的 ID。