杀鸡焉用牛刀 发表于 2024-10-24 04:12:42

单服务器基于 Nginx 负载均衡 + Docker Compose 提高并发量


[*] 配景信息

[*] 开发需求
[*] 单服务器的多服务管理
多服务器的集群管理可参考博主 docker swarm 的技能分享《基于 docker swarm 和 NVIDIA MIG 摆设并行 AI 推理服务》
[*] 根据服务请求量和服务器规模的匹配程度,多服务器集群的性能对于如今来说过剩,故有了本研究的分享。

[*] 焦点概念
[*]docker compose 运行时,默认会创建独立于主机网络的桥接网络(bridge network),用于多个容器间的通信,同时提供与未毗连到该桥接网络的容器的隔离。因此其非常适合接入如 Nginx 给 docker 的网络赋能,如本文将要示例的单服务器的多个 AI 推理服务的负载均衡和基于 compose 的服务伸缩。
[*]docker compose 的开发宗旨之一就是面向生产的单主机摆设,比如程序服务或计算资源的隔离性和拓展性,停机规复后的服务自动重启等功能。
[*]在 docker compose 中,服务(Service)可以理解为容器的功能和相关计算机资源的聚集。

[*] Docker 版本
[*]Docker Compose version v2.24.2
[*]Docker version 25.0.1, build 29cf629

[*] 文档信息

作者:penguido
初稿完稿日期:2024.10.09

[*] 具体实现

[*] 示例的文件结构

本文重点用到 nginx/nginx.conf 和 compose_nginx.yaml 两个配置文件。
https://i-blog.csdnimg.cn/direct/807ca9cecda848bd974bceab45bfed4a.jpeg#pic_center
[*] 底子应用
[*] 准备后端服务的镜像
由于不是本文的重点,故省略。后文以制作好的AI服务的镜像为例,其服务端口是 8000
[*] Nginx 镜像选型
由于本文重点必要其负载均衡的功能,故选用 nginx:stable-alpine 镜像
[*] 准备 docker compose 的配置文件 compose_nginx.yaml
本 compose 配置文件和本文重点相关的说明如下,详情请拜见官网 https://docs.docker.com/reference/compose-file/services/

[*] 配置了两个服务(services),分别叫 api 和 nginx
[*] api 服务即本例通过 docker compose 用 Dockerfile 制作的AI推理服务镜像。
在配置文件中为其运行的容器配置了相关的 GPU 资源和监控机制,如停机规复的自启动和文件变动的热重启。
另外该服务的单位测试代码通过绑定挂载(bind mounts)的方式实现和正式服务的分隔管理。
页: [1]
查看完整版本: 单服务器基于 Nginx 负载均衡 + Docker Compose 提高并发量