扩充实例步骤
更新时间:2022-03-22
下文将以通用文字识别GPU版为例,详细展开说明应用服务实例扩容步骤。
修改容器启动脚本
1、首先进入部署包目录,检索模型模块命名
cd original/package/Install
# 根据模型名称检索模块名
python install.py se
如【通用文字识别GPU】的模块名为ocr-general-gpu
模块名: ocr-general-gpu, 中文名:通用文字识别GPU, 版本号:V2.2, 内置版本 2, 依赖模块 []
进入work_dir目录下算子应用目录
cd /home/baidu/work/ocr-general-gpu/start/
如果要额外扩充9个实例,执行如下shell命令复制start-1.sh脚本
注:实例的数量不要超过license中限制的实例数
for i in $(seq 2 10); do cp start-1.sh start-$i.sh; done
2、依次修改克隆的start-*.sh脚本,修改docker run的启动参数,包括
1) 映射到宿主机的端口号
2) docker容器的Name
3) 为每一个docker容器指定一块显卡 (CPU模板不需要配置)
请提前规划每个应用容器绑定的显卡编号,如下
启动脚本名字 | 显卡编号 |
---|---|
start-1.sh | 0 |
start-2.sh | 1 |
…… | …… |
start-10.sh | 9 |
3、依次执行stat-*.sh脚本启动算子应用容器
openresty 负载均衡配置
1、前往work_dir下的openresty目录,可以看到以模型模块名称命名的.conf配置文件
cd /home/baidu/work/openresty/conf/upstream && ll
返回如下
-rw-r--r-- 1 root root 81 10月 13 13:54 ocr-general-gpu.conf
-rw-r--r-- 1 root root 24 10月 12 16:27 upstream-template
2、修改ocr-general-gpu.conf文件配置参数
文件内容如下,其中ip和port 为本机IP和算子容器映射在宿主机的端口号,假如通用文字识别GPU版本一共启动了10个实例
upstream ocr-general-gpu {
server ip:port1 max_fails=3 fail_timeout=30;
server ip:port2 max_fails=3 fail_timeout=30;
server ip:port3 max_fails=3 fail_timeout=30;
server ip:port4 max_fails=3 fail_timeout=30;
server ip:port5 max_fails=3 fail_timeout=30;
server ip:port6 max_fails=3 fail_timeout=30;
server ip:port7 max_fails=3 fail_timeout=30;
server ip:port8 max_fails=3 fail_timeout=30;
server ip:port9 max_fails=3 fail_timeout=30;
server ip:port10 max_fails=3 fail_timeout=30;
}
3、修改/home/baidu/work/openresty/conf/vhost/vhost.conf
内容如下:
server {
listen 8666; #负载均衡(LB)的端口号,可自定义修改。流量统一发送给该端口号,然后通过openresty将流量转发给后端算子应用端口号
server_name 127.0.0.1; #本机IP地址,默认值
port_in_redirect off;
proxy_http_version 1.1;
proxy_set_header Connection "";
location / {
set $group_name '模型名称'; # 修改模型名称为模型模块名,如ocr-general-gpu,与第2步定义的upstream名一致
proxy_pass http://模型名称/; # 修改模型名称为模型模块名,如ocr-general-gpu,与第2步定义的upstream名一致
proxy_read_timeout 10;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-for $remote_addr;
}
}
4、重启使其生效
# 强制删除现有的nginx-1 容器
docker rm -f nginx-1
# 启动nginx容器
cd /home/baidu/work/openresty && bash start/start-1.sh
更新license
如果您的实例数超过了旧license中实例数限制,需要重新申请license后对license做更新操作。
# 找到新申请的license升级包的路径,建议部署包以 baidu_ocr_日期命名
cd original/package/Install
# lu, licenseupdate: 更新license文件,适用于授权延期、实例数扩容、增加产品授权
python install.py lu
验证
1、首先验证负载均衡容器状态可用
[root@instance-wch0lkwp Install]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
c1643ee21c44 registry.baidu.com/aipe/openresty:1.11.2.3-trusty "/usr/local/openre..." 40 seconds ago Up 3 seconds nginx-1
2、测试发往LB端口的流量可以被正常处理。具体可参考标准模型部署文档中的测试代码用例。