近期的一个AI项目到了web服务部署阶段,由于项目需要对GPU进行实例分配,这里先从服务入口出发对web服务做个简单的负载均衡配置。
例如我们启动了两个AI Web服务:
服务实例1:127.0.0.1:8090
服务实例2:127.0.0.1:8091
采用nginx对该两个实例进行简单的负载均衡,步骤如下:
1、安装nginx
sudo apt install nginx
2、查看nginx版本
nginx -V
3、进行业务的nginx配置
#进入nginx配置文件目录
cd /etc/nginx/conf.d
#创建AI业务配置文件
sudo touch ai.conf
#编辑ai.conf
vi ai.conf
#键入以下配置信息
upstream ai{
#AI服务实例1
server 127.0.0.1:8090;
#AI服务实例2
server 127.0.0.1:8091;
}
server {
listen 80;
server_name 127.0.0.8;
location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forward-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_set_header X-Nginx-Proxy true;
proxy_pass http://ai;
proxy_redirect off;
}
}
#最后保存并退出
4、启动nginx服务
# 启动
sudo systemctl start nginx
# 停止
sudo systemctl stop nginx
# 重启
sudo systemctl restart nginx
启动后在浏览器访问:127.0.0.1 出现以下页面说明nginx启动成功
5、启动两个AI服务实例
6、开始测试
通过日志可以看出服务实例1:8090进行了请求处理。
再次请求下:
这次是服务实例2:8091进行了请求处理,再请求下:
这次回到了服务实例1:8090处理请求,通过测试可以发现nginx转发是ABABABAB规则,因为我们没有设置weight权重,weight权重默认为1,如果需要修改转发规则可以详细了解下nginx的配置http://nginx.org/en/docs/。