近期的一個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/。