使用Nginx
本文档展示如何启动多个vLLM服务容器,并使用Nginx作为服务器之间的负载均衡器。
目录:
构建Nginx容器¶
本指南假设您刚刚克隆了vLLM项目,并且当前位于vllm根目录下。
创建一个名为Dockerfile.nginx
的文件:
FROM nginx:latest
RUN rm /etc/nginx/conf.d/default.conf
EXPOSE 80
CMD ["nginx", "-g", "daemon off;"]
构建容器:
创建简单的Nginx配置文件¶
创建一个名为nginx_conf/nginx.conf
的文件。注意您可以添加任意数量的服务器。以下示例中我们将从两个开始。如需添加更多,请在upstream backend
中添加另一个server vllmN:8000 max_fails=3 fail_timeout=10000s;
条目。
upstream backend {
least_conn;
server vllm0:8000 max_fails=3 fail_timeout=10000s;
server vllm1:8000 max_fails=3 fail_timeout=10000s;
}
server {
listen 80;
location / {
proxy_pass http://backend;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
构建vLLM容器¶
如果您位于代理服务器后方,可以将代理设置传递给docker构建命令,如下所示:
cd $vllm_root
docker build \
-f docker/Dockerfile . \
--tag vllm \
--build-arg http_proxy=$http_proxy \
--build-arg https_proxy=$https_proxy
创建Docker网络¶
启动vLLM容器¶
注意事项:
- 如果您将HuggingFace模型缓存到其他位置,请更新下方的
hf_cache_dir
参数。 - 如果您没有现成的HuggingFace缓存,您需要先启动
vllm0
并等待模型下载完成且服务器准备就绪。这将确保vllm1
能够利用您刚刚下载的模型,而无需再次下载。 - 以下示例假设使用GPU后端。如果使用CPU后端,请移除
--gpus device=ID
,并在docker run命令中添加环境变量VLLM_CPU_KVCACHE_SPACE
和VLLM_CPU_OMP_THREADS_BIND
。 - 如果不希望使用
Llama-2-7b-chat-hf
,请调整要在vLLM服务器中使用的模型名称。
mkdir -p ~/.cache/huggingface/hub/
hf_cache_dir=~/.cache/huggingface/
docker run \
-itd \
--ipc host \
--network vllm_nginx \
--gpus device=0 \
--shm-size=10.24gb \
-v $hf_cache_dir:/root/.cache/huggingface/ \
-p 8081:8000 \
--name vllm0 vllm \
--model meta-llama/Llama-2-7b-chat-hf
docker run \
-itd \
--ipc host \
--network vllm_nginx \
--gpus device=1 \
--shm-size=10.24gb \
-v $hf_cache_dir:/root/.cache/huggingface/ \
-p 8082:8000 \
--name vllm1 vllm \
--model meta-llama/Llama-2-7b-chat-hf
注意
如果您位于代理服务器后方,可以通过-e http_proxy=$http_proxy -e https_proxy=$https_proxy
将代理设置传递给docker run命令。
启动Nginx¶
docker run \
-itd \
-p 8000:80 \
--network vllm_nginx \
-v ./nginx_conf/:/etc/nginx/conf.d/ \
--name nginx-lb nginx-lb:latest
验证vLLM服务器已就绪¶
两个输出结果应如下所示: