这个Docker / NGINX / Node设置实际上是否按照预期进行了负载平衡?

我正在使用Docker / Node / Nginx设置一个Web服务器。 我一直在玩Docker-compose中的设置,并提出了两个工作解决scheme – 但在负载平衡方面,其中一个可能太好了,无法成立(因为它似乎允许我通过没有创build额外的图像/容器)。 我正在寻找validation,如果我所看到的实际上是合法的,多个图像等不是负载平衡的要求。

解决scheme1(无附加图像):

泊坞窗,compose.yml

version: '3' volumes: node_deps: services: nginx: build: ./nginx image: nginx_i container_name: nginx_c ports: - '80:80' - '443:443' links: - node restart: always node: build: ./node image: node_i container_name: node_c command: "npm start" ports: - '5000:5000' - '5001:5001' - '5500:5000' - '5501:5001' volumes: - ./node:/src - node_deps:/src/node_modules 

nginx.conf

 http { ... upstream shopster-node { server node:5000 weight=10 max_fails=3 fail_timeout=30s; server node:5500 weight=10 max_fails=3 fail_timeout=30s; keepalive 64; } server { ... } } 

解决scheme2(有额外的图像):

 version: '3' volumes: node_deps: services: nginx: build: ./nginx image: nginx_i container_name: nginx_c ports: - '80:80' - '443:443' links: - node_one - node_two restart: always node_one: build: ./node image: node_one_i container_name: node_one_c command: "npm start" ports: - '5000:5000' - '5001:5001' volumes: - ./node:/src - node_deps:/src/node_modules node_two: build: ./node image: node_two_i container_name: node_two_c command: "npm start" ports: - '5500:5000' - '5501:5001' volumes: - ./node:/src - node_deps:/src/node_modules 

nginx.conf

 http { ... upstream shopster-node { server node_one:5000 weight=10 max_fails=3 fail_timeout=30s; server node_two:5500 weight=10 max_fails=3 fail_timeout=30s; keepalive 64; } server { ... } } 

两种scheme都可以在本地主机和指定端口上完美加载应用程序。 我确信场景2是正确的负载均衡,因为它模仿了传统的多服务器场景。

有没有什么办法可以validation场景1实际上是否按照预期进行负载平衡? 这将是我的首选方法,我只需要知道我可以信任它。

在场景1上运行docker-compose up -d 。然后使用docker-compose scale来添加额外的节点容器。

docker-compose scale node=5

除了现有的容器之外,这将增加4个附加节点容器。 如果你然后运行:

docker-compose scale node=2

它将删除3个节点容器,留下2个。

是的,使用图像jwilder/nginx-proxy ,您可以添加许多工作人员没有额外的configuration。

请参阅文档: https : //hub.docker.com/r/jwilder/nginx-proxy/

configuration非常简单,您可以使用docker-compose scale [name_service] = [num]

configuration的方法是

 version: '3' services: nginx-proxy: image: jwilder/nginx-proxy container_name: nginx-proxy ports: - "80:80" volumes: - /var/run/docker.sock:/tmp/docker.sock:ro node: build: ./node image: node_i command: "npm start" ports: - '5000' volumes: - ./node:/src - node_deps:/src/node_modules environment: - VIRTUAL_HOST=whoami.local 

执行容器是

 $ docker-compose up $ docker-compose scale node=2 $ curl -H "Host: whoami.local" localhost